ppc32.h (1585B)
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 */