1261591Snwhitehorn/* $FreeBSD: stable/11/stand/libsa/powerpc/_setjmp.S 279798 2015-03-09 02:19:44Z nwhitehorn $ */ 2261591Snwhitehorn/* from: NetBSD: setjmp.S,v 1.1 1998/01/27 15:13:12 sakamoto Exp $ */ 3261591Snwhitehorn/* from: OpenBSD: setjmp.S,v 1.2 1996/12/28 06:22:18 rahnds Exp */ 4261591Snwhitehorn/* kernel version of this file, does not have signal goop */ 5261591Snwhitehorn/* int setjmp(jmp_buf env) */ 666926Sobrien 766926Sobrien#include <machine/asm.h> 866926Sobrien 9261591Snwhitehorn#ifdef __powerpc64__ 10261591Snwhitehorn#define LD_REG ld 11261591Snwhitehorn#define ST_REG std 12261591Snwhitehorn#define REGWIDTH 8 13261591Snwhitehorn#else 14261591Snwhitehorn#define LD_REG lwz 15261591Snwhitehorn#define ST_REG stw 16261591Snwhitehorn#define REGWIDTH 4 1766926Sobrien#endif 1866926Sobrien 19261591Snwhitehorn#define JMP_r1 1*REGWIDTH 20261591Snwhitehorn#define JMP_r2 2*REGWIDTH 21261591Snwhitehorn#define JMP_r14 3*REGWIDTH 22261591Snwhitehorn#define JMP_r15 4*REGWIDTH 23261591Snwhitehorn#define JMP_r16 5*REGWIDTH 24261591Snwhitehorn#define JMP_r17 6*REGWIDTH 25261591Snwhitehorn#define JMP_r18 7*REGWIDTH 26261591Snwhitehorn#define JMP_r19 8*REGWIDTH 27261591Snwhitehorn#define JMP_r20 9*REGWIDTH 28261591Snwhitehorn#define JMP_r21 10*REGWIDTH 29261591Snwhitehorn#define JMP_r22 11*REGWIDTH 30261591Snwhitehorn#define JMP_r23 12*REGWIDTH 31261591Snwhitehorn#define JMP_r24 13*REGWIDTH 32261591Snwhitehorn#define JMP_r25 14*REGWIDTH 33261591Snwhitehorn#define JMP_r26 15*REGWIDTH 34261591Snwhitehorn#define JMP_r27 16*REGWIDTH 35261591Snwhitehorn#define JMP_r28 17*REGWIDTH 36261591Snwhitehorn#define JMP_r29 18*REGWIDTH 37261591Snwhitehorn#define JMP_r30 19*REGWIDTH 38261591Snwhitehorn#define JMP_r31 20*REGWIDTH 39261591Snwhitehorn#define JMP_lr 21*REGWIDTH 40261591Snwhitehorn#define JMP_cr 22*REGWIDTH 41261591Snwhitehorn#define JMP_ctr 23*REGWIDTH 42261591Snwhitehorn#define JMP_xer 24*REGWIDTH 43261591Snwhitehorn#define JMP_sig 25*REGWIDTH 4466926Sobrien 45279798SnwhitehornASENTRY_NOPROF(_setjmp) 46261591Snwhitehorn ST_REG 31, JMP_r31(3) 47261591Snwhitehorn /* r1, r2, r14-r30 */ 48261591Snwhitehorn ST_REG 1, JMP_r1 (3) 49261591Snwhitehorn ST_REG 2, JMP_r2 (3) 50261591Snwhitehorn ST_REG 14, JMP_r14(3) 51261591Snwhitehorn ST_REG 15, JMP_r15(3) 52261591Snwhitehorn ST_REG 16, JMP_r16(3) 53261591Snwhitehorn ST_REG 17, JMP_r17(3) 54261591Snwhitehorn ST_REG 18, JMP_r18(3) 55261591Snwhitehorn ST_REG 19, JMP_r19(3) 56261591Snwhitehorn ST_REG 20, JMP_r20(3) 57261591Snwhitehorn ST_REG 21, JMP_r21(3) 58261591Snwhitehorn ST_REG 22, JMP_r22(3) 59261591Snwhitehorn ST_REG 23, JMP_r23(3) 60261591Snwhitehorn ST_REG 24, JMP_r24(3) 61261591Snwhitehorn ST_REG 25, JMP_r25(3) 62261591Snwhitehorn ST_REG 26, JMP_r26(3) 63261591Snwhitehorn ST_REG 27, JMP_r27(3) 64261591Snwhitehorn ST_REG 28, JMP_r28(3) 65261591Snwhitehorn ST_REG 29, JMP_r29(3) 66261591Snwhitehorn ST_REG 30, JMP_r30(3) 67261591Snwhitehorn /* cr, lr, ctr, xer */ 68261591Snwhitehorn mfcr 0 69261591Snwhitehorn ST_REG 0, JMP_cr(3) 70261591Snwhitehorn mflr 0 71261591Snwhitehorn ST_REG 0, JMP_lr(3) 72261591Snwhitehorn mfctr 0 73261591Snwhitehorn ST_REG 0, JMP_ctr(3) 74261591Snwhitehorn mfxer 0 75261591Snwhitehorn ST_REG 0, JMP_xer(3) 76261591Snwhitehorn /* f14-f31, fpscr */ 77261591Snwhitehorn li 3, 0 7866926Sobrien blr 7966926Sobrien 80261591Snwhitehorn 81261591Snwhitehorn.extern sigsetmask 82279798SnwhitehornASENTRY_NOPROF(_longjmp) 83261591Snwhitehorn LD_REG 31, JMP_r31(3) 84261591Snwhitehorn /* r1, r2, r14-r30 */ 85261591Snwhitehorn LD_REG 1, JMP_r1 (3) 86261591Snwhitehorn LD_REG 2, JMP_r2 (3) 87261591Snwhitehorn LD_REG 14, JMP_r14(3) 88261591Snwhitehorn LD_REG 15, JMP_r15(3) 89261591Snwhitehorn LD_REG 16, JMP_r16(3) 90261591Snwhitehorn LD_REG 17, JMP_r17(3) 91261591Snwhitehorn LD_REG 18, JMP_r18(3) 92261591Snwhitehorn LD_REG 19, JMP_r19(3) 93261591Snwhitehorn LD_REG 20, JMP_r20(3) 94261591Snwhitehorn LD_REG 21, JMP_r21(3) 95261591Snwhitehorn LD_REG 22, JMP_r22(3) 96261591Snwhitehorn LD_REG 23, JMP_r23(3) 97261591Snwhitehorn LD_REG 24, JMP_r24(3) 98261591Snwhitehorn LD_REG 25, JMP_r25(3) 99261591Snwhitehorn LD_REG 26, JMP_r26(3) 100261591Snwhitehorn LD_REG 27, JMP_r27(3) 101261591Snwhitehorn LD_REG 28, JMP_r28(3) 102261591Snwhitehorn LD_REG 29, JMP_r29(3) 103261591Snwhitehorn LD_REG 30, JMP_r30(3) 104261591Snwhitehorn /* cr, lr, ctr, xer */ 105261591Snwhitehorn LD_REG 0, JMP_cr(3) 106261591Snwhitehorn mtcr 0 107261591Snwhitehorn LD_REG 0, JMP_lr(3) 108261591Snwhitehorn mtlr 0 109261591Snwhitehorn LD_REG 0, JMP_ctr(3) 110261591Snwhitehorn mtctr 0 111261591Snwhitehorn LD_REG 0, JMP_xer(3) 112261591Snwhitehorn mtxer 0 113261591Snwhitehorn /* f14-f31, fpscr */ 114261591Snwhitehorn mr 3, 4 11566926Sobrien blr 116