1/* 2 * Copyright 2005, Ingo Weinhold <bonefish@cs.tu-berlin.de>. All rights 3 * reserved. Distributed under the terms of the Haiku License. 4 */ 5 6#include "setjmp_internal.h" 7 8/* int sigsetjmp(jmp_buf buffer, int saveMask) */ 9FUNCTION(__sigsetjmp): 10FUNCTION(sigsetjmp): 11 // r3: buffer, r4: saveMask 12 13 // store non-volatile general purpose registers 14 stw %r1, JMP_REGS_R1(3) 15 stw %r2, JMP_REGS_R2(3) 16 stw %r13, JMP_REGS_R13(3) 17 stw %r14, JMP_REGS_R14(3) 18 stw %r15, JMP_REGS_R15(3) 19 stw %r16, JMP_REGS_R16(3) 20 stw %r17, JMP_REGS_R17(3) 21 stw %r18, JMP_REGS_R18(3) 22 stw %r19, JMP_REGS_R19(3) 23 stw %r20, JMP_REGS_R20(3) 24 stw %r21, JMP_REGS_R21(3) 25 stw %r22, JMP_REGS_R22(3) 26 stw %r23, JMP_REGS_R23(3) 27 stw %r24, JMP_REGS_R24(3) 28 stw %r25, JMP_REGS_R25(3) 29 stw %r26, JMP_REGS_R26(3) 30 stw %r27, JMP_REGS_R27(3) 31 stw %r28, JMP_REGS_R28(3) 32 stw %r29, JMP_REGS_R29(3) 33 stw %r30, JMP_REGS_R30(3) 34 stw %r31, JMP_REGS_R31(3) 35 36 // store special registers (link, condition) 37 mflr %r0 38 stw %r0, JMP_REGS_LR(3) 39 mfcr %r0 40 stw %r0, JMP_REGS_CR(3) 41 42 b __setjmp_save_sigs 43 44 45/* int setjmp(jmp_buf buffer) */ 46FUNCTION(setjmp): 47 // call __sigsetjmp with saveMask = 0 48 addi %r4, 0, 0 49 b __sigsetjmp 50 51#pragma weak _setjmp=setjmp 52