diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sparc/include/asm/Kbuild | 2 | ||||
-rw-r--r-- | arch/sparc/include/asm/sigcontext.h | 102 | ||||
-rw-r--r-- | arch/sparc/include/asm/sigcontext_32.h | 59 | ||||
-rw-r--r-- | arch/sparc/include/asm/sigcontext_64.h | 87 |
4 files changed, 95 insertions, 155 deletions
diff --git a/arch/sparc/include/asm/Kbuild b/arch/sparc/include/asm/Kbuild index fe724d47eb09..b0a3814a8162 100644 --- a/arch/sparc/include/asm/Kbuild +++ b/arch/sparc/include/asm/Kbuild | |||
@@ -5,8 +5,6 @@ header-y += ipcbuf_32.h | |||
5 | header-y += ipcbuf_64.h | 5 | header-y += ipcbuf_64.h |
6 | header-y += ptrace_32.h | 6 | header-y += ptrace_32.h |
7 | header-y += ptrace_64.h | 7 | header-y += ptrace_64.h |
8 | header-y += sigcontext_32.h | ||
9 | header-y += sigcontext_64.h | ||
10 | header-y += siginfo_32.h | 8 | header-y += siginfo_32.h |
11 | header-y += siginfo_64.h | 9 | header-y += siginfo_64.h |
12 | 10 | ||
diff --git a/arch/sparc/include/asm/sigcontext.h b/arch/sparc/include/asm/sigcontext.h index e92de7e286b5..a1607d180354 100644 --- a/arch/sparc/include/asm/sigcontext.h +++ b/arch/sparc/include/asm/sigcontext.h | |||
@@ -1,8 +1,96 @@ | |||
1 | #ifndef ___ASM_SPARC_SIGCONTEXT_H | 1 | #ifndef __SPARC_SIGCONTEXT_H |
2 | #define ___ASM_SPARC_SIGCONTEXT_H | 2 | #define __SPARC_SIGCONTEXT_H |
3 | #if defined(__sparc__) && defined(__arch64__) | 3 | |
4 | #include <asm/sigcontext_64.h> | 4 | #ifdef __KERNEL__ |
5 | #include <asm/ptrace.h> | ||
6 | |||
7 | #ifndef __ASSEMBLY__ | ||
8 | |||
9 | #define __SUNOS_MAXWIN 31 | ||
10 | |||
11 | /* This is what SunOS does, so shall I unless we use new 32bit signals or rt signals. */ | ||
12 | struct sigcontext32 { | ||
13 | int sigc_onstack; /* state to restore */ | ||
14 | int sigc_mask; /* sigmask to restore */ | ||
15 | int sigc_sp; /* stack pointer */ | ||
16 | int sigc_pc; /* program counter */ | ||
17 | int sigc_npc; /* next program counter */ | ||
18 | int sigc_psr; /* for condition codes etc */ | ||
19 | int sigc_g1; /* User uses these two registers */ | ||
20 | int sigc_o0; /* within the trampoline code. */ | ||
21 | |||
22 | /* Now comes information regarding the users window set | ||
23 | * at the time of the signal. | ||
24 | */ | ||
25 | int sigc_oswins; /* outstanding windows */ | ||
26 | |||
27 | /* stack ptrs for each regwin buf */ | ||
28 | unsigned sigc_spbuf[__SUNOS_MAXWIN]; | ||
29 | |||
30 | /* Windows to restore after signal */ | ||
31 | struct reg_window32 sigc_wbuf[__SUNOS_MAXWIN]; | ||
32 | }; | ||
33 | |||
34 | |||
35 | /* This is what we use for 32bit new non-rt signals. */ | ||
36 | |||
37 | typedef struct { | ||
38 | struct { | ||
39 | unsigned int psr; | ||
40 | unsigned int pc; | ||
41 | unsigned int npc; | ||
42 | unsigned int y; | ||
43 | unsigned int u_regs[16]; /* globals and ins */ | ||
44 | } si_regs; | ||
45 | int si_mask; | ||
46 | } __siginfo32_t; | ||
47 | |||
48 | #ifdef CONFIG_SPARC64 | ||
49 | typedef struct { | ||
50 | unsigned int si_float_regs [64]; | ||
51 | unsigned long si_fsr; | ||
52 | unsigned long si_gsr; | ||
53 | unsigned long si_fprs; | ||
54 | } __siginfo_fpu_t; | ||
55 | |||
56 | /* This is what SunOS doesn't, so we have to write this alone | ||
57 | and do it properly. */ | ||
58 | struct sigcontext { | ||
59 | /* The size of this array has to match SI_MAX_SIZE from siginfo.h */ | ||
60 | char sigc_info[128]; | ||
61 | struct { | ||
62 | unsigned long u_regs[16]; /* globals and ins */ | ||
63 | unsigned long tstate; | ||
64 | unsigned long tpc; | ||
65 | unsigned long tnpc; | ||
66 | unsigned int y; | ||
67 | unsigned int fprs; | ||
68 | } sigc_regs; | ||
69 | __siginfo_fpu_t * sigc_fpu_save; | ||
70 | struct { | ||
71 | void * ss_sp; | ||
72 | int ss_flags; | ||
73 | unsigned long ss_size; | ||
74 | } sigc_stack; | ||
75 | unsigned long sigc_mask; | ||
76 | }; | ||
77 | |||
5 | #else | 78 | #else |
6 | #include <asm/sigcontext_32.h> | 79 | |
7 | #endif | 80 | typedef struct { |
8 | #endif | 81 | unsigned long si_float_regs [32]; |
82 | unsigned long si_fsr; | ||
83 | unsigned long si_fpqdepth; | ||
84 | struct { | ||
85 | unsigned long *insn_addr; | ||
86 | unsigned long insn; | ||
87 | } si_fpqueue [16]; | ||
88 | } __siginfo_fpu_t; | ||
89 | #endif /* (CONFIG_SPARC64) */ | ||
90 | |||
91 | |||
92 | #endif /* !(__ASSEMBLY__) */ | ||
93 | |||
94 | #endif /* (__KERNEL__) */ | ||
95 | |||
96 | #endif /* !(__SPARC_SIGCONTEXT_H) */ | ||
diff --git a/arch/sparc/include/asm/sigcontext_32.h b/arch/sparc/include/asm/sigcontext_32.h deleted file mode 100644 index 756e996410b1..000000000000 --- a/arch/sparc/include/asm/sigcontext_32.h +++ /dev/null | |||
@@ -1,59 +0,0 @@ | |||
1 | #ifndef __SPARC_SIGCONTEXT_H | ||
2 | #define __SPARC_SIGCONTEXT_H | ||
3 | |||
4 | #ifdef __KERNEL__ | ||
5 | #include <asm/ptrace.h> | ||
6 | |||
7 | #ifndef __ASSEMBLY__ | ||
8 | |||
9 | #define __SUNOS_MAXWIN 31 | ||
10 | |||
11 | /* This is what SunOS does, so shall I. */ | ||
12 | struct sigcontext32 { | ||
13 | int sigc_onstack; /* state to restore */ | ||
14 | int sigc_mask; /* sigmask to restore */ | ||
15 | int sigc_sp; /* stack pointer */ | ||
16 | int sigc_pc; /* program counter */ | ||
17 | int sigc_npc; /* next program counter */ | ||
18 | int sigc_psr; /* for condition codes etc */ | ||
19 | int sigc_g1; /* User uses these two registers */ | ||
20 | int sigc_o0; /* within the trampoline code. */ | ||
21 | |||
22 | /* Now comes information regarding the users window set | ||
23 | * at the time of the signal. | ||
24 | */ | ||
25 | int sigc_oswins; /* outstanding windows */ | ||
26 | |||
27 | /* stack ptrs for each regwin buf */ | ||
28 | char *sigc_spbuf[__SUNOS_MAXWIN]; | ||
29 | |||
30 | /* Windows to restore after signal */ | ||
31 | struct reg_window32 sigc_wbuf[__SUNOS_MAXWIN]; | ||
32 | }; | ||
33 | |||
34 | typedef struct { | ||
35 | struct { | ||
36 | unsigned long psr; | ||
37 | unsigned long pc; | ||
38 | unsigned long npc; | ||
39 | unsigned long y; | ||
40 | unsigned long u_regs[16]; /* globals and ins */ | ||
41 | } si_regs; | ||
42 | int si_mask; | ||
43 | } __siginfo32_t; | ||
44 | |||
45 | typedef struct { | ||
46 | unsigned long si_float_regs [32]; | ||
47 | unsigned long si_fsr; | ||
48 | unsigned long si_fpqdepth; | ||
49 | struct { | ||
50 | unsigned long *insn_addr; | ||
51 | unsigned long insn; | ||
52 | } si_fpqueue [16]; | ||
53 | } __siginfo_fpu_t; | ||
54 | |||
55 | #endif /* !(__ASSEMBLY__) */ | ||
56 | |||
57 | #endif /* (__KERNEL__) */ | ||
58 | |||
59 | #endif /* !(__SPARC_SIGCONTEXT_H) */ | ||
diff --git a/arch/sparc/include/asm/sigcontext_64.h b/arch/sparc/include/asm/sigcontext_64.h deleted file mode 100644 index 1c868d680cfc..000000000000 --- a/arch/sparc/include/asm/sigcontext_64.h +++ /dev/null | |||
@@ -1,87 +0,0 @@ | |||
1 | #ifndef __SPARC64_SIGCONTEXT_H | ||
2 | #define __SPARC64_SIGCONTEXT_H | ||
3 | |||
4 | #ifdef __KERNEL__ | ||
5 | #include <asm/ptrace.h> | ||
6 | #endif | ||
7 | |||
8 | #ifndef __ASSEMBLY__ | ||
9 | |||
10 | #ifdef __KERNEL__ | ||
11 | |||
12 | #define __SUNOS_MAXWIN 31 | ||
13 | |||
14 | /* This is what SunOS does, so shall I unless we use new 32bit signals or rt signals. */ | ||
15 | struct sigcontext32 { | ||
16 | int sigc_onstack; /* state to restore */ | ||
17 | int sigc_mask; /* sigmask to restore */ | ||
18 | int sigc_sp; /* stack pointer */ | ||
19 | int sigc_pc; /* program counter */ | ||
20 | int sigc_npc; /* next program counter */ | ||
21 | int sigc_psr; /* for condition codes etc */ | ||
22 | int sigc_g1; /* User uses these two registers */ | ||
23 | int sigc_o0; /* within the trampoline code. */ | ||
24 | |||
25 | /* Now comes information regarding the users window set | ||
26 | * at the time of the signal. | ||
27 | */ | ||
28 | int sigc_oswins; /* outstanding windows */ | ||
29 | |||
30 | /* stack ptrs for each regwin buf */ | ||
31 | unsigned sigc_spbuf[__SUNOS_MAXWIN]; | ||
32 | |||
33 | /* Windows to restore after signal */ | ||
34 | struct reg_window32 sigc_wbuf[__SUNOS_MAXWIN]; | ||
35 | }; | ||
36 | |||
37 | #endif | ||
38 | |||
39 | #ifdef __KERNEL__ | ||
40 | |||
41 | /* This is what we use for 32bit new non-rt signals. */ | ||
42 | |||
43 | typedef struct { | ||
44 | struct { | ||
45 | unsigned int psr; | ||
46 | unsigned int pc; | ||
47 | unsigned int npc; | ||
48 | unsigned int y; | ||
49 | unsigned int u_regs[16]; /* globals and ins */ | ||
50 | } si_regs; | ||
51 | int si_mask; | ||
52 | } __siginfo32_t; | ||
53 | |||
54 | #endif | ||
55 | |||
56 | typedef struct { | ||
57 | unsigned int si_float_regs [64]; | ||
58 | unsigned long si_fsr; | ||
59 | unsigned long si_gsr; | ||
60 | unsigned long si_fprs; | ||
61 | } __siginfo_fpu_t; | ||
62 | |||
63 | /* This is what SunOS doesn't, so we have to write this alone | ||
64 | and do it properly. */ | ||
65 | struct sigcontext { | ||
66 | /* The size of this array has to match SI_MAX_SIZE from siginfo.h */ | ||
67 | char sigc_info[128]; | ||
68 | struct { | ||
69 | unsigned long u_regs[16]; /* globals and ins */ | ||
70 | unsigned long tstate; | ||
71 | unsigned long tpc; | ||
72 | unsigned long tnpc; | ||
73 | unsigned int y; | ||
74 | unsigned int fprs; | ||
75 | } sigc_regs; | ||
76 | __siginfo_fpu_t * sigc_fpu_save; | ||
77 | struct { | ||
78 | void * ss_sp; | ||
79 | int ss_flags; | ||
80 | unsigned long ss_size; | ||
81 | } sigc_stack; | ||
82 | unsigned long sigc_mask; | ||
83 | }; | ||
84 | |||
85 | #endif /* !(__ASSEMBLY__) */ | ||
86 | |||
87 | #endif /* !(__SPARC64_SIGCONTEXT_H) */ | ||