| * setjmp and longjmp, but our own because some (stupid) c libraries |
| * assume longjmp is only used to move up the stack, and error out |
| typedef struct Label Label; |
| #elif defined (__i386__) && (defined(__FreeBSD__) || defined(__linux__) || defined(__OpenBSD__)) |
| ulong sp; /* callee saved: r1 */ |
| ulong toc; /* callee saved: r2 */ |
| ulong gpr[19]; /* callee saved: r13-r31 */ |
| // XXX: currently do not save vector registers or floating-point state |
| // uvlong fpr[18]; /* callee saved: f14-f31 */ |
| // ulong vr[4*12]; /* callee saved: v20-v31, 256-bits each */ |
| ulong input[8]; /* %i registers */ |
| ulong local[8]; /* %l registers */ |
| #elif defined(__powerpc__) |
| ulong sp; /* callee saved: r1 */ |
| ulong toc; /* callee saved: r2 */ |
| ulong gpr[19]; /* callee saved: r13-r31 */ |
| // XXX: currently do not save vector registers or floating-point state |
| // uvlong fpr[18]; /* callee saved: f14-f31 */ |
| // ulong vr[4*12]; /* callee saved: v20-v31, 256-bits each */ |
| #error "Unknown or unsupported architecture" |