X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fsparc64%2Flib%2Fsplock.S;h=e466ed225e4653da8cdcd3d46b476d304b6ab899;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=d17a3badda72d935e76f557c36ff2a6a41b87290;hpb=db216c3d5e4c040e557a50f8f5d35d5c415e8c1c;p=linux-2.6.git diff --git a/arch/sparc64/lib/splock.S b/arch/sparc64/lib/splock.S index d17a3badd..e466ed225 100644 --- a/arch/sparc64/lib/splock.S +++ b/arch/sparc64/lib/splock.S @@ -6,6 +6,18 @@ .text .align 64 + .globl _raw_spin_lock +_raw_spin_lock: /* %o0 = lock_ptr */ +1: ldstub [%o0], %g7 + brnz,pn %g7, 2f + membar #StoreLoad | #StoreStore + retl + nop +2: ldub [%o0], %g7 + brnz,pt %g7, 2b + membar #LoadLoad + ba,a,pt %xcc, 1b + .globl _raw_spin_lock_flags _raw_spin_lock_flags: /* %o0 = lock_ptr, %o1 = irq_flags */ 1: ldstub [%o0], %g7