18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (C) 2012 ARM Ltd. 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci#ifndef __ASM_SIGNAL32_H 68c2ecf20Sopenharmony_ci#define __ASM_SIGNAL32_H 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#ifdef CONFIG_COMPAT 98c2ecf20Sopenharmony_ci#include <linux/compat.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_cistruct compat_sigcontext { 128c2ecf20Sopenharmony_ci /* We always set these two fields to 0 */ 138c2ecf20Sopenharmony_ci compat_ulong_t trap_no; 148c2ecf20Sopenharmony_ci compat_ulong_t error_code; 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci compat_ulong_t oldmask; 178c2ecf20Sopenharmony_ci compat_ulong_t arm_r0; 188c2ecf20Sopenharmony_ci compat_ulong_t arm_r1; 198c2ecf20Sopenharmony_ci compat_ulong_t arm_r2; 208c2ecf20Sopenharmony_ci compat_ulong_t arm_r3; 218c2ecf20Sopenharmony_ci compat_ulong_t arm_r4; 228c2ecf20Sopenharmony_ci compat_ulong_t arm_r5; 238c2ecf20Sopenharmony_ci compat_ulong_t arm_r6; 248c2ecf20Sopenharmony_ci compat_ulong_t arm_r7; 258c2ecf20Sopenharmony_ci compat_ulong_t arm_r8; 268c2ecf20Sopenharmony_ci compat_ulong_t arm_r9; 278c2ecf20Sopenharmony_ci compat_ulong_t arm_r10; 288c2ecf20Sopenharmony_ci compat_ulong_t arm_fp; 298c2ecf20Sopenharmony_ci compat_ulong_t arm_ip; 308c2ecf20Sopenharmony_ci compat_ulong_t arm_sp; 318c2ecf20Sopenharmony_ci compat_ulong_t arm_lr; 328c2ecf20Sopenharmony_ci compat_ulong_t arm_pc; 338c2ecf20Sopenharmony_ci compat_ulong_t arm_cpsr; 348c2ecf20Sopenharmony_ci compat_ulong_t fault_address; 358c2ecf20Sopenharmony_ci}; 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_cistruct compat_ucontext { 388c2ecf20Sopenharmony_ci compat_ulong_t uc_flags; 398c2ecf20Sopenharmony_ci compat_uptr_t uc_link; 408c2ecf20Sopenharmony_ci compat_stack_t uc_stack; 418c2ecf20Sopenharmony_ci struct compat_sigcontext uc_mcontext; 428c2ecf20Sopenharmony_ci compat_sigset_t uc_sigmask; 438c2ecf20Sopenharmony_ci int __unused[32 - (sizeof(compat_sigset_t) / sizeof(int))]; 448c2ecf20Sopenharmony_ci compat_ulong_t uc_regspace[128] __attribute__((__aligned__(8))); 458c2ecf20Sopenharmony_ci}; 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_cistruct compat_sigframe { 488c2ecf20Sopenharmony_ci struct compat_ucontext uc; 498c2ecf20Sopenharmony_ci compat_ulong_t retcode[2]; 508c2ecf20Sopenharmony_ci}; 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_cistruct compat_rt_sigframe { 538c2ecf20Sopenharmony_ci struct compat_siginfo info; 548c2ecf20Sopenharmony_ci struct compat_sigframe sig; 558c2ecf20Sopenharmony_ci}; 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ciint compat_setup_frame(int usig, struct ksignal *ksig, sigset_t *set, 588c2ecf20Sopenharmony_ci struct pt_regs *regs); 598c2ecf20Sopenharmony_ciint compat_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set, 608c2ecf20Sopenharmony_ci struct pt_regs *regs); 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_civoid compat_setup_restart_syscall(struct pt_regs *regs); 638c2ecf20Sopenharmony_ci#else 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_cistatic inline int compat_setup_frame(int usid, struct ksignal *ksig, 668c2ecf20Sopenharmony_ci sigset_t *set, struct pt_regs *regs) 678c2ecf20Sopenharmony_ci{ 688c2ecf20Sopenharmony_ci return -ENOSYS; 698c2ecf20Sopenharmony_ci} 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_cistatic inline int compat_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set, 728c2ecf20Sopenharmony_ci struct pt_regs *regs) 738c2ecf20Sopenharmony_ci{ 748c2ecf20Sopenharmony_ci return -ENOSYS; 758c2ecf20Sopenharmony_ci} 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_cistatic inline void compat_setup_restart_syscall(struct pt_regs *regs) 788c2ecf20Sopenharmony_ci{ 798c2ecf20Sopenharmony_ci} 808c2ecf20Sopenharmony_ci#endif /* CONFIG_COMPAT */ 818c2ecf20Sopenharmony_ci#endif /* __ASM_SIGNAL32_H */ 82