wok annotate coreutils/stuff/sigcontext.h @ rev 11769
up midori (0.4.3) and added description
author | Samuel Trassare <samuel_trassare@yahoo.com> |
---|---|
date | Wed Feb 22 20:48:36 2012 -0800 (2012-02-22) |
parents | |
children |
rev | line source |
---|---|
pankso@3435 | 1 #ifndef _ASM_X86_SIGCONTEXT_H |
pankso@3435 | 2 #define _ASM_X86_SIGCONTEXT_H |
pankso@3435 | 3 |
pankso@3435 | 4 #include <asm/types.h> |
pankso@3435 | 5 |
pankso@3435 | 6 #ifdef __i386__ |
pankso@3435 | 7 /* |
pankso@3435 | 8 * As documented in the iBCS2 standard.. |
pankso@3435 | 9 * |
pankso@3435 | 10 * The first part of "struct _fpstate" is just the normal i387 |
pankso@3435 | 11 * hardware setup, the extra "status" word is used to save the |
pankso@3435 | 12 * coprocessor status word before entering the handler. |
pankso@3435 | 13 * |
pankso@3435 | 14 * Pentium III FXSR, SSE support |
pankso@3435 | 15 * Gareth Hughes <gareth@valinux.com>, May 2000 |
pankso@3435 | 16 * |
pankso@3435 | 17 * The FPU state data structure has had to grow to accommodate the |
pankso@3435 | 18 * extended FPU state required by the Streaming SIMD Extensions. |
pankso@3435 | 19 * There is no documented standard to accomplish this at the moment. |
pankso@3435 | 20 */ |
pankso@3435 | 21 struct _fpreg { |
pankso@3435 | 22 unsigned short significand[4]; |
pankso@3435 | 23 unsigned short exponent; |
pankso@3435 | 24 }; |
pankso@3435 | 25 |
pankso@3435 | 26 struct _fpxreg { |
pankso@3435 | 27 unsigned short significand[4]; |
pankso@3435 | 28 unsigned short exponent; |
pankso@3435 | 29 unsigned short padding[3]; |
pankso@3435 | 30 }; |
pankso@3435 | 31 |
pankso@3435 | 32 struct _xmmreg { |
pankso@3435 | 33 unsigned long element[4]; |
pankso@3435 | 34 }; |
pankso@3435 | 35 |
pankso@3435 | 36 struct _fpstate { |
pankso@3435 | 37 /* Regular FPU environment */ |
pankso@3435 | 38 unsigned long cw; |
pankso@3435 | 39 unsigned long sw; |
pankso@3435 | 40 unsigned long tag; |
pankso@3435 | 41 unsigned long ipoff; |
pankso@3435 | 42 unsigned long cssel; |
pankso@3435 | 43 unsigned long dataoff; |
pankso@3435 | 44 unsigned long datasel; |
pankso@3435 | 45 struct _fpreg _st[8]; |
pankso@3435 | 46 unsigned short status; |
pankso@3435 | 47 unsigned short magic; /* 0xffff = regular FPU data only */ |
pankso@3435 | 48 |
pankso@3435 | 49 /* FXSR FPU environment */ |
pankso@3435 | 50 unsigned long _fxsr_env[6]; /* FXSR FPU env is ignored */ |
pankso@3435 | 51 unsigned long mxcsr; |
pankso@3435 | 52 unsigned long reserved; |
pankso@3435 | 53 struct _fpxreg _fxsr_st[8]; /* FXSR FPU reg data is ignored */ |
pankso@3435 | 54 struct _xmmreg _xmm[8]; |
pankso@3435 | 55 unsigned long padding[56]; |
pankso@3435 | 56 }; |
pankso@3435 | 57 |
pankso@3435 | 58 #define X86_FXSR_MAGIC 0x0000 |
pankso@3435 | 59 |
pankso@3435 | 60 /* |
pankso@3435 | 61 * User-space might still rely on the old definition: |
pankso@3435 | 62 */ |
pankso@3435 | 63 struct sigcontext { |
pankso@3435 | 64 unsigned short gs, __gsh; |
pankso@3435 | 65 unsigned short fs, __fsh; |
pankso@3435 | 66 unsigned short es, __esh; |
pankso@3435 | 67 unsigned short ds, __dsh; |
pankso@3435 | 68 unsigned long edi; |
pankso@3435 | 69 unsigned long esi; |
pankso@3435 | 70 unsigned long ebp; |
pankso@3435 | 71 unsigned long esp; |
pankso@3435 | 72 unsigned long ebx; |
pankso@3435 | 73 unsigned long edx; |
pankso@3435 | 74 unsigned long ecx; |
pankso@3435 | 75 unsigned long eax; |
pankso@3435 | 76 unsigned long trapno; |
pankso@3435 | 77 unsigned long err; |
pankso@3435 | 78 unsigned long eip; |
pankso@3435 | 79 unsigned short cs, __csh; |
pankso@3435 | 80 unsigned long eflags; |
pankso@3435 | 81 unsigned long esp_at_signal; |
pankso@3435 | 82 unsigned short ss, __ssh; |
pankso@3435 | 83 struct _fpstate * fpstate; |
pankso@3435 | 84 unsigned long oldmask; |
pankso@3435 | 85 unsigned long cr2; |
pankso@3435 | 86 }; |
pankso@3435 | 87 |
pankso@3435 | 88 #else /* __i386__ */ |
pankso@3435 | 89 |
pankso@3435 | 90 /* FXSAVE frame */ |
pankso@3435 | 91 /* Note: reserved1/2 may someday contain valuable data. Always save/restore |
pankso@3435 | 92 them when you change signal frames. */ |
pankso@3435 | 93 struct _fpstate { |
pankso@3435 | 94 __u16 cwd; |
pankso@3435 | 95 __u16 swd; |
pankso@3435 | 96 __u16 twd; /* Note this is not the same as the 32bit/x87/FSAVE twd */ |
pankso@3435 | 97 __u16 fop; |
pankso@3435 | 98 __u64 rip; |
pankso@3435 | 99 __u64 rdp; |
pankso@3435 | 100 __u32 mxcsr; |
pankso@3435 | 101 __u32 mxcsr_mask; |
pankso@3435 | 102 __u32 st_space[32]; /* 8*16 bytes for each FP-reg */ |
pankso@3435 | 103 __u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg */ |
pankso@3435 | 104 __u32 reserved2[24]; |
pankso@3435 | 105 }; |
pankso@3435 | 106 |
pankso@3435 | 107 /* |
pankso@3435 | 108 * User-space might still rely on the old definition: |
pankso@3435 | 109 */ |
pankso@3435 | 110 struct sigcontext { |
pankso@3435 | 111 unsigned long r8; |
pankso@3435 | 112 unsigned long r9; |
pankso@3435 | 113 unsigned long r10; |
pankso@3435 | 114 unsigned long r11; |
pankso@3435 | 115 unsigned long r12; |
pankso@3435 | 116 unsigned long r13; |
pankso@3435 | 117 unsigned long r14; |
pankso@3435 | 118 unsigned long r15; |
pankso@3435 | 119 unsigned long rdi; |
pankso@3435 | 120 unsigned long rsi; |
pankso@3435 | 121 unsigned long rbp; |
pankso@3435 | 122 unsigned long rbx; |
pankso@3435 | 123 unsigned long rdx; |
pankso@3435 | 124 unsigned long rax; |
pankso@3435 | 125 unsigned long rcx; |
pankso@3435 | 126 unsigned long rsp; |
pankso@3435 | 127 unsigned long rip; |
pankso@3435 | 128 unsigned long eflags; /* RFLAGS */ |
pankso@3435 | 129 unsigned short cs; |
pankso@3435 | 130 unsigned short gs; |
pankso@3435 | 131 unsigned short fs; |
pankso@3435 | 132 unsigned short __pad0; |
pankso@3435 | 133 unsigned long err; |
pankso@3435 | 134 unsigned long trapno; |
pankso@3435 | 135 unsigned long oldmask; |
pankso@3435 | 136 unsigned long cr2; |
pankso@3435 | 137 struct _fpstate *fpstate; /* zero when no FPU context */ |
pankso@3435 | 138 unsigned long reserved1[8]; |
pankso@3435 | 139 }; |
pankso@3435 | 140 |
pankso@3435 | 141 #endif /* !__i386__ */ |
pankso@3435 | 142 |
pankso@3435 | 143 #endif |