// W65816 setjmp/longjmp — saves SP, return address (24-bit), and DP. // jmp_buf is 8 bytes of opaque storage. #ifndef _SETJMP_H #define _SETJMP_H #ifdef __cplusplus extern "C" { #endif typedef unsigned char jmp_buf[8]; // `returns_twice` tells clang that setjmp may "return" a second time // (via longjmp) — without this the optimizer may treat env as // uninitialized after the call and constant-fold reads to 0. int setjmp(jmp_buf env) __attribute__((returns_twice)); void longjmp(jmp_buf env, int val) __attribute__((noreturn)); #ifdef __cplusplus } #endif #endif