Cucumber/Kernel/include/Lua/setjmp.h

36 lines
777 B
C

#ifndef __TIER0_ANSI_SETJMP_H__
#define __TIER0_ANSI_SETJMP_H__
#include "Tier0/panic.h"
#include "Tier0/interrupts.h"
struct __jmp_buf {
u64 rax; // 0
u64 rbx; // 8
u64 rcx; // 16
u64 rdx; // 24
u64 rsi; // 32
u64 rdi; // 40
u64 rsp; // 48
u64 rbp; // 56
u64 r8; // 64
u64 r9; // 72
u64 r10; // 80
u64 r11; // 88
u64 r12; // 96
u64 r13; // 104
u64 r14; // 112
u64 r15; // 120
u64 rip; // 128
} __attribute__((packed));
// POSIX sez:
// jmp_buf must be an array type so that poor, poor programmers don't have
// to use pointers, yet we can still return-by-argument. whaddafuck.
typedef struct __jmp_buf jmp_buf[1];
int setjmp(jmp_buf env);
void longjmp(jmp_buf env, int value);
#endif