2 * Copyright 2012, Alex Smith, alex@alex-smith.me.uk.
3 * Distributed under the terms of the MIT License.
6 #include "setjmp_internal.h"
9 /* int sigsetjmp(jmp_buf buffer, int saveMask) */
10 FUNCTION(__sigsetjmp):
12 // Save instruction/stack pointers.
14 movq %rax, JMP_REGS_IP(%rdi)
16 movq %rax, JMP_REGS_SP(%rdi)
18 // Save callee-save registers.
19 movq %rbp, JMP_REGS_BP(%rdi)
20 movq %rbx, JMP_REGS_BX(%rdi)
21 movq %r12, JMP_REGS_R12(%rdi)
22 movq %r13, JMP_REGS_R13(%rdi)
23 movq %r14, JMP_REGS_R14(%rdi)
24 movq %r15, JMP_REGS_R15(%rdi)
26 // __setjmp_save_sigs handles signal mask and return value.
27 jmp __setjmp_save_sigs@PLT
31 /* int setjmp(jmp_buf buffer) */
33 // Jump to sigsetjmp with a zero saveMask.
39 #pragma weak _setjmp=setjmp