Use register prefixes and load/store pseudo-instructions.
This commit is contained in:
parent
403ce9dc0c
commit
52bfbfda86
@ -1,8 +1,11 @@
|
||||
/* $NetBSD: setjmp.S,v 1.1 1998/01/27 15:13:12 sakamoto Exp $ */
|
||||
/* $NetBSD: setjmp.S,v 1.2 2003/07/31 13:59:54 matt Exp $ */
|
||||
/* from: OpenBSD: setjmp.S,v 1.2 1996/12/28 06:22:18 rahnds Exp */
|
||||
/* kernel version of this file, does not have signal goop */
|
||||
/* int setjmp(jmp_buf env) */
|
||||
|
||||
#define _NOREGNAMES
|
||||
#include <machine/asm.h>
|
||||
|
||||
#define JMP_r1 0x04
|
||||
#define JMP_r14 0x08
|
||||
#define JMP_r15 0x0c
|
||||
@ -31,72 +34,72 @@
|
||||
|
||||
.globl setjmp
|
||||
setjmp:
|
||||
stw 31, JMP_r31(3)
|
||||
streg %r31, JMP_r31(%r3)
|
||||
/* r1, r14-r30 */
|
||||
stw 1, JMP_r1 (3)
|
||||
stw 14, JMP_r14(3)
|
||||
stw 15, JMP_r15(3)
|
||||
stw 16, JMP_r16(3)
|
||||
stw 17, JMP_r17(3)
|
||||
stw 18, JMP_r18(3)
|
||||
stw 19, JMP_r19(3)
|
||||
stw 20, JMP_r20(3)
|
||||
stw 21, JMP_r21(3)
|
||||
stw 22, JMP_r22(3)
|
||||
stw 23, JMP_r23(3)
|
||||
stw 24, JMP_r24(3)
|
||||
stw 25, JMP_r25(3)
|
||||
stw 26, JMP_r26(3)
|
||||
stw 27, JMP_r27(3)
|
||||
stw 28, JMP_r28(3)
|
||||
stw 29, JMP_r29(3)
|
||||
stw 30, JMP_r30(3)
|
||||
streg %r1, JMP_r1 (%r3)
|
||||
streg %r14, JMP_r14(%r3)
|
||||
streg %r15, JMP_r15(%r3)
|
||||
streg %r16, JMP_r16(%r3)
|
||||
streg %r17, JMP_r17(%r3)
|
||||
streg %r18, JMP_r18(%r3)
|
||||
streg %r19, JMP_r19(%r3)
|
||||
streg %r20, JMP_r20(%r3)
|
||||
streg %r21, JMP_r21(%r3)
|
||||
streg %r22, JMP_r22(%r3)
|
||||
streg %r23, JMP_r23(%r3)
|
||||
streg %r24, JMP_r24(%r3)
|
||||
streg %r25, JMP_r25(%r3)
|
||||
streg %r26, JMP_r26(%r3)
|
||||
streg %r27, JMP_r27(%r3)
|
||||
streg %r28, JMP_r28(%r3)
|
||||
streg %r29, JMP_r29(%r3)
|
||||
streg %r30, JMP_r30(%r3)
|
||||
/* cr, lr, ctr, xer */
|
||||
mfcr 0
|
||||
stw 0, JMP_cr(3)
|
||||
mflr 0
|
||||
stw 0, JMP_lr(3)
|
||||
mfctr 0
|
||||
stw 0, JMP_ctr(3)
|
||||
mfxer 0
|
||||
stw 0, JMP_xer(3)
|
||||
mfcr %r0
|
||||
streg %r0, JMP_cr(%r3)
|
||||
mflr %r0
|
||||
streg %r0, JMP_lr(%r3)
|
||||
mfctr %r0
|
||||
streg %r0, JMP_ctr(%r3)
|
||||
mfxer %r0
|
||||
streg %r0, JMP_xer(%r3)
|
||||
/* f14-f31, fpscr */
|
||||
li 3, 0
|
||||
li %r3, 0
|
||||
blr
|
||||
|
||||
|
||||
.extern sigsetmask
|
||||
.globl longjmp
|
||||
longjmp:
|
||||
lwz 31, JMP_r31(3)
|
||||
ldreg %r31, JMP_r31(%r3)
|
||||
/* r1, r14-r30 */
|
||||
lwz 1, JMP_r1 (3)
|
||||
lwz 14, JMP_r14(3)
|
||||
lwz 15, JMP_r15(3)
|
||||
lwz 16, JMP_r16(3)
|
||||
lwz 17, JMP_r17(3)
|
||||
lwz 18, JMP_r18(3)
|
||||
lwz 19, JMP_r19(3)
|
||||
lwz 20, JMP_r20(3)
|
||||
lwz 21, JMP_r21(3)
|
||||
lwz 22, JMP_r22(3)
|
||||
lwz 23, JMP_r23(3)
|
||||
lwz 24, JMP_r24(3)
|
||||
lwz 25, JMP_r25(3)
|
||||
lwz 26, JMP_r26(3)
|
||||
lwz 27, JMP_r27(3)
|
||||
lwz 28, JMP_r28(3)
|
||||
lwz 29, JMP_r29(3)
|
||||
lwz 30, JMP_r30(3)
|
||||
ldreg %r1, JMP_r1 (%r3)
|
||||
ldreg %r14, JMP_r14(%r3)
|
||||
ldreg %r15, JMP_r15(%r3)
|
||||
ldreg %r16, JMP_r16(%r3)
|
||||
ldreg %r17, JMP_r17(%r3)
|
||||
ldreg %r18, JMP_r18(%r3)
|
||||
ldreg %r19, JMP_r19(%r3)
|
||||
ldreg %r20, JMP_r20(%r3)
|
||||
ldreg %r21, JMP_r21(%r3)
|
||||
ldreg %r22, JMP_r22(%r3)
|
||||
ldreg %r23, JMP_r23(%r3)
|
||||
ldreg %r24, JMP_r24(%r3)
|
||||
ldreg %r25, JMP_r25(%r3)
|
||||
ldreg %r26, JMP_r26(%r3)
|
||||
ldreg %r27, JMP_r27(%r3)
|
||||
ldreg %r28, JMP_r28(%r3)
|
||||
ldreg %r29, JMP_r29(%r3)
|
||||
ldreg %r30, JMP_r30(%r3)
|
||||
/* cr, lr, ctr, xer */
|
||||
lwz 0, JMP_cr(3)
|
||||
mtcr 0
|
||||
lwz 0, JMP_lr(3)
|
||||
mtlr 0
|
||||
lwz 0, JMP_ctr(3)
|
||||
mtctr 0
|
||||
lwz 0, JMP_xer(3)
|
||||
mtxer 0
|
||||
ldreg %r0, JMP_cr(%r3)
|
||||
mtcr %r0
|
||||
ldreg %r0, JMP_lr(%r3)
|
||||
mtlr %r0
|
||||
ldreg %r0, JMP_ctr(%r3)
|
||||
mtctr %r0
|
||||
ldreg %r0, JMP_xer(%r3)
|
||||
mtxer %r0
|
||||
/* f14-f31, fpscr */
|
||||
mr 3, 4
|
||||
mr %r3, %r4
|
||||
blr
|
||||
|
Loading…
Reference in New Issue
Block a user