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 */ 57