1#include "SYS.h" 2#include <machine/asm.h> 3 4/* int setjmp(jmp_buf env) */ 5 6#define JMP_r1 0x04 7#define JMP_r14 0x08 8#define JMP_r15 0x0c 9#define JMP_r16 0x10 10#define JMP_r17 0x14 11#define JMP_r18 0x18 12#define JMP_r19 0x1c 13#define JMP_r20 0x20 14#define JMP_r21 0x24 15#define JMP_r22 0x28 16#define JMP_r23 0x2c 17#define JMP_r24 0x30 18#define JMP_r25 0x34 19#define JMP_r26 0x38 20#define JMP_r27 0x3c 21#define JMP_r28 0x40 22#define JMP_r29 0x44 23#define JMP_r30 0x48 24#define JMP_r31 0x4c 25#define JMP_lr 0x50 26#define JMP_cr 0x54 27#define JMP_ctr 0x58 28#define JMP_xer 0x5c 29#define JMP_sig 0x60 30 31 32.extern sigblock 33 34ENTRY(setjmp) 35 /* r31, mask */ 36 stw 31, JMP_r31(3) 37 mflr 0 38 stw 0, JMP_lr(3) 39 mr 31, 3 40 li 3, 0 41 bl PIC_PLT(sigblock) 42 stw 3, JMP_sig(31) 43 /* should sigstack be checked and saved */ 44 mr 3, 31 45 lwz 0, JMP_lr(3) 46 mtlr 0 47 lwz 31, JMP_r31(3) 48ENTRY(_setjmp) 49 stw 31, JMP_r31(3) 50 /* r1, r14-r30 */ 51 stw 1, JMP_r1 (3) 52 stw 14, JMP_r14(3) 53 stw 15, JMP_r15(3) 54 stw 16, JMP_r16(3) 55 stw 17, JMP_r17(3) 56 stw 18, JMP_r18(3) 57 stw 19, JMP_r19(3) 58 stw 20, JMP_r20(3) 59 stw 21, JMP_r21(3) 60 stw 22, JMP_r22(3) 61 stw 23, JMP_r23(3) 62 stw 24, JMP_r24(3) 63 stw 25, JMP_r25(3) 64 stw 26, JMP_r26(3) 65 stw 27, JMP_r27(3) 66 stw 28, JMP_r28(3) 67 stw 29, JMP_r29(3) 68 stw 30, JMP_r30(3) 69 /* cr, lr, ctr, xer */ 70 mfcr 0 71 stw 0, JMP_cr(3) 72 mflr 0 73 stw 0, JMP_lr(3) 74 mfctr 0 75 stw 0, JMP_ctr(3) 76 mfxer 0 77 stw 0, JMP_xer(3) 78 /* f14-f31, fpscr */ 79 li 3, 0 80 blr 81 82 83.extern sigsetmask 84ENTRY(longjmp) 85 /* r31, mask */ 86 mr 30, 3 87 mr 31, 4 88 lwz 3, JMP_sig(3) 89 bl PIC_PLT(sigsetmask) 90 /* should we deal with sigonstack here ?? */ 91 mr 4, 31 92 mr 3, 30 93ENTRY(_longjmp) 94 lwz 31, JMP_r31(3) 95 /* r1, r14-r30 */ 96 lwz 1, JMP_r1 (3) 97 lwz 14, JMP_r14(3) 98 lwz 15, JMP_r15(3) 99 lwz 16, JMP_r16(3) 100 lwz 17, JMP_r17(3) 101 lwz 18, JMP_r18(3) 102 lwz 19, JMP_r19(3) 103 lwz 20, JMP_r20(3) 104 lwz 21, JMP_r21(3) 105 lwz 22, JMP_r22(3) 106 lwz 23, JMP_r23(3) 107 lwz 24, JMP_r24(3) 108 lwz 25, JMP_r25(3) 109 lwz 26, JMP_r26(3) 110 lwz 27, JMP_r27(3) 111 lwz 28, JMP_r28(3) 112 lwz 29, JMP_r29(3) 113 lwz 30, JMP_r30(3) 114 /* cr, lr, ctr, xer */ 115 lwz 0, JMP_cr(3) 116 mtcr 0 117 lwz 0, JMP_lr(3) 118 mtlr 0 119 lwz 0, JMP_ctr(3) 120 mtctr 0 121 lwz 0, JMP_xer(3) 122 mtxer 0 123 /* f14-f31, fpscr */ 124 mr 3, 4 125 blr 126