FTK change. Added assembly routines for calculating checksums on SPARC platforms.

git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@758 0109f412-320b-0410-ab79-c3e0c5ffbbe6
This commit is contained in:
ahodgkinson
2006-08-10 21:33:06 +00:00
parent 2e508596bc
commit 7c9bb608c9
3 changed files with 231 additions and 35 deletions

View File

@@ -1323,13 +1323,13 @@ void sparc_asm_code( void)
asm( ".type sparc_atomic_add_32, #function");
asm( "sparc_atomic_add_32:");
asm( " membar #LoadLoad | #LoadStore | #StoreStore | #StoreLoad");
asm( " ld [%o0], %l0");
asm( " add %l0, %o1, %l2");
asm( " cas [%o0], %l0, %l2");
asm( " cmp %l0, %l2");
asm( " ld [%o0], %o2");
asm( " add %o2, %o1, %o3");
asm( " cas [%o0], %o2, %o3");
asm( " cmp %o2, %o3");
asm( " bne sparc_atomic_add_32");
asm( " nop");
asm( " add %l2, %o1, %o0");
asm( " add %o3, %o1, %o0");
asm( " membar #LoadLoad | #LoadStore | #StoreStore | #StoreLoad");
asm( "retl");
asm( "nop");
@@ -1339,13 +1339,13 @@ void sparc_asm_code( void)
asm( ".type sparc_atomic_xchg_32, #function");
asm( "sparc_atomic_xchg_32:");
asm( " membar #LoadLoad | #LoadStore | #StoreStore | #StoreLoad");
asm( " ld [%o0], %l0");
asm( " mov %o1, %l1");
asm( " cas [%o0], %l0, %l1");
asm( " cmp %l0, %l1");
asm( " ld [%o0], %o2");
asm( " mov %o1, %o3");
asm( " cas [%o0], %o2, %o3");
asm( " cmp %o2, %o3");
asm( " bne sparc_atomic_xchg_32");
asm( " nop");
asm( " mov %l0, %o0");
asm( " mov %o2, %o0");
asm( " membar #LoadLoad | #LoadStore | #StoreStore | #StoreLoad");
asm( "retl");
asm( "nop");