Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[linux-drm-fsl-dcu.git] / 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 /* #define DEBUG_SIG */
15
16 #ifdef DEBUG_SIG
17 #  define DEBUGP(fmt, args...) printk("%s: " fmt, __FUNCTION__ , ##args)
18 #else
19 #  define DEBUGP(fmt, args...)
20 #endif
21
22 /*
23  * Horribly complicated - with the bloody RM9000 workarounds enabled
24  * the signal trampolines is moving to the end of the structure so we can
25  * increase the alignment without breaking software compatibility.
26  */
27 #if ICACHE_REFILLS_WORKAROUND_WAR == 0
28
29 struct sigframe {
30         u32 sf_ass[4];          /* argument save space for o32 */
31         u32 sf_code[2];         /* signal trampoline */
32         struct sigcontext sf_sc;
33         sigset_t sf_mask;
34 };
35
36 #else  /* ICACHE_REFILLS_WORKAROUND_WAR */
37
38 struct sigframe {
39         u32 sf_ass[4];                  /* argument save space for o32 */
40         u32 sf_pad[2];
41         struct sigcontext sf_sc;        /* hw context */
42         sigset_t sf_mask;
43         u32 sf_code[8] ____cacheline_aligned;   /* signal trampoline */
44 };
45
46 #endif  /* !ICACHE_REFILLS_WORKAROUND_WAR */
47
48 /*
49  * handle hardware context
50  */
51 extern int setup_sigcontext(struct pt_regs *, struct sigcontext __user *);
52 extern int restore_sigcontext(struct pt_regs *, struct sigcontext __user *);
53
54 /*
55  * Determine which stack to use..
56  */
57 extern void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
58                                  size_t frame_size);
59 /*
60  * install trampoline code to get back from the sig handler
61  */
62 extern int install_sigtramp(unsigned int __user *tramp, unsigned int syscall);
63
64 #endif  /* __SIGNAL_COMMON_H */