#include <setjmp.h>
setjmp.h
_JBLEN is number of ints required to save the following:
rflags, rip, rbp, rsp, rbx, r12, r13, r14, r15... these are 8 bytes each
mxcsr, fp control word, sigmask... these are 4 bytes each
add 16 ints for future expansion needs...
macro_JBLEN
_JBLEN is the number of ints required to save the following:
r21-r29, sp, fp, lr == 12 registers, 8 bytes each. d8-d15
are another 8 registers, each 8 bytes long. (aapcs64 specifies
that only 64-bit versions of FP registers need to be saved).
Finally, two 8-byte fields for signal handling purposes.
#define _JBLEN ((14 + 8 + 2) * 2)
typedefsigjmp_buf
typedef int sigjmp_buf[_JBLEN + 1]
functionlongjmp
__dead2 extern void longjmp(jmp_buf, int)
man page · June 4, 1993
longjmp(3) — non-local jumpsfunction_longjmp
__dead2 void _longjmp(jmp_buf, int)
man page · June 4, 1993
_longjmp(3) — non-local jumpsfunctionsigsetjmp
int sigsetjmp(sigjmp_buf, int)
man page · June 4, 1993
sigsetjmp(3) — non-local jumpsfunctionsiglongjmp
__dead2 void siglongjmp(sigjmp_buf, int)
man page · June 4, 1993
siglongjmp(3) — non-local jumps