1 /* splock.S: Spinlock primitives too large to inline.
3 * Copyright (C) 2004 David S. Miller (davem@redhat.com)
9 .globl _raw_spin_lock_flags
10 _raw_spin_lock_flags: /* %o0 = lock_ptr, %o1 = irq_flags */
13 membar #StoreLoad | #StoreStore
17 2: rdpr %pil, %g2 ! Save PIL
18 wrpr %o1, %pil ! Set previous PIL
19 3: ldub [%o0], %g7 ! Spin on lock set
22 ba,pt %xcc, 1b ! Retry lock acquire
23 wrpr %g2, %pil ! Restore PIL