Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v2.6.12-rc2 122 lines 2.9 kB view raw
1#ifndef _PPC64_PPC32_H 2#define _PPC64_PPC32_H 3 4#include <linux/compat.h> 5#include <asm/siginfo.h> 6#include <asm/signal.h> 7 8/* 9 * Data types and macros for providing 32b PowerPC support. 10 * 11 * This program is free software; you can redistribute it and/or 12 * modify it under the terms of the GNU General Public License 13 * as published by the Free Software Foundation; either version 14 * 2 of the License, or (at your option) any later version. 15 */ 16 17/* These are here to support 32-bit syscalls on a 64-bit kernel. */ 18 19typedef struct compat_siginfo { 20 int si_signo; 21 int si_errno; 22 int si_code; 23 24 union { 25 int _pad[SI_PAD_SIZE32]; 26 27 /* kill() */ 28 struct { 29 compat_pid_t _pid; /* sender's pid */ 30 compat_uid_t _uid; /* sender's uid */ 31 } _kill; 32 33 /* POSIX.1b timers */ 34 struct { 35 timer_t _tid; /* timer id */ 36 int _overrun; /* overrun count */ 37 compat_sigval_t _sigval; /* same as below */ 38 int _sys_private; /* not to be passed to user */ 39 } _timer; 40 41 /* POSIX.1b signals */ 42 struct { 43 compat_pid_t _pid; /* sender's pid */ 44 compat_uid_t _uid; /* sender's uid */ 45 compat_sigval_t _sigval; 46 } _rt; 47 48 /* SIGCHLD */ 49 struct { 50 compat_pid_t _pid; /* which child */ 51 compat_uid_t _uid; /* sender's uid */ 52 int _status; /* exit code */ 53 compat_clock_t _utime; 54 compat_clock_t _stime; 55 } _sigchld; 56 57 /* SIGILL, SIGFPE, SIGSEGV, SIGBUS, SIGEMT */ 58 struct { 59 unsigned int _addr; /* faulting insn/memory ref. */ 60 } _sigfault; 61 62 /* SIGPOLL */ 63 struct { 64 int _band; /* POLL_IN, POLL_OUT, POLL_MSG */ 65 int _fd; 66 } _sigpoll; 67 } _sifields; 68} compat_siginfo_t; 69 70#define __old_sigaction32 old_sigaction32 71 72struct __old_sigaction32 { 73 unsigned sa_handler; 74 compat_old_sigset_t sa_mask; 75 unsigned int sa_flags; 76 unsigned sa_restorer; /* not used by Linux/SPARC yet */ 77}; 78 79 80 81struct sigaction32 { 82 unsigned int sa_handler; /* Really a pointer, but need to deal with 32 bits */ 83 unsigned int sa_flags; 84 unsigned int sa_restorer; /* Another 32 bit pointer */ 85 compat_sigset_t sa_mask; /* A 32 bit mask */ 86}; 87 88typedef struct sigaltstack_32 { 89 unsigned int ss_sp; 90 int ss_flags; 91 compat_size_t ss_size; 92} stack_32_t; 93 94struct sigcontext32 { 95 unsigned int _unused[4]; 96 int signal; 97 unsigned int handler; 98 unsigned int oldmask; 99 u32 regs; /* 4 byte pointer to the pt_regs32 structure. */ 100}; 101 102struct mcontext32 { 103 elf_gregset_t32 mc_gregs; 104 elf_fpregset_t mc_fregs; 105 unsigned int mc_pad[2]; 106 elf_vrregset_t32 mc_vregs __attribute__((__aligned__(16))); 107}; 108 109struct ucontext32 { 110 unsigned int uc_flags; 111 unsigned int uc_link; 112 stack_32_t uc_stack; 113 int uc_pad[7]; 114 u32 uc_regs; /* points to uc_mcontext field */ 115 compat_sigset_t uc_sigmask; /* mask last for extensibility */ 116 /* glibc has 1024-bit signal masks, ours are 64-bit */ 117 int uc_maskext[30]; 118 int uc_pad2[3]; 119 struct mcontext32 uc_mcontext; 120}; 121 122#endif /* _PPC64_PPC32_H */