1*4a5d661aSToomas Soome/* $FreeBSD$ */ 2*4a5d661aSToomas Soome/* from: NetBSD: setjmp.S,v 1.1 1998/01/27 15:13:12 sakamoto Exp $ */ 3*4a5d661aSToomas Soome/* from: OpenBSD: setjmp.S,v 1.2 1996/12/28 06:22:18 rahnds Exp */ 4*4a5d661aSToomas Soome/* kernel version of this file, does not have signal goop */ 5*4a5d661aSToomas Soome/* int setjmp(jmp_buf env) */ 6*4a5d661aSToomas Soome 7*4a5d661aSToomas Soome#include <machine/asm.h> 8*4a5d661aSToomas Soome 9*4a5d661aSToomas Soome#ifdef __powerpc64__ 10*4a5d661aSToomas Soome#define LD_REG ld 11*4a5d661aSToomas Soome#define ST_REG std 12*4a5d661aSToomas Soome#define REGWIDTH 8 13*4a5d661aSToomas Soome#else 14*4a5d661aSToomas Soome#define LD_REG lwz 15*4a5d661aSToomas Soome#define ST_REG stw 16*4a5d661aSToomas Soome#define REGWIDTH 4 17*4a5d661aSToomas Soome#endif 18*4a5d661aSToomas Soome 19*4a5d661aSToomas Soome#define JMP_r1 1*REGWIDTH 20*4a5d661aSToomas Soome#define JMP_r2 2*REGWIDTH 21*4a5d661aSToomas Soome#define JMP_r14 3*REGWIDTH 22*4a5d661aSToomas Soome#define JMP_r15 4*REGWIDTH 23*4a5d661aSToomas Soome#define JMP_r16 5*REGWIDTH 24*4a5d661aSToomas Soome#define JMP_r17 6*REGWIDTH 25*4a5d661aSToomas Soome#define JMP_r18 7*REGWIDTH 26*4a5d661aSToomas Soome#define JMP_r19 8*REGWIDTH 27*4a5d661aSToomas Soome#define JMP_r20 9*REGWIDTH 28*4a5d661aSToomas Soome#define JMP_r21 10*REGWIDTH 29*4a5d661aSToomas Soome#define JMP_r22 11*REGWIDTH 30*4a5d661aSToomas Soome#define JMP_r23 12*REGWIDTH 31*4a5d661aSToomas Soome#define JMP_r24 13*REGWIDTH 32*4a5d661aSToomas Soome#define JMP_r25 14*REGWIDTH 33*4a5d661aSToomas Soome#define JMP_r26 15*REGWIDTH 34*4a5d661aSToomas Soome#define JMP_r27 16*REGWIDTH 35*4a5d661aSToomas Soome#define JMP_r28 17*REGWIDTH 36*4a5d661aSToomas Soome#define JMP_r29 18*REGWIDTH 37*4a5d661aSToomas Soome#define JMP_r30 19*REGWIDTH 38*4a5d661aSToomas Soome#define JMP_r31 20*REGWIDTH 39*4a5d661aSToomas Soome#define JMP_lr 21*REGWIDTH 40*4a5d661aSToomas Soome#define JMP_cr 22*REGWIDTH 41*4a5d661aSToomas Soome#define JMP_ctr 23*REGWIDTH 42*4a5d661aSToomas Soome#define JMP_xer 24*REGWIDTH 43*4a5d661aSToomas Soome#define JMP_sig 25*REGWIDTH 44*4a5d661aSToomas Soome 45*4a5d661aSToomas SoomeASENTRY_NOPROF(_setjmp) 46*4a5d661aSToomas Soome ST_REG 31, JMP_r31(3) 47*4a5d661aSToomas Soome /* r1, r2, r14-r30 */ 48*4a5d661aSToomas Soome ST_REG 1, JMP_r1 (3) 49*4a5d661aSToomas Soome ST_REG 2, JMP_r2 (3) 50*4a5d661aSToomas Soome ST_REG 14, JMP_r14(3) 51*4a5d661aSToomas Soome ST_REG 15, JMP_r15(3) 52*4a5d661aSToomas Soome ST_REG 16, JMP_r16(3) 53*4a5d661aSToomas Soome ST_REG 17, JMP_r17(3) 54*4a5d661aSToomas Soome ST_REG 18, JMP_r18(3) 55*4a5d661aSToomas Soome ST_REG 19, JMP_r19(3) 56*4a5d661aSToomas Soome ST_REG 20, JMP_r20(3) 57*4a5d661aSToomas Soome ST_REG 21, JMP_r21(3) 58*4a5d661aSToomas Soome ST_REG 22, JMP_r22(3) 59*4a5d661aSToomas Soome ST_REG 23, JMP_r23(3) 60*4a5d661aSToomas Soome ST_REG 24, JMP_r24(3) 61*4a5d661aSToomas Soome ST_REG 25, JMP_r25(3) 62*4a5d661aSToomas Soome ST_REG 26, JMP_r26(3) 63*4a5d661aSToomas Soome ST_REG 27, JMP_r27(3) 64*4a5d661aSToomas Soome ST_REG 28, JMP_r28(3) 65*4a5d661aSToomas Soome ST_REG 29, JMP_r29(3) 66*4a5d661aSToomas Soome ST_REG 30, JMP_r30(3) 67*4a5d661aSToomas Soome /* cr, lr, ctr, xer */ 68*4a5d661aSToomas Soome mfcr 0 69*4a5d661aSToomas Soome ST_REG 0, JMP_cr(3) 70*4a5d661aSToomas Soome mflr 0 71*4a5d661aSToomas Soome ST_REG 0, JMP_lr(3) 72*4a5d661aSToomas Soome mfctr 0 73*4a5d661aSToomas Soome ST_REG 0, JMP_ctr(3) 74*4a5d661aSToomas Soome mfxer 0 75*4a5d661aSToomas Soome ST_REG 0, JMP_xer(3) 76*4a5d661aSToomas Soome /* f14-f31, fpscr */ 77*4a5d661aSToomas Soome li 3, 0 78*4a5d661aSToomas Soome blr 79*4a5d661aSToomas Soome 80*4a5d661aSToomas Soome 81*4a5d661aSToomas Soome.extern sigsetmask 82*4a5d661aSToomas SoomeASENTRY_NOPROF(_longjmp) 83*4a5d661aSToomas Soome LD_REG 31, JMP_r31(3) 84*4a5d661aSToomas Soome /* r1, r2, r14-r30 */ 85*4a5d661aSToomas Soome LD_REG 1, JMP_r1 (3) 86*4a5d661aSToomas Soome LD_REG 2, JMP_r2 (3) 87*4a5d661aSToomas Soome LD_REG 14, JMP_r14(3) 88*4a5d661aSToomas Soome LD_REG 15, JMP_r15(3) 89*4a5d661aSToomas Soome LD_REG 16, JMP_r16(3) 90*4a5d661aSToomas Soome LD_REG 17, JMP_r17(3) 91*4a5d661aSToomas Soome LD_REG 18, JMP_r18(3) 92*4a5d661aSToomas Soome LD_REG 19, JMP_r19(3) 93*4a5d661aSToomas Soome LD_REG 20, JMP_r20(3) 94*4a5d661aSToomas Soome LD_REG 21, JMP_r21(3) 95*4a5d661aSToomas Soome LD_REG 22, JMP_r22(3) 96*4a5d661aSToomas Soome LD_REG 23, JMP_r23(3) 97*4a5d661aSToomas Soome LD_REG 24, JMP_r24(3) 98*4a5d661aSToomas Soome LD_REG 25, JMP_r25(3) 99*4a5d661aSToomas Soome LD_REG 26, JMP_r26(3) 100*4a5d661aSToomas Soome LD_REG 27, JMP_r27(3) 101*4a5d661aSToomas Soome LD_REG 28, JMP_r28(3) 102*4a5d661aSToomas Soome LD_REG 29, JMP_r29(3) 103*4a5d661aSToomas Soome LD_REG 30, JMP_r30(3) 104*4a5d661aSToomas Soome /* cr, lr, ctr, xer */ 105*4a5d661aSToomas Soome LD_REG 0, JMP_cr(3) 106*4a5d661aSToomas Soome mtcr 0 107*4a5d661aSToomas Soome LD_REG 0, JMP_lr(3) 108*4a5d661aSToomas Soome mtlr 0 109*4a5d661aSToomas Soome LD_REG 0, JMP_ctr(3) 110*4a5d661aSToomas Soome mtctr 0 111*4a5d661aSToomas Soome LD_REG 0, JMP_xer(3) 112*4a5d661aSToomas Soome mtxer 0 113*4a5d661aSToomas Soome /* f14-f31, fpscr */ 114*4a5d661aSToomas Soome mr 3, 4 115*4a5d661aSToomas Soome blr 116