summaryrefslogtreecommitdiff
path: root/lib/libc_r/arch/alpha/uthread_machdep_asm.S
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc_r/arch/alpha/uthread_machdep_asm.S')
-rw-r--r--lib/libc_r/arch/alpha/uthread_machdep_asm.S79
1 files changed, 0 insertions, 79 deletions
diff --git a/lib/libc_r/arch/alpha/uthread_machdep_asm.S b/lib/libc_r/arch/alpha/uthread_machdep_asm.S
deleted file mode 100644
index 054d8a52d22..00000000000
--- a/lib/libc_r/arch/alpha/uthread_machdep_asm.S
+++ /dev/null
@@ -1,79 +0,0 @@
-/* $OpenBSD: uthread_machdep_asm.S,v 1.4 2002/12/12 18:26:18 marc Exp $ */
-/* David Leonard, <d@csee.uq.edu.au>. Public domain. */
-
-#include <machine/asm.h>
-
-#define INTOFF(n) ((n)*8)
-#define FPOFF(n) (INTOFF(9) + (n)*8)
-#define ALIGN(x) (((x)+15)&~15)
-#define FRAMESIZE ALIGN(FPOFF(8))
-
- .set noreorder
- .globl _thread_machdep_switch
- .ent _thread_machdep_switch, 2
-_thread_machdep_switch:
- .frame sp, FRAMESIZE, ra
- ldgp gp, 0(pv)
- lda sp, -FRAMESIZE(sp)
-
- stq ra, INTOFF(0)(sp)
- stq s0, INTOFF(1)(sp)
- stq s1, INTOFF(2)(sp)
- stq s2, INTOFF(3)(sp)
- stq s3, INTOFF(4)(sp)
- stq s4, INTOFF(5)(sp)
- stq s5, INTOFF(6)(sp)
- stq s6, INTOFF(7)(sp)
- stq t12, INTOFF(8)(sp)
-
- stt fs0, FPOFF(0)(sp)
- stt fs1, FPOFF(1)(sp)
- stt fs2, FPOFF(2)(sp)
- stt fs3, FPOFF(3)(sp)
- stt fs4, FPOFF(4)(sp)
- stt fs5, FPOFF(5)(sp)
- stt fs6, FPOFF(6)(sp)
- stt fs7, FPOFF(7)(sp)
-
- stq sp, 0(a1)
- or a0, zero, pv
- ldq sp, 0(a0)
-
- ldt fs7, FPOFF(7)(sp)
- ldt fs6, FPOFF(6)(sp)
- ldt fs5, FPOFF(5)(sp)
- ldt fs4, FPOFF(4)(sp)
- ldt fs3, FPOFF(3)(sp)
- ldt fs2, FPOFF(2)(sp)
- ldt fs1, FPOFF(1)(sp)
- ldt fs0, FPOFF(0)(sp)
-
- ldq t12, INTOFF(8)(sp)
- ldq s6, INTOFF(7)(sp)
- ldq s5, INTOFF(6)(sp)
- ldq s4, INTOFF(5)(sp)
- ldq s3, INTOFF(4)(sp)
- ldq s2, INTOFF(3)(sp)
- ldq s1, INTOFF(2)(sp)
- ldq s0, INTOFF(1)(sp)
- ldq ra, INTOFF(0)(sp)
-
- lda sp,FRAMESIZE(sp)
- RET
-
- .end _thread_machdep_switch
-
-LEAF(_atomic_lock,1)
- LDGP(pv)
-
- /* NOTE: using ldl_l/stl_c instead of
- ldq_l and ldq_c as machine/spinlock.h
- defines _spinlock_lock_t as int */
-0: ldl_l v0, 0(a0) /* read existing lock value */
- mov 1, t0 /* locked value to store */
- stl_c t0, 0(a0) /* attempt to store, status in t0 */
- beq t0, 1f /* branch forward to optimise prediction */
- mb /* sync with other processors */
- RET /* return with v0==0 if lock obtained */
-1: br 0b /* loop to try again */
-END(_atomic_lock)