Merge tag 'reset-for-v5.3' of git://git.pengutronix.de/git/pza/linux into arm/drivers
[sfrench/cifs-2.6.git] / arch / powerpc / kernel / ppc32.h
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
15 struct 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
31 struct 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
39 struct 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
47 struct 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 */