#ifndef _PPC64_PPC32_H #define _PPC64_PPC32_H #include #include #include /* * Data types and macros for providing 32b PowerPC support. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ /* These are here to support 32-bit syscalls on a 64-bit kernel. */ #define __old_sigaction32 old_sigaction32 struct __old_sigaction32 { compat_uptr_t sa_handler; compat_old_sigset_t sa_mask; unsigned int sa_flags; compat_uptr_t sa_restorer; /* not used by Linux/SPARC yet */ }; struct sigaction32 { compat_uptr_t sa_handler; /* Really a pointer, but need to deal with 32 bits */ unsigned int sa_flags; compat_uptr_t sa_restorer; /* Another 32 bit pointer */ compat_sigset_t sa_mask; /* A 32 bit mask */ }; 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 /* _PPC64_PPC32_H */