LibC: Save callee saved registers on setjmp

This commit is contained in:
2025-05-04 13:54:35 +03:00
parent d457e6ad6a
commit 82f4975f45
4 changed files with 43 additions and 11 deletions

View File

@@ -7,8 +7,14 @@
__BEGIN_DECLS
typedef long jmp_buf[2];
typedef long sigjmp_buf[2 + 1 + (sizeof(long long) / sizeof(long))];
#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);