162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2012 ARM Ltd. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci#ifndef __ASM_SIGNAL32_H 662306a36Sopenharmony_ci#define __ASM_SIGNAL32_H 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifdef CONFIG_COMPAT 962306a36Sopenharmony_ci#include <linux/compat.h> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_cistruct compat_sigcontext { 1262306a36Sopenharmony_ci /* We always set these two fields to 0 */ 1362306a36Sopenharmony_ci compat_ulong_t trap_no; 1462306a36Sopenharmony_ci compat_ulong_t error_code; 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci compat_ulong_t oldmask; 1762306a36Sopenharmony_ci compat_ulong_t arm_r0; 1862306a36Sopenharmony_ci compat_ulong_t arm_r1; 1962306a36Sopenharmony_ci compat_ulong_t arm_r2; 2062306a36Sopenharmony_ci compat_ulong_t arm_r3; 2162306a36Sopenharmony_ci compat_ulong_t arm_r4; 2262306a36Sopenharmony_ci compat_ulong_t arm_r5; 2362306a36Sopenharmony_ci compat_ulong_t arm_r6; 2462306a36Sopenharmony_ci compat_ulong_t arm_r7; 2562306a36Sopenharmony_ci compat_ulong_t arm_r8; 2662306a36Sopenharmony_ci compat_ulong_t arm_r9; 2762306a36Sopenharmony_ci compat_ulong_t arm_r10; 2862306a36Sopenharmony_ci compat_ulong_t arm_fp; 2962306a36Sopenharmony_ci compat_ulong_t arm_ip; 3062306a36Sopenharmony_ci compat_ulong_t arm_sp; 3162306a36Sopenharmony_ci compat_ulong_t arm_lr; 3262306a36Sopenharmony_ci compat_ulong_t arm_pc; 3362306a36Sopenharmony_ci compat_ulong_t arm_cpsr; 3462306a36Sopenharmony_ci compat_ulong_t fault_address; 3562306a36Sopenharmony_ci}; 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_cistruct compat_ucontext { 3862306a36Sopenharmony_ci compat_ulong_t uc_flags; 3962306a36Sopenharmony_ci compat_uptr_t uc_link; 4062306a36Sopenharmony_ci compat_stack_t uc_stack; 4162306a36Sopenharmony_ci struct compat_sigcontext uc_mcontext; 4262306a36Sopenharmony_ci compat_sigset_t uc_sigmask; 4362306a36Sopenharmony_ci int __unused[32 - (sizeof(compat_sigset_t) / sizeof(int))]; 4462306a36Sopenharmony_ci compat_ulong_t uc_regspace[128] __attribute__((__aligned__(8))); 4562306a36Sopenharmony_ci}; 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_cistruct compat_sigframe { 4862306a36Sopenharmony_ci struct compat_ucontext uc; 4962306a36Sopenharmony_ci compat_ulong_t retcode[2]; 5062306a36Sopenharmony_ci}; 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_cistruct compat_rt_sigframe { 5362306a36Sopenharmony_ci struct compat_siginfo info; 5462306a36Sopenharmony_ci struct compat_sigframe sig; 5562306a36Sopenharmony_ci}; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ciint compat_setup_frame(int usig, struct ksignal *ksig, sigset_t *set, 5862306a36Sopenharmony_ci struct pt_regs *regs); 5962306a36Sopenharmony_ciint compat_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set, 6062306a36Sopenharmony_ci struct pt_regs *regs); 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_civoid compat_setup_restart_syscall(struct pt_regs *regs); 6362306a36Sopenharmony_ci#else 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_cistatic inline int compat_setup_frame(int usid, struct ksignal *ksig, 6662306a36Sopenharmony_ci sigset_t *set, struct pt_regs *regs) 6762306a36Sopenharmony_ci{ 6862306a36Sopenharmony_ci return -ENOSYS; 6962306a36Sopenharmony_ci} 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_cistatic inline int compat_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set, 7262306a36Sopenharmony_ci struct pt_regs *regs) 7362306a36Sopenharmony_ci{ 7462306a36Sopenharmony_ci return -ENOSYS; 7562306a36Sopenharmony_ci} 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_cistatic inline void compat_setup_restart_syscall(struct pt_regs *regs) 7862306a36Sopenharmony_ci{ 7962306a36Sopenharmony_ci} 8062306a36Sopenharmony_ci#endif /* CONFIG_COMPAT */ 8162306a36Sopenharmony_ci#endif /* __ASM_SIGNAL32_H */ 82