diff options
Diffstat (limited to 'arch/mips/kernel/signal-common.h')
-rw-r--r-- | arch/mips/kernel/signal-common.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/arch/mips/kernel/signal-common.h b/arch/mips/kernel/signal-common.h index 03d2b603fb84..6700bde06053 100644 --- a/arch/mips/kernel/signal-common.h +++ b/arch/mips/kernel/signal-common.h | |||
@@ -12,6 +12,32 @@ | |||
12 | #define __SIGNAL_COMMON_H | 12 | #define __SIGNAL_COMMON_H |
13 | 13 | ||
14 | /* | 14 | /* |
15 | * Horribly complicated - with the bloody RM9000 workarounds enabled | ||
16 | * the signal trampolines is moving to the end of the structure so we can | ||
17 | * increase the alignment without breaking software compatibility. | ||
18 | */ | ||
19 | #if ICACHE_REFILLS_WORKAROUND_WAR == 0 | ||
20 | |||
21 | struct sigframe { | ||
22 | u32 sf_ass[4]; /* argument save space for o32 */ | ||
23 | u32 sf_code[2]; /* signal trampoline */ | ||
24 | struct sigcontext sf_sc; | ||
25 | sigset_t sf_mask; | ||
26 | }; | ||
27 | |||
28 | #else /* ICACHE_REFILLS_WORKAROUND_WAR */ | ||
29 | |||
30 | struct sigframe { | ||
31 | u32 sf_ass[4]; /* argument save space for o32 */ | ||
32 | u32 sf_pad[2]; | ||
33 | struct sigcontext sf_sc; /* hw context */ | ||
34 | sigset_t sf_mask; | ||
35 | u32 sf_code[8] ____cacheline_aligned; /* signal trampoline */ | ||
36 | }; | ||
37 | |||
38 | #endif /* !ICACHE_REFILLS_WORKAROUND_WAR */ | ||
39 | |||
40 | /* | ||
15 | * handle hardware context | 41 | * handle hardware context |
16 | */ | 42 | */ |
17 | extern int setup_sigcontext(struct pt_regs *, struct sigcontext __user *); | 43 | extern int setup_sigcontext(struct pt_regs *, struct sigcontext __user *); |