linux/arch/arm64/include/asm/signal32.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Copyright (C) 2012 ARM Ltd.
   4 */
   5#ifndef __ASM_SIGNAL32_H
   6#define __ASM_SIGNAL32_H
   7
   8#ifdef CONFIG_COMPAT
   9#include <linux/compat.h>
  10
  11struct compat_sigcontext {
  12        /* We always set these two fields to 0 */
  13        compat_ulong_t                  trap_no;
  14        compat_ulong_t                  error_code;
  15
  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;
  35};
  36
  37struct 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)));
  45};
  46
  47struct compat_sigframe {
  48        struct compat_ucontext  uc;
  49        compat_ulong_t          retcode[2];
  50};
  51
  52struct compat_rt_sigframe {
  53        struct compat_siginfo info;
  54        struct compat_sigframe sig;
  55};
  56
  57int compat_setup_frame(int usig, struct ksignal *ksig, sigset_t *set,
  58                       struct pt_regs *regs);
  59int compat_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set,
  60                          struct pt_regs *regs);
  61
  62void compat_setup_restart_syscall(struct pt_regs *regs);
  63#else
  64
  65static inline int compat_setup_frame(int usid, struct ksignal *ksig,
  66                                     sigset_t *set, struct pt_regs *regs)
  67{
  68        return -ENOSYS;
  69}
  70
  71static inline int compat_setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set,
  72                                        struct pt_regs *regs)
  73{
  74        return -ENOSYS;
  75}
  76
  77static inline void compat_setup_restart_syscall(struct pt_regs *regs)
  78{
  79}
  80#endif /* CONFIG_COMPAT */
  81#endif /* __ASM_SIGNAL32_H */
  82