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
6 * Copyright (C) 1991, 1992 Linus Torvalds
7 * Copyright (C) 1994 - 2000 Ralf Baechle
8 * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
11 #ifndef __SIGNAL_COMMON_H
12 #define __SIGNAL_COMMON_H
14 /* #define DEBUG_SIG */
17 # define DEBUGP(fmt, args...) printk("%s: " fmt, __FUNCTION__ , ##args)
19 # define DEBUGP(fmt, args...)
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.
27 #if ICACHE_REFILLS_WORKAROUND_WAR == 0
30 u32 sf_ass[4]; /* argument save space for o32 */
31 u32 sf_code[2]; /* signal trampoline */
32 struct sigcontext sf_sc;
36 #else /* ICACHE_REFILLS_WORKAROUND_WAR */
39 u32 sf_ass[4]; /* argument save space for o32 */
41 struct sigcontext sf_sc; /* hw context */
43 u32 sf_code[8] ____cacheline_aligned; /* signal trampoline */
46 #endif /* !ICACHE_REFILLS_WORKAROUND_WAR */
49 * handle hardware context
51 extern int setup_sigcontext(struct pt_regs *, struct sigcontext __user *);
52 extern int restore_sigcontext(struct pt_regs *, struct sigcontext __user *);
55 * Determine which stack to use..
57 extern void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
60 * install trampoline code to get back from the sig handler
62 extern int install_sigtramp(unsigned int __user *tramp, unsigned int syscall);
64 #endif /* __SIGNAL_COMMON_H */