2 76193d7c 2003-09-30 devnull * setjmp and longjmp, but our own because some (stupid) c libraries
3 76193d7c 2003-09-30 devnull * assume longjmp is only used to move up the stack, and error out
4 76193d7c 2003-09-30 devnull * if you do otherwise.
7 76193d7c 2003-09-30 devnull typedef struct Label Label;
8 76193d7c 2003-09-30 devnull #define LABELDPC 0
10 76193d7c 2003-09-30 devnull #if defined (__i386__) && (defined(__FreeBSD__) || defined(__linux__))
11 76193d7c 2003-09-30 devnull struct Label
13 76193d7c 2003-09-30 devnull ulong pc;
14 76193d7c 2003-09-30 devnull ulong bx;
15 76193d7c 2003-09-30 devnull ulong sp;
16 76193d7c 2003-09-30 devnull ulong bp;
17 76193d7c 2003-09-30 devnull ulong si;
18 76193d7c 2003-09-30 devnull ulong di;
20 a995e477 2003-10-01 devnull #elif defined(__APPLE__)
21 a995e477 2003-10-01 devnull struct Label
23 a995e477 2003-10-01 devnull ulong pc; /* lr */
24 a995e477 2003-10-01 devnull ulong cr; /* mfcr */
25 a995e477 2003-10-01 devnull ulong ctr; /* mfcr */
26 a995e477 2003-10-01 devnull ulong xer; /* mfcr */
27 a995e477 2003-10-01 devnull ulong sp; /* callee saved: r1 */
28 a995e477 2003-10-01 devnull ulong toc; /* callee saved: r2 */
29 a995e477 2003-10-01 devnull ulong gpr[19]; /* callee saved: r13-r31 */
30 a995e477 2003-10-01 devnull // XXX: currently do not save vector registers or floating-point state
31 a995e477 2003-10-01 devnull // ulong pad;
32 a995e477 2003-10-01 devnull // uvlong fpr[18]; /* callee saved: f14-f31 */
33 a995e477 2003-10-01 devnull // ulong vr[4*12]; /* callee saved: v20-v31, 256-bits each */
36 76193d7c 2003-09-30 devnull #error "Unknown or unsupported architecture"