wok annotate coreutils/stuff/sigcontext.h @ rev 6521

Up: usbutils to 0.9.0.
author Christopher Rogers <slaxemulator@gmail.com>
date Sat Oct 02 17:17:45 2010 +0000 (2010-10-02)
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