summaryrefslogtreecommitdiffstats
path: root/arch/sparc/lib/locks.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc/lib/locks.S')
-rw-r--r--arch/sparc/lib/locks.S74
1 files changed, 3 insertions, 71 deletions
diff --git a/arch/sparc/lib/locks.S b/arch/sparc/lib/locks.S
index e91efdc09..8d634704f 100644
--- a/arch/sparc/lib/locks.S
+++ b/arch/sparc/lib/locks.S
@@ -1,4 +1,4 @@
-/* $Id: locks.S,v 1.12 1997/04/22 18:48:07 davem Exp $
+/* $Id: locks.S,v 1.13 1998/07/30 11:29:28 davem Exp $
* locks.S: SMP low-level lock primitives on Sparc.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
@@ -20,8 +20,8 @@
* itself in %g1, %g4 must be restored into %o7 when we return,
* and the caller wants us to return to him at three instructions
* previous to the call instruction which got us here. See how
- * this is used in asm/smp_lock.h and asm/spinlock.h if what I
- * just said confuses you to no end.
+ * this is used in asm/spinlock.h if what I just said confuses
+ * you to no end.
*/
.globl ___spinlock_waitfor
___spinlock_waitfor:
@@ -32,74 +32,6 @@ ___spinlock_waitfor:
jmpl %o7 - 12, %g0
mov %g4, %o7
-___lk_busy_spin:
- orcc %g2, 0, %g0
- bne,a ___lk_busy_spin
- ldub [%g1 + 0], %g2
- b 1f
- ldstub [%g1 + 0], %g2
-
- .globl ___lock_kernel
-___lock_kernel:
- addcc %g2, -1, %g2
- bcs,a 9f
- st %g2, [%g6 + AOFF_task_lock_depth]
- rd %psr, %g3
- or %g3, PSR_PIL, %g2
- wr %g2, 0x0, %psr
- nop; nop; nop
- ldstub [%g1 + 0], %g2
-1: orcc %g2, 0, %g0
- bne,a ___lk_busy_spin
- ldub [%g1 + 0], %g2
- stb %g5, [%g1 + 1]
- mov -1, %g2
- st %g2, [%g6 + AOFF_task_lock_depth]
- wr %g3, 0x0, %psr
- nop; nop; nop
-9: jmpl %o7 + 0x8, %g0
- mov %g4, %o7
-
- .globl ___lock_reacquire_kernel
-___lock_reacquire_kernel:
- rd %psr, %g3
- or %g3, PSR_PIL, %g7
- wr %g7, 0x0, %psr
- nop; nop; nop
- st %g2, [%g6 + AOFF_task_lock_depth]
- ldstub [%g1 + 0], %g2
-1: orcc %g2, 0, %g0
- be 3f
- ldub [%g1 + 0], %g2
-2: orcc %g2, 0, %g0
- bne,a 2b
- ldub [%g1 + 0], %g2
- b 1b
- ldstub [%g1 + 0], %g2
-3: stb %g5, [%g1 + 1]
- wr %g3, 0x0, %psr
- nop; nop; nop
- jmpl %o7 + 0x8, %g0
- mov %g4, %o7
-
- .globl ___unlock_kernel
-___unlock_kernel:
- addcc %g2, 1, %g2
- bne,a 1f
- st %g2, [%g6 + AOFF_task_lock_depth]
- rd %psr, %g3
- or %g3, PSR_PIL, %g2
- wr %g2, 0x0, %psr
- nop; nop; nop
- mov NO_PROC_ID, %g2
- stb %g2, [%g1 + 1]
- stb %g0, [%g1 + 0]
- st %g0, [%g6 + AOFF_task_lock_depth]
- wr %g3, 0x0, %psr
- nop; nop; nop;
-1: jmpl %o7 + 0x8, %g0
- mov %g4, %o7
-
/* Read/writer locks, as usual this is overly clever to make it
* as fast as possible.
*/