blob: 66fc288f4b98d92b792c4d5dc9e13e8dadb810ac (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
#ifndef _SETJMP_H
#define _SETJMP_H
#include <sys/cdefs.h>
#ifdef __i386__
#ifndef __ASSEMBLER__
typedef int __jmp_buf[6];
#endif
# define JB_BX 0
# define JB_SI 1
# define JB_DI 2
# define JB_BP 3
# define JB_SP 4
# define JB_PC 5
# define JB_SIZE 24
#endif
#ifdef __alpha__
#define JB_S0 0
#define JB_S1 1
#define JB_S2 2
#define JB_S3 3
#define JB_S4 4
#define JB_S5 5
#define JB_PC 6
#define JB_FP 7
#define JB_SP 8
#define JB_F2 9
#define JB_F3 10
#define JB_F4 11
#define JB_F5 12
#define JB_F6 13
#define JB_F7 14
#define JB_F8 15
#define JB_F9 16
#ifndef __ASSEMBLER__
typedef long int __jmp_buf[17];
#endif
#endif
#ifdef __mips__
#ifndef __ASSEMBLER__
typedef struct
{
void * __pc; /* Program counter. */
void * __sp; /* Stack pointer. */
int __regs[8]; /* Callee-saved registers s0 through s7. */
void * __fp; /* The frame pointer. */
void * __gp; /* The global pointer. */
int __fpc_csr; /* Floating point status register. */
double __fpregs[6]; /* Callee-saved floating point registers. */
} __jmp_buf[1];
#endif
#endif
#ifdef __sparc__
#define JB_SP 0
#define JB_FP 1
#define JB_PC 2
#ifndef __ASSEMBLER__
typedef int __jmp_buf[3];
#endif
#endif
#ifdef __arm__
#define __JMP_BUF_SP 8
#ifndef __ASSEMBLER__
typedef int __jmp_buf[10];
#endif
#endif
#ifdef __powerpc__
# define JB_GPR1 0 /* Also known as the stack pointer */
# define JB_GPR2 1
# define JB_LR 2 /* The address we will return to */
# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total */
# define JB_CR 21 /* Condition code registers. */
# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total */
# define JB_SIZE (58*4)
#ifndef __ASSEMBLER__
typedef long int __jmp_buf[58];
#endif
#endif
#ifndef __ASSEMBLER__
typedef int sig_atomic_t;
#define __sig_atomic_t sig_atomic_t
# define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
typedef struct
{
unsigned long int __val[_SIGSET_NWORDS];
} __sigset_t;
/* Calling environment, plus possibly a saved signal mask. */
typedef struct __jmp_buf_tag /* C++ doesn't like tagless structs. */
{
/* NOTE: The machine-dependent definitions of `__sigsetjmp'
assume that a `jmp_buf' begins with a `__jmp_buf'.
Do not move this member or add others before it. */
__jmp_buf __jmpbuf; /* Calling environment. */
int __mask_was_saved; /* Saved the signal mask? */
__sigset_t __saved_mask; /* Saved signal mask. */
} jmp_buf[1];
extern int __sigsetjmp (jmp_buf __env, int __savemask) __THROW;
extern void longjmp (jmp_buf __env, int __val)
__THROW __attribute__ ((__noreturn__));
typedef jmp_buf sigjmp_buf;
extern void siglongjmp (sigjmp_buf __env, int __val)
__THROW __attribute__ ((__noreturn__));
#define setjmp(env) __sigsetjmp(env,0)
#define sigsetjmp(a,b) __sigsetjmp(a,b)
#endif
#endif
|