blob: 573c6c7fb88d96ad3fde1717fa0080de5d50bf3c (
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
|
#ifndef _SYS_UCONTEXT_H
#define _SYS_UCONTEXT_H
#include <asm/sigcontext.h>
#include <signal.h>
typedef struct sigcontext mcontext_t;
#if defined(__i386__) || defined(__arm__) || defined(__mips__) || defined(__mips64__) || defined(__powerpc__) || defined(__hppa__)
struct ucontext {
unsigned long uc_flags;
struct ucontext *uc_link;
stack_t uc_stack;
struct sigcontext uc_mcontext;
sigset_t uc_sigmask; /* mask last for extensibility */
};
#elif defined(__alpha__)
struct ucontext {
unsigned long uc_flags;
struct ucontext *uc_link;
unsigned long uc_osf_sigmask;
stack_t uc_stack;
struct sigcontext uc_mcontext;
sigset_t uc_sigmask; /* mask last for extensibility */
};
#elif defined(__sparc__) || defined(__sparc64__)
#define MC_TSTATE 0
#define MC_PC 1
#define MC_NPC 2
#define MC_Y 3
#define MC_G1 4
#define MC_G2 5
#define MC_G3 6
#define MC_G4 7
#define MC_G5 8
#define MC_G6 9
#define MC_G7 10
#define MC_O0 11
#define MC_O1 12
#define MC_O2 13
#define MC_O3 14
#define MC_O4 15
#define MC_O5 16
#define MC_O6 17
#define MC_O7 18
#define MC_NGREG 19
typedef unsigned long mc_greg_t;
typedef mc_greg_t mc_gregset_t[MC_NGREG];
#define MC_MAXFPQ 16
struct mc_fq {
unsigned long *mcfq_addr;
unsigned int mcfq_insn;
};
typedef struct mc_fpu {
union {
unsigned int sregs[32];
unsigned long dregs[32];
long double qregs[16];
} mcfpu_fregs;
unsigned long mcfpu_fsr;
unsigned long mcfpu_fprs;
unsigned long mcfpu_gsr;
struct mc_fq *mcfpu_fq;
unsigned char mcfpu_qcnt;
unsigned char mcfpu_qentsz;
unsigned char mcfpu_enab;
} mc_fpu_t;
typedef struct {
mc_gregset_t mc_gregs;
mc_greg_t mc_fp;
mc_greg_t mc_i7;
mc_fpu_t mc_fpregs;
} mcontext_t;
struct ucontext {
struct ucontext *uc_link;
unsigned long uc_flags;
sigset_t uc_sigmask;
mcontext_t uc_mcontext;
};
#elif defined(__s390__)
struct ucontext {
unsigned long uc_flags;
struct ucontext *uc_link;
stack_t uc_stack;
_sigregs uc_mcontext;
sigset_t uc_sigmask; /* mask last for extensibility */
};
#elif defined(__ia64__)
/* oh my god is this ugly! --fefe*/
struct ucontext {
struct sigcontext uc_mcontext;
};
#define uc_link uc_mcontext.sc_gr[0] /* wrong type; nobody cares */
#define uc_sigmask uc_mcontext.sc_sigmask
#define uc_stack uc_mcontext.sc_stack
#else
#error NEED TO PORT <sys/sigcontext.h>!
#endif
typedef struct ucontext ucontext_t;
#endif
|