setjmp.S revision 99731
199731Sbenno/* $FreeBSD: head/sys/powerpc/powerpc/setjmp.S 99731 2002-07-10 12:26:17Z benno $ */ 299731Sbenno/* from: NetBSD: setjmp.S,v 1.1 1998/01/27 15:13:12 sakamoto Exp $ */ 399731Sbenno/* from: OpenBSD: setjmp.S,v 1.2 1996/12/28 06:22:18 rahnds Exp */ 499731Sbenno/* kernel version of this file, does not have signal goop */ 599731Sbenno/* int setjmp(jmp_buf env) */ 699731Sbenno 799731Sbenno#define JMP_r1 0x04 899731Sbenno#define JMP_r14 0x08 999731Sbenno#define JMP_r15 0x0c 1099731Sbenno#define JMP_r16 0x10 1199731Sbenno#define JMP_r17 0x14 1299731Sbenno#define JMP_r18 0x18 1399731Sbenno#define JMP_r19 0x1c 1499731Sbenno#define JMP_r20 0x20 1599731Sbenno#define JMP_r21 0x24 1699731Sbenno#define JMP_r22 0x28 1799731Sbenno#define JMP_r23 0x2c 1899731Sbenno#define JMP_r24 0x30 1999731Sbenno#define JMP_r25 0x34 2099731Sbenno#define JMP_r26 0x38 2199731Sbenno#define JMP_r27 0x3c 2299731Sbenno#define JMP_r28 0x40 2399731Sbenno#define JMP_r29 0x44 2499731Sbenno#define JMP_r30 0x48 2599731Sbenno#define JMP_r31 0x4c 2699731Sbenno#define JMP_lr 0x50 2799731Sbenno#define JMP_cr 0x54 2899731Sbenno#define JMP_ctr 0x58 2999731Sbenno#define JMP_xer 0x5c 3099731Sbenno#define JMP_sig 0x60 3199731Sbenno 3299731Sbenno 3399731Sbenno.globl setjmp 3499731Sbennosetjmp: 3599731Sbenno stw 31, JMP_r31(3) 3699731Sbenno /* r1, r14-r30 */ 3799731Sbenno stw 1, JMP_r1 (3) 3899731Sbenno stw 14, JMP_r14(3) 3999731Sbenno stw 15, JMP_r15(3) 4099731Sbenno stw 16, JMP_r16(3) 4199731Sbenno stw 17, JMP_r17(3) 4299731Sbenno stw 18, JMP_r18(3) 4399731Sbenno stw 19, JMP_r19(3) 4499731Sbenno stw 20, JMP_r20(3) 4599731Sbenno stw 21, JMP_r21(3) 4699731Sbenno stw 22, JMP_r22(3) 4799731Sbenno stw 23, JMP_r23(3) 4899731Sbenno stw 24, JMP_r24(3) 4999731Sbenno stw 25, JMP_r25(3) 5099731Sbenno stw 26, JMP_r26(3) 5199731Sbenno stw 27, JMP_r27(3) 5299731Sbenno stw 28, JMP_r28(3) 5399731Sbenno stw 29, JMP_r29(3) 5499731Sbenno stw 30, JMP_r30(3) 5599731Sbenno /* cr, lr, ctr, xer */ 5699731Sbenno mfcr 0 5799731Sbenno stw 0, JMP_cr(3) 5899731Sbenno mflr 0 5999731Sbenno stw 0, JMP_lr(3) 6099731Sbenno mfctr 0 6199731Sbenno stw 0, JMP_ctr(3) 6299731Sbenno mfxer 0 6399731Sbenno stw 0, JMP_xer(3) 6499731Sbenno /* f14-f31, fpscr */ 6599731Sbenno li 3, 0 6699731Sbenno blr 6799731Sbenno 6899731Sbenno 6999731Sbenno.extern sigsetmask 7099731Sbenno.globl longjmp 7199731Sbennolongjmp: 7299731Sbenno lwz 31, JMP_r31(3) 7399731Sbenno /* r1, r14-r30 */ 7499731Sbenno lwz 1, JMP_r1 (3) 7599731Sbenno lwz 14, JMP_r14(3) 7699731Sbenno lwz 15, JMP_r15(3) 7799731Sbenno lwz 16, JMP_r16(3) 7899731Sbenno lwz 17, JMP_r17(3) 7999731Sbenno lwz 18, JMP_r18(3) 8099731Sbenno lwz 19, JMP_r19(3) 8199731Sbenno lwz 20, JMP_r20(3) 8299731Sbenno lwz 21, JMP_r21(3) 8399731Sbenno lwz 22, JMP_r22(3) 8499731Sbenno lwz 23, JMP_r23(3) 8599731Sbenno lwz 24, JMP_r24(3) 8699731Sbenno lwz 25, JMP_r25(3) 8799731Sbenno lwz 26, JMP_r26(3) 8899731Sbenno lwz 27, JMP_r27(3) 8999731Sbenno lwz 28, JMP_r28(3) 9099731Sbenno lwz 29, JMP_r29(3) 9199731Sbenno lwz 30, JMP_r30(3) 9299731Sbenno /* cr, lr, ctr, xer */ 9399731Sbenno lwz 0, JMP_cr(3) 9499731Sbenno mtcr 0 9599731Sbenno lwz 0, JMP_lr(3) 9699731Sbenno mtlr 0 9799731Sbenno lwz 0, JMP_ctr(3) 9899731Sbenno mtctr 0 9999731Sbenno lwz 0, JMP_xer(3) 10099731Sbenno mtxer 0 10199731Sbenno /* f14-f31, fpscr */ 10299731Sbenno mr 3, 4 10399731Sbenno blr 104