banan-os/userspace/libraries/LibC/include/setjmp.h

30 lines
658 B
C

#ifndef _SETJMP_H
#define _SETJMP_H 1
// https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/setjmp.h.html
#include <sys/cdefs.h>
__BEGIN_DECLS
#if defined(__x86_64__)
#define _JMP_BUF_REGS 8 // rsp, rip, rbx, rbp, r12-r15
#elif defined(__i686__)
#define _JMP_BUF_REGS 6 // esp, eip, ebx, ebp, edi, esi
#endif
typedef long jmp_buf[_JMP_BUF_REGS];
typedef long sigjmp_buf[_JMP_BUF_REGS + 1 + (sizeof(long long) / sizeof(long))];
#define _longjmp longjmp
void longjmp(jmp_buf env, int val);
void siglongjmp(sigjmp_buf env, int val);
#define _setjmp setjmp
int setjmp(jmp_buf env);
int sigsetjmp(sigjmp_buf env, int savemask);
__END_DECLS
#endif