1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Copyright (C) 2012 ARM Ltd.
5 #ifndef __ASM_SIGNAL32_H
6 #define __ASM_SIGNAL32_H
9 #include <linux/compat.h>
11 struct compat_sigcontext
{
12 /* We always set these two fields to 0 */
13 compat_ulong_t trap_no
;
14 compat_ulong_t error_code
;
16 compat_ulong_t oldmask
;
17 compat_ulong_t arm_r0
;
18 compat_ulong_t arm_r1
;
19 compat_ulong_t arm_r2
;
20 compat_ulong_t arm_r3
;
21 compat_ulong_t arm_r4
;
22 compat_ulong_t arm_r5
;
23 compat_ulong_t arm_r6
;
24 compat_ulong_t arm_r7
;
25 compat_ulong_t arm_r8
;
26 compat_ulong_t arm_r9
;
27 compat_ulong_t arm_r10
;
28 compat_ulong_t arm_fp
;
29 compat_ulong_t arm_ip
;
30 compat_ulong_t arm_sp
;
31 compat_ulong_t arm_lr
;
32 compat_ulong_t arm_pc
;
33 compat_ulong_t arm_cpsr
;
34 compat_ulong_t fault_address
;
37 struct compat_ucontext
{
38 compat_ulong_t uc_flags
;
39 compat_uptr_t uc_link
;
40 compat_stack_t uc_stack
;
41 struct compat_sigcontext uc_mcontext
;
42 compat_sigset_t uc_sigmask
;
43 int __unused
[32 - (sizeof(compat_sigset_t
) / sizeof(int))];
44 compat_ulong_t uc_regspace
[128] __attribute__((__aligned__(8)));
47 struct compat_sigframe
{
48 struct compat_ucontext uc
;
49 compat_ulong_t retcode
[2];
52 struct compat_rt_sigframe
{
53 struct compat_siginfo info
;
54 struct compat_sigframe sig
;
57 int compat_setup_frame(int usig
, struct ksignal
*ksig
, sigset_t
*set
,
58 struct pt_regs
*regs
);
59 int compat_setup_rt_frame(int usig
, struct ksignal
*ksig
, sigset_t
*set
,
60 struct pt_regs
*regs
);
62 void compat_setup_restart_syscall(struct pt_regs
*regs
);
65 static inline int compat_setup_frame(int usid
, struct ksignal
*ksig
,
66 sigset_t
*set
, struct pt_regs
*regs
)
71 static inline int compat_setup_rt_frame(int usig
, struct ksignal
*ksig
, sigset_t
*set
,
77 static inline void compat_setup_restart_syscall(struct pt_regs
*regs
)
80 #endif /* CONFIG_COMPAT */
81 #endif /* __ASM_SIGNAL32_H */