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 */
35 cd7ddc9b 2003-11-23 devnull #elif defined(__sun__)
36 cd7ddc9b 2003-11-23 devnull struct Label
38 cd7ddc9b 2003-11-23 devnull ulong input[8]; /* %i registers */
39 cd7ddc9b 2003-11-23 devnull ulong local[8]; /* %l registers */
40 cd7ddc9b 2003-11-23 devnull ulong sp; /* %o6 */
41 cd7ddc9b 2003-11-23 devnull ulong link; /* %o7 */
44 76193d7c 2003-09-30 devnull #error "Unknown or unsupported architecture"