aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel/signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/kernel/signal.c')
-rw-r--r--arch/mips/kernel/signal.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c
index 54398af2371f..e7b04928caec 100644
--- a/arch/mips/kernel/signal.c
+++ b/arch/mips/kernel/signal.c
@@ -36,8 +36,20 @@
36 36
37#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) 37#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
38 38
39/*
40 * Horribly complicated - with the bloody RM9000 workarounds enabled
41 * the signal trampolines is moving to the end of the structure so we can
42 * increase the alignment without breaking software compatibility.
43 */
39#if ICACHE_REFILLS_WORKAROUND_WAR == 0 44#if ICACHE_REFILLS_WORKAROUND_WAR == 0
40 45
46struct sigframe {
47 u32 sf_ass[4]; /* argument save space for o32 */
48 u32 sf_code[2]; /* signal trampoline */
49 struct sigcontext sf_sc;
50 sigset_t sf_mask;
51};
52
41struct rt_sigframe { 53struct rt_sigframe {
42 u32 rs_ass[4]; /* argument save space for o32 */ 54 u32 rs_ass[4]; /* argument save space for o32 */
43 u32 rs_code[2]; /* signal trampoline */ 55 u32 rs_code[2]; /* signal trampoline */
@@ -47,6 +59,14 @@ struct rt_sigframe {
47 59
48#else 60#else
49 61
62struct sigframe {
63 u32 sf_ass[4]; /* argument save space for o32 */
64 u32 sf_pad[2];
65 struct sigcontext sf_sc; /* hw context */
66 sigset_t sf_mask;
67 u32 sf_code[8] ____cacheline_aligned; /* signal trampoline */
68};
69
50struct rt_sigframe { 70struct rt_sigframe {
51 u32 rs_ass[4]; /* argument save space for o32 */ 71 u32 rs_ass[4]; /* argument save space for o32 */
52 u32 rs_pad[2]; 72 u32 rs_pad[2];