Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 | ||
c3fc4ab3 FBH |
11 | #ifndef __SIGNAL_COMMON_H |
12 | #define __SIGNAL_COMMON_H | |
e50c0a8f | 13 | |
c0b9bae9 FBH |
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 | ||
c3fc4ab3 FBH |
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 *); | |
1da177e4 LT |
45 | |
46 | /* | |
47 | * Determine which stack to use.. | |
48 | */ | |
c3fc4ab3 FBH |
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); | |
02416dcf | 55 | |
c3fc4ab3 | 56 | #endif /* __SIGNAL_COMMON_H */ |