xref: /linux/arch/arm64/include/asm/signal32.h (revision 3dd681d9)
1*3dd681d9SWill Deacon /*
2*3dd681d9SWill Deacon  * Copyright (C) 2012 ARM Ltd.
3*3dd681d9SWill Deacon  *
4*3dd681d9SWill Deacon  * This program is free software; you can redistribute it and/or modify
5*3dd681d9SWill Deacon  * it under the terms of the GNU General Public License version 2 as
6*3dd681d9SWill Deacon  * published by the Free Software Foundation.
7*3dd681d9SWill Deacon  *
8*3dd681d9SWill Deacon  * This program is distributed in the hope that it will be useful,
9*3dd681d9SWill Deacon  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10*3dd681d9SWill Deacon  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11*3dd681d9SWill Deacon  * GNU General Public License for more details.
12*3dd681d9SWill Deacon  *
13*3dd681d9SWill Deacon  * You should have received a copy of the GNU General Public License
14*3dd681d9SWill Deacon  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15*3dd681d9SWill Deacon  */
16*3dd681d9SWill Deacon #ifndef __ASM_SIGNAL32_H
17*3dd681d9SWill Deacon #define __ASM_SIGNAL32_H
18*3dd681d9SWill Deacon 
19*3dd681d9SWill Deacon #ifdef __KERNEL__
20*3dd681d9SWill Deacon #ifdef CONFIG_COMPAT
21*3dd681d9SWill Deacon #include <linux/compat.h>
22*3dd681d9SWill Deacon 
23*3dd681d9SWill Deacon #define AARCH32_KERN_SIGRET_CODE_OFFSET	0x500
24*3dd681d9SWill Deacon 
25*3dd681d9SWill Deacon extern const compat_ulong_t aarch32_sigret_code[6];
26*3dd681d9SWill Deacon 
27*3dd681d9SWill Deacon int compat_setup_frame(int usig, struct k_sigaction *ka, sigset_t *set,
28*3dd681d9SWill Deacon 		       struct pt_regs *regs);
29*3dd681d9SWill Deacon int compat_setup_rt_frame(int usig, struct k_sigaction *ka, siginfo_t *info,
30*3dd681d9SWill Deacon 			  sigset_t *set, struct pt_regs *regs);
31*3dd681d9SWill Deacon 
32*3dd681d9SWill Deacon void compat_setup_restart_syscall(struct pt_regs *regs);
33*3dd681d9SWill Deacon #else
34*3dd681d9SWill Deacon 
35*3dd681d9SWill Deacon static inline int compat_setup_frame(int usid, struct k_sigaction *ka,
36*3dd681d9SWill Deacon 				     sigset_t *set, struct pt_regs *regs)
37*3dd681d9SWill Deacon {
38*3dd681d9SWill Deacon 	return -ENOSYS;
39*3dd681d9SWill Deacon }
40*3dd681d9SWill Deacon 
41*3dd681d9SWill Deacon static inline int compat_setup_rt_frame(int usig, struct k_sigaction *ka,
42*3dd681d9SWill Deacon 					siginfo_t *info, sigset_t *set,
43*3dd681d9SWill Deacon 					struct pt_regs *regs)
44*3dd681d9SWill Deacon {
45*3dd681d9SWill Deacon 	return -ENOSYS;
46*3dd681d9SWill Deacon }
47*3dd681d9SWill Deacon 
48*3dd681d9SWill Deacon static inline void compat_setup_restart_syscall(struct pt_regs *regs)
49*3dd681d9SWill Deacon {
50*3dd681d9SWill Deacon }
51*3dd681d9SWill Deacon #endif /* CONFIG_COMPAT */
52*3dd681d9SWill Deacon #endif /* __KERNEL__ */
53*3dd681d9SWill Deacon #endif /* __ASM_SIGNAL32_H */
54