setjmp.S revision 99731
1/* $FreeBSD: head/sys/powerpc/powerpc/setjmp.S 99731 2002-07-10 12:26:17Z benno $ */ 2/* from: NetBSD: setjmp.S,v 1.1 1998/01/27 15:13:12 sakamoto Exp $ */ 3/* from: OpenBSD: setjmp.S,v 1.2 1996/12/28 06:22:18 rahnds Exp */ 4/* kernel version of this file, does not have signal goop */ 5/* int setjmp(jmp_buf env) */ 6 7#define JMP_r1 0x04 8#define JMP_r14 0x08 9#define JMP_r15 0x0c 10#define JMP_r16 0x10 11#define JMP_r17 0x14 12#define JMP_r18 0x18 13#define JMP_r19 0x1c 14#define JMP_r20 0x20 15#define JMP_r21 0x24 16#define JMP_r22 0x28 17#define JMP_r23 0x2c 18#define JMP_r24 0x30 19#define JMP_r25 0x34 20#define JMP_r26 0x38 21#define JMP_r27 0x3c 22#define JMP_r28 0x40 23#define JMP_r29 0x44 24#define JMP_r30 0x48 25#define JMP_r31 0x4c 26#define JMP_lr 0x50 27#define JMP_cr 0x54 28#define JMP_ctr 0x58 29#define JMP_xer 0x5c 30#define JMP_sig 0x60 31 32 33.globl setjmp 34setjmp: 35 stw 31, JMP_r31(3) 36 /* r1, r14-r30 */ 37 stw 1, JMP_r1 (3) 38 stw 14, JMP_r14(3) 39 stw 15, JMP_r15(3) 40 stw 16, JMP_r16(3) 41 stw 17, JMP_r17(3) 42 stw 18, JMP_r18(3) 43 stw 19, JMP_r19(3) 44 stw 20, JMP_r20(3) 45 stw 21, JMP_r21(3) 46 stw 22, JMP_r22(3) 47 stw 23, JMP_r23(3) 48 stw 24, JMP_r24(3) 49 stw 25, JMP_r25(3) 50 stw 26, JMP_r26(3) 51 stw 27, JMP_r27(3) 52 stw 28, JMP_r28(3) 53 stw 29, JMP_r29(3) 54 stw 30, JMP_r30(3) 55 /* cr, lr, ctr, xer */ 56 mfcr 0 57 stw 0, JMP_cr(3) 58 mflr 0 59 stw 0, JMP_lr(3) 60 mfctr 0 61 stw 0, JMP_ctr(3) 62 mfxer 0 63 stw 0, JMP_xer(3) 64 /* f14-f31, fpscr */ 65 li 3, 0 66 blr 67 68 69.extern sigsetmask 70.globl longjmp 71longjmp: 72 lwz 31, JMP_r31(3) 73 /* r1, r14-r30 */ 74 lwz 1, JMP_r1 (3) 75 lwz 14, JMP_r14(3) 76 lwz 15, JMP_r15(3) 77 lwz 16, JMP_r16(3) 78 lwz 17, JMP_r17(3) 79 lwz 18, JMP_r18(3) 80 lwz 19, JMP_r19(3) 81 lwz 20, JMP_r20(3) 82 lwz 21, JMP_r21(3) 83 lwz 22, JMP_r22(3) 84 lwz 23, JMP_r23(3) 85 lwz 24, JMP_r24(3) 86 lwz 25, JMP_r25(3) 87 lwz 26, JMP_r26(3) 88 lwz 27, JMP_r27(3) 89 lwz 28, JMP_r28(3) 90 lwz 29, JMP_r29(3) 91 lwz 30, JMP_r30(3) 92 /* cr, lr, ctr, xer */ 93 lwz 0, JMP_cr(3) 94 mtcr 0 95 lwz 0, JMP_lr(3) 96 mtlr 0 97 lwz 0, JMP_ctr(3) 98 mtctr 0 99 lwz 0, JMP_xer(3) 100 mtxer 0 101 /* f14-f31, fpscr */ 102 mr 3, 4 103 blr 104