|
1 #ifndef _ASM_X86_SIGFRAME_H |
|
2 #define _ASM_X86_SIGFRAME_H |
|
3 |
|
4 #include <asm/sigcontext.h> |
|
5 #include <asm/siginfo.h> |
|
6 #include <asm/ucontext.h> |
|
7 |
|
8 #ifdef CONFIG_X86_32 |
|
9 #define sigframe_ia32 sigframe |
|
10 #define rt_sigframe_ia32 rt_sigframe |
|
11 #define sigcontext_ia32 sigcontext |
|
12 #define _fpstate_ia32 _fpstate |
|
13 #define ucontext_ia32 ucontext |
|
14 #else /* !CONFIG_X86_32 */ |
|
15 |
|
16 #ifdef CONFIG_IA32_EMULATION |
|
17 #include <asm/ia32.h> |
|
18 #endif /* CONFIG_IA32_EMULATION */ |
|
19 |
|
20 #endif /* CONFIG_X86_32 */ |
|
21 |
|
22 #if defined(CONFIG_X86_32) || defined(CONFIG_IA32_EMULATION) |
|
23 struct sigframe_ia32 { |
|
24 u32 pretcode; |
|
25 int sig; |
|
26 struct sigcontext_ia32 sc; |
|
27 /* |
|
28 * fpstate is unused. fpstate is moved/allocated after |
|
29 * retcode[] below. This movement allows to have the FP state and the |
|
30 * future state extensions (xsave) stay together. |
|
31 * And at the same time retaining the unused fpstate, prevents changing |
|
32 * the offset of extramask[] in the sigframe and thus prevent any |
|
33 * legacy application accessing/modifying it. |
|
34 */ |
|
35 struct _fpstate_ia32 fpstate_unused; |
|
36 #ifdef CONFIG_IA32_EMULATION |
|
37 unsigned int extramask[_COMPAT_NSIG_WORDS-1]; |
|
38 #else /* !CONFIG_IA32_EMULATION */ |
|
39 unsigned long extramask[_NSIG_WORDS-1]; |
|
40 #endif /* CONFIG_IA32_EMULATION */ |
|
41 char retcode[8]; |
|
42 /* fp state follows here */ |
|
43 }; |
|
44 |
|
45 struct rt_sigframe_ia32 { |
|
46 u32 pretcode; |
|
47 int sig; |
|
48 u32 pinfo; |
|
49 u32 puc; |
|
50 #ifdef CONFIG_IA32_EMULATION |
|
51 compat_siginfo_t info; |
|
52 #else /* !CONFIG_IA32_EMULATION */ |
|
53 struct siginfo info; |
|
54 #endif /* CONFIG_IA32_EMULATION */ |
|
55 struct ucontext_ia32 uc; |
|
56 char retcode[8]; |
|
57 /* fp state follows here */ |
|
58 }; |
|
59 #endif /* defined(CONFIG_X86_32) || defined(CONFIG_IA32_EMULATION) */ |
|
60 |
|
61 #ifdef CONFIG_X86_64 |
|
62 struct rt_sigframe { |
|
63 char __user *pretcode; |
|
64 struct ucontext uc; |
|
65 struct siginfo info; |
|
66 /* fp state follows here */ |
|
67 }; |
|
68 #endif /* CONFIG_X86_64 */ |
|
69 |
|
70 #endif /* _ASM_X86_SIGFRAME_H */ |