Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/nathanw_sa]: src/lib/libpthread/arch/alpha Update to work with Klaus's m...
details: https://anonhg.NetBSD.org/src/rev/e7ec1d1771ed
branches: nathanw_sa
changeset: 505476:e7ec1d1771ed
user: nathanw <nathanw%NetBSD.org@localhost>
date: Mon Dec 17 22:07:49 2001 +0000
description:
Update to work with Klaus's mcontext code.
Save and restore FP registers.
diffstat:
lib/libpthread/arch/alpha/_context_u.S | 94 ++++++++++++++++++++-------------
1 files changed, 56 insertions(+), 38 deletions(-)
diffs (110 lines):
diff -r 94d880e4ca69 -r e7ec1d1771ed lib/libpthread/arch/alpha/_context_u.S
--- a/lib/libpthread/arch/alpha/_context_u.S Mon Dec 17 22:07:29 2001 +0000
+++ b/lib/libpthread/arch/alpha/_context_u.S Mon Dec 17 22:07:49 2001 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: _context_u.S,v 1.1.2.1 2001/09/25 19:49:05 nathanw Exp $ */
+/* $NetBSD: _context_u.S,v 1.1.2.2 2001/12/17 22:07:49 nathanw Exp $ */
/*-
* Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -43,45 +43,63 @@
* Only save the callee-save regs, and set a special flag in uc_flags
* that says so.
*/
-#define GETC(reg) ; \
- stq s0, (UC_REGS + R_S0 * 8)(reg) ; \
- stq s1, (UC_REGS + R_S1 * 8)(reg) ; \
- stq s2, (UC_REGS + R_S2 * 8)(reg) ; \
- stq s3, (UC_REGS + R_S3 * 8)(reg) ; \
- stq s4, (UC_REGS + R_S4 * 8)(reg) ; \
- stq s5, (UC_REGS + R_S5 * 8)(reg) ; \
- stq s6, (UC_REGS + R_S6 * 8)(reg) ; \
- stq sp, (UC_REGS + R_SP * 8)(reg) ; \
- stq ra, (UC_REGS + R_RA * 8)(reg) ; \
- stq ra, (UC_PC)(reg) ; \
- ldiq t0, 1 ; \
- sll t0, _UC_USER_BIT, t0 ; \
- bis t0, _UC_CPU, t0 ; \
+#define GETC(reg) ; \
+ stq s0, (UC_GREGS + _REG_S0 * 8)(reg) ; \
+ stq s1, (UC_GREGS + _REG_S1 * 8)(reg) ; \
+ stq s2, (UC_GREGS + _REG_S2 * 8)(reg) ; \
+ stq s3, (UC_GREGS + _REG_S3 * 8)(reg) ; \
+ stq s4, (UC_GREGS + _REG_S4 * 8)(reg) ; \
+ stq s5, (UC_GREGS + _REG_S5 * 8)(reg) ; \
+ stq s6, (UC_GREGS + _REG_S6 * 8)(reg) ; \
+ stq sp, (UC_GREGS + _REG_SP * 8)(reg) ; \
+ stq ra, (UC_GREGS + _REG_RA * 8)(reg) ; \
+ stq ra, (UC_GREGS + _REG_PC * 8)(reg) ; \
+ stt $f2, (UC_FPREGS + 2 * 8)(reg) ; \
+ stt $f3, (UC_FPREGS + 3 * 8)(reg) ; \
+ stt $f4, (UC_FPREGS + 4 * 8)(reg) ; \
+ stt $f5, (UC_FPREGS + 5 * 8)(reg) ; \
+ stt $f6, (UC_FPREGS + 6 * 8)(reg) ; \
+ stt $f7, (UC_FPREGS + 7 * 8)(reg) ; \
+ stt $f8, (UC_FPREGS + 8 * 8)(reg) ; \
+ stt $f9, (UC_FPREGS + 9 * 8)(reg) ; \
+ ldiq t0, 8 ; \
+ stq t0, (UC_GREGS + _REG_PS * 8)(reg) ; \
+ ldiq t0, 1 ; \
+ sll t0, _UC_USER_BIT, t0 ; \
+ bis t0, (_UC_CPU|_UC_FPU), t0 ; \
stl t0, (UC_FLAGS)(reg)
-#define SETC(reg) ; \
- ldl t0, (UC_FLAGS)(reg) ; \
- ldiq t1, 1 ; \
- sll t1, _UC_USER_BIT, t1 ; \
- and t0, t1, t0 ; \
- beq t0, 1f ; \
- ; \
- ldq s0, (UC_REGS + R_S0 * 8)(reg) ; \
- ldq s1, (UC_REGS + R_S1 * 8)(reg) ; \
- ldq s2, (UC_REGS + R_S2 * 8)(reg) ; \
- ldq s3, (UC_REGS + R_S3 * 8)(reg) ; \
- ldq s4, (UC_REGS + R_S4 * 8)(reg) ; \
- ldq s5, (UC_REGS + R_S5 * 8)(reg) ; \
- ldq s6, (UC_REGS + R_S6 * 8)(reg) ; \
- ldq ra, (UC_REGS + R_RA * 8)(reg) ; \
- ldq t12, (UC_PC)(reg) ; \
- ldq sp, (UC_REGS + R_SP * 8)(reg) ; \
- ; \
- /* part procedure call, part RET */ ; \
- jmp zero, (t12) ; \
- /* NOTREACHED */ ; \
-1: mov reg, a0 ; \
- CALL(setcontext) ; \
+#define SETC(reg) ; \
+ ldl t0, (UC_FLAGS)(reg) ; \
+ ldiq t1, 1 ; \
+ sll t1, _UC_USER_BIT, t1 ; \
+ and t0, t1, t0 ; \
+ beq t0, 1f ; \
+ ; \
+ ldq s0, (UC_GREGS + _REG_S0 * 8)(reg) ; \
+ ldq s1, (UC_GREGS + _REG_S1 * 8)(reg) ; \
+ ldq s2, (UC_GREGS + _REG_S2 * 8)(reg) ; \
+ ldq s3, (UC_GREGS + _REG_S3 * 8)(reg) ; \
+ ldq s4, (UC_GREGS + _REG_S4 * 8)(reg) ; \
+ ldq s5, (UC_GREGS + _REG_S5 * 8)(reg) ; \
+ ldq s6, (UC_GREGS + _REG_S6 * 8)(reg) ; \
+ ldq ra, (UC_GREGS + _REG_RA * 8)(reg) ; \
+ ldq t12, (UC_GREGS + _REG_PC * 8)(reg) ; \
+ ldt $f2, (UC_FPREGS + 2 * 8)(reg) ; \
+ ldt $f3, (UC_FPREGS + 3 * 8)(reg) ; \
+ ldt $f4, (UC_FPREGS + 4 * 8)(reg) ; \
+ ldt $f5, (UC_FPREGS + 5 * 8)(reg) ; \
+ ldt $f6, (UC_FPREGS + 6 * 8)(reg) ; \
+ ldt $f7, (UC_FPREGS + 7 * 8)(reg) ; \
+ ldt $f8, (UC_FPREGS + 8 * 8)(reg) ; \
+ ldt $f9, (UC_FPREGS + 9 * 8)(reg) ; \
+ ldq sp, (UC_GREGS + _REG_SP * 8)(reg) ; \
+ ; \
+ /* part procedure call, part RET */ ; \
+ jmp zero, (t12) ; \
+ /* NOTREACHED */ ; \
+1: mov reg, a0 ; \
+ CALL(setcontext) ; \
/* NOTREACHED */
LEAF(_getcontext_u,1)
Home |
Main Index |
Thread Index |
Old Index