// 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 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)); #endif