Blame


1 76193d7c 2003-09-30 devnull /*
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.
5 76193d7c 2003-09-30 devnull */
6 76193d7c 2003-09-30 devnull
7 76193d7c 2003-09-30 devnull typedef struct Label Label;
8 76193d7c 2003-09-30 devnull #define LABELDPC 0
9 76193d7c 2003-09-30 devnull
10 c6687d45 2004-09-21 devnull #if defined(__linux__)
11 c6687d45 2004-09-21 devnull #include <ucontext.h>
12 76193d7c 2003-09-30 devnull struct Label
13 76193d7c 2003-09-30 devnull {
14 c6687d45 2004-09-21 devnull ucontext_t uc;
15 c6687d45 2004-09-21 devnull };
16 c6687d45 2004-09-21 devnull #elif defined (__i386__) && (defined(__FreeBSD__) || defined(__linux__) || defined(__OpenBSD__))
17 c6687d45 2004-09-21 devnull struct Label
18 c6687d45 2004-09-21 devnull {
19 76193d7c 2003-09-30 devnull ulong pc;
20 76193d7c 2003-09-30 devnull ulong bx;
21 76193d7c 2003-09-30 devnull ulong sp;
22 76193d7c 2003-09-30 devnull ulong bp;
23 76193d7c 2003-09-30 devnull ulong si;
24 76193d7c 2003-09-30 devnull ulong di;
25 76193d7c 2003-09-30 devnull };
26 a995e477 2003-10-01 devnull #elif defined(__APPLE__)
27 a995e477 2003-10-01 devnull struct Label
28 a995e477 2003-10-01 devnull {
29 a995e477 2003-10-01 devnull ulong pc; /* lr */
30 a995e477 2003-10-01 devnull ulong cr; /* mfcr */
31 a995e477 2003-10-01 devnull ulong ctr; /* mfcr */
32 a995e477 2003-10-01 devnull ulong xer; /* mfcr */
33 a995e477 2003-10-01 devnull ulong sp; /* callee saved: r1 */
34 a995e477 2003-10-01 devnull ulong toc; /* callee saved: r2 */
35 a995e477 2003-10-01 devnull ulong gpr[19]; /* callee saved: r13-r31 */
36 a995e477 2003-10-01 devnull // XXX: currently do not save vector registers or floating-point state
37 a995e477 2003-10-01 devnull // ulong pad;
38 a995e477 2003-10-01 devnull // uvlong fpr[18]; /* callee saved: f14-f31 */
39 a995e477 2003-10-01 devnull // ulong vr[4*12]; /* callee saved: v20-v31, 256-bits each */
40 a995e477 2003-10-01 devnull };
41 cd7ddc9b 2003-11-23 devnull #elif defined(__sun__)
42 cd7ddc9b 2003-11-23 devnull struct Label
43 cd7ddc9b 2003-11-23 devnull {
44 cd7ddc9b 2003-11-23 devnull ulong input[8]; /* %i registers */
45 cd7ddc9b 2003-11-23 devnull ulong local[8]; /* %l registers */
46 cd7ddc9b 2003-11-23 devnull ulong sp; /* %o6 */
47 cd7ddc9b 2003-11-23 devnull ulong link; /* %o7 */
48 cd7ddc9b 2003-11-23 devnull };
49 984e3531 2004-08-22 devnull #elif defined(__powerpc__)
50 984e3531 2004-08-22 devnull struct Label
51 984e3531 2004-08-22 devnull {
52 984e3531 2004-08-22 devnull ulong pc; /* lr */
53 984e3531 2004-08-22 devnull ulong cr; /* mfcr */
54 984e3531 2004-08-22 devnull ulong ctr; /* mfcr */
55 984e3531 2004-08-22 devnull ulong xer; /* mfcr */
56 984e3531 2004-08-22 devnull ulong sp; /* callee saved: r1 */
57 984e3531 2004-08-22 devnull ulong toc; /* callee saved: r2 */
58 984e3531 2004-08-22 devnull ulong gpr[19]; /* callee saved: r13-r31 */
59 984e3531 2004-08-22 devnull // XXX: currently do not save vector registers or floating-point state
60 984e3531 2004-08-22 devnull // ulong pad;
61 984e3531 2004-08-22 devnull // uvlong fpr[18]; /* callee saved: f14-f31 */
62 984e3531 2004-08-22 devnull // ulong vr[4*12]; /* callee saved: v20-v31, 256-bits each */
63 984e3531 2004-08-22 devnull };
64 76193d7c 2003-09-30 devnull #else
65 76193d7c 2003-09-30 devnull #error "Unknown or unsupported architecture"
66 76193d7c 2003-09-30 devnull #endif
67 76193d7c 2003-09-30 devnull
68 76193d7c 2003-09-30 devnull