[MIPS] signal: clean up sigframe structure
[safe/jmp/linux-2.6] / arch / mips / kernel / signal-common.h
1 /*
2  * This file is subject to the terms and conditions of the GNU General Public
3  * License.  See the file "COPYING" in the main directory of this archive
4  * for more details.
5  *
6  * Copyright (C) 1991, 1992  Linus Torvalds
7  * Copyright (C) 1994 - 2000  Ralf Baechle
8  * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
9  */
10
11 #ifndef __SIGNAL_COMMON_H
12 #define __SIGNAL_COMMON_H
13
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 /*
41  * handle hardware context
42  */
43 extern int setup_sigcontext(struct pt_regs *, struct sigcontext __user *);
44 extern int restore_sigcontext(struct pt_regs *, struct sigcontext __user *);
45
46 /*
47  * Determine which stack to use..
48  */
49 extern void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
50                                  size_t frame_size);
51 /*
52  * install trampoline code to get back from the sig handler
53  */
54 extern int install_sigtramp(unsigned int __user *tramp, unsigned int syscall);
55
56 #endif  /* __SIGNAL_COMMON_H */