root/arch/powerpc/include/asm/syscalls_32.h
/* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef _ASM_POWERPC_SYSCALLS_32_H
#define _ASM_POWERPC_SYSCALLS_32_H

#include <linux/compat.h>
#include <asm/siginfo.h>
#include <asm/signal.h>

/*
 * Data types and macros for providing 32b PowerPC support.
 */

/* These are here to support 32-bit syscalls on a 64-bit kernel. */

struct pt_regs32 {
        unsigned int gpr[32];
        unsigned int nip;
        unsigned int msr;
        unsigned int orig_gpr3;         /* Used for restarting system calls */
        unsigned int ctr;
        unsigned int link;
        unsigned int xer;
        unsigned int ccr;
        unsigned int mq;                /* 601 only (not used at present) */
        unsigned int trap;              /* Reason for being here */
        unsigned int dar;               /* Fault registers */
        unsigned int dsisr;
        unsigned int result;            /* Result of a system call */
};

struct sigcontext32 {
        unsigned int    _unused[4];
        int             signal;
        compat_uptr_t   handler;
        unsigned int    oldmask;
        compat_uptr_t   regs;  /* 4 byte pointer to the pt_regs32 structure. */
};

struct mcontext32 {
        elf_gregset_t32         mc_gregs;
        elf_fpregset_t          mc_fregs;
        unsigned int            mc_pad[2];
        elf_vrregset_t32        mc_vregs __attribute__((__aligned__(16)));
        elf_vsrreghalf_t32      mc_vsregs __attribute__((__aligned__(16)));
};

struct ucontext32 { 
        unsigned int            uc_flags;
        unsigned int            uc_link;
        compat_stack_t          uc_stack;
        int                     uc_pad[7];
        compat_uptr_t           uc_regs;        /* points to uc_mcontext field */
        compat_sigset_t         uc_sigmask;     /* mask last for extensibility */
        /* glibc has 1024-bit signal masks, ours are 64-bit */
        int                     uc_maskext[30];
        int                     uc_pad2[3];
        struct mcontext32       uc_mcontext;
};

#endif  // _ASM_POWERPC_SYSCALLS_32_H