patch-2.1.115 linux/arch/sparc/lib/locks.S
Next file: linux/arch/sparc/mm/Makefile
Previous file: linux/arch/sparc/lib/Makefile
Back to the patch index
Back to the overall index
- Lines: 92
- Date:
Tue Aug 4 16:03:35 1998
- Orig file:
v2.1.114/linux/arch/sparc/lib/locks.S
- Orig date:
Wed Apr 23 19:01:16 1997
diff -u --recursive --new-file v2.1.114/linux/arch/sparc/lib/locks.S linux/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:
@@ -30,74 +30,6 @@
ldub [%g1], %g2
ldstub [%g1], %g2
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
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov