linux/arch/powerpc/kernel/ppc32.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2#ifndef _PPC64_PPC32_H
   3#define _PPC64_PPC32_H
   4
   5#include <linux/compat.h>
   6#include <asm/siginfo.h>
   7#include <asm/signal.h>
   8
   9/*
  10 * Data types and macros for providing 32b PowerPC support.
  11 */
  12
  13/* These are here to support 32-bit syscalls on a 64-bit kernel. */
  14
  15struct pt_regs32 {
  16        unsigned int gpr[32];
  17        unsigned int nip;
  18        unsigned int msr;
  19        unsigned int orig_gpr3;         /* Used for restarting system calls */
  20        unsigned int ctr;
  21        unsigned int link;
  22        unsigned int xer;
  23        unsigned int ccr;
  24        unsigned int mq;                /* 601 only (not used at present) */
  25        unsigned int trap;              /* Reason for being here */
  26        unsigned int dar;               /* Fault registers */
  27        unsigned int dsisr;
  28        unsigned int result;            /* Result of a system call */
  29};
  30
  31struct sigcontext32 {
  32        unsigned int    _unused[4];
  33        int             signal;
  34        compat_uptr_t   handler;
  35        unsigned int    oldmask;
  36        compat_uptr_t   regs;  /* 4 byte pointer to the pt_regs32 structure. */
  37};
  38
  39struct mcontext32 {
  40        elf_gregset_t32         mc_gregs;
  41        elf_fpregset_t          mc_fregs;
  42        unsigned int            mc_pad[2];
  43        elf_vrregset_t32        mc_vregs __attribute__((__aligned__(16)));
  44        elf_vsrreghalf_t32      mc_vsregs __attribute__((__aligned__(16)));
  45};
  46
  47struct ucontext32 { 
  48        unsigned int            uc_flags;
  49        unsigned int            uc_link;
  50        compat_stack_t          uc_stack;
  51        int                     uc_pad[7];
  52        compat_uptr_t           uc_regs;        /* points to uc_mcontext field */
  53        compat_sigset_t         uc_sigmask;     /* mask last for extensibility */
  54        /* glibc has 1024-bit signal masks, ours are 64-bit */
  55        int                     uc_maskext[30];
  56        int                     uc_pad2[3];
  57        struct mcontext32       uc_mcontext;
  58};
  59
  60#endif  /* _PPC64_PPC32_H */
  61