sigcontext.h
001: #ifndef _ASM_X86_SIGCONTEXT_H
002: #define _ASM_X86_SIGCONTEXT_H
003: 
004: 
005: #include <linux/types.h>
006: 
007: #define FP_XSTATE_MAGIC1        0x46505853U
008: #define FP_XSTATE_MAGIC2        0x46505845U
009: #define FP_XSTATE_MAGIC2_SIZE   sizeof(FP_XSTATE_MAGIC2)
010: 
011: 
012: 
013: 
014: 
015: 
016: 
017: 
018: 
019: 
020: 
021: 
022: 
023: struct _fpx_sw_bytes {
024:         __u32 magic1;           
025:         __u32 extended_size;    
026: 
027: 
028:         __u64 xstate_bv;
029:                                 
030: 
031: 
032: 
033:         __u32 xstate_size;      
034: 
035: 
036: 
037: 
038:         __u32 padding[7];       
039: };
040: 
041: #ifdef __i386__
042: 
043: 
044: 
045: 
046: 
047: 
048: 
049: 
050: <gareth@valinux.com>
051: 
052: 
053: 
054: 
055: 
056: struct _fpreg {
057:         unsigned short significand[4];
058:         unsigned short exponent;
059: };
060: 
061: struct _fpxreg {
062:         unsigned short significand[4];
063:         unsigned short exponent;
064:         unsigned short padding[3];
065: };
066: 
067: struct _xmmreg {
068:         unsigned long element[4];
069: };
070: 
071: struct _fpstate {
072:         
073:         unsigned long   cw;
074:         unsigned long   sw;
075:         unsigned long   tag;
076:         unsigned long   ipoff;
077:         unsigned long   cssel;
078:         unsigned long   dataoff;
079:         unsigned long   datasel;
080:         struct _fpreg   _st[8];
081:         unsigned short  status;
082:         unsigned short  magic;          
083: 
084:         
085:         unsigned long   _fxsr_env[6];   
086:         unsigned long   mxcsr;
087:         unsigned long   reserved;
088:         struct _fpxreg  _fxsr_st[8];    
089:         struct _xmmreg  _xmm[8];
090:         unsigned long   padding1[44];
091: 
092:         union {
093:                 unsigned long   padding2[12];
094:                 struct _fpx_sw_bytes sw_reserved; 
095: 
096:         };
097: };
098: 
099: #define X86_FXSR_MAGIC          0x0000
100: 
101: 
102: 
103: 
104: struct sigcontext {
105:         unsigned short gs, __gsh;
106:         unsigned short fs, __fsh;
107:         unsigned short es, __esh;
108:         unsigned short ds, __dsh;
109:         unsigned long edi;
110:         unsigned long esi;
111:         unsigned long ebp;
112:         unsigned long esp;
113:         unsigned long ebx;
114:         unsigned long edx;
115:         unsigned long ecx;
116:         unsigned long eax;
117:         unsigned long trapno;
118:         unsigned long err;
119:         unsigned long eip;
120:         unsigned short cs, __csh;
121:         unsigned long eflags;
122:         unsigned long esp_at_signal;
123:         unsigned short ss, __ssh;
124:         struct _fpstate *fpstate;
125:         unsigned long oldmask;
126:         unsigned long cr2;
127: };
128: 
129: #else 
130: 
131: 
132: 
133: 
134: struct _fpstate {
135:         __u16   cwd;
136:         __u16   swd;
137:         __u16   twd;            
138: 
139:         __u16   fop;
140:         __u64   rip;
141:         __u64   rdp;
142:         __u32   mxcsr;
143:         __u32   mxcsr_mask;
144:         __u32   st_space[32];   
145:         __u32   xmm_space[64];  
146:         __u32   reserved2[12];
147:         union {
148:                 __u32   reserved3[12];
149:                 struct _fpx_sw_bytes sw_reserved; 
150: 
151:         };
152: };
153: 
154: 
155: 
156: 
157: struct sigcontext {
158:         unsigned long r8;
159:         unsigned long r9;
160:         unsigned long r10;
161:         unsigned long r11;
162:         unsigned long r12;
163:         unsigned long r13;
164:         unsigned long r14;
165:         unsigned long r15;
166:         unsigned long rdi;
167:         unsigned long rsi;
168:         unsigned long rbp;
169:         unsigned long rbx;
170:         unsigned long rdx;
171:         unsigned long rax;
172:         unsigned long rcx;
173:         unsigned long rsp;
174:         unsigned long rip;
175:         unsigned long eflags;           
176:         unsigned short cs;
177:         unsigned short gs;
178:         unsigned short fs;
179:         unsigned short __pad0;
180:         unsigned long err;
181:         unsigned long trapno;
182:         unsigned long oldmask;
183:         unsigned long cr2;
184:         struct _fpstate *fpstate;       
185:         unsigned long reserved1[8];
186: };
187: 
188: #endif 
189: 
190: struct _xsave_hdr {
191:         __u64 xstate_bv;
192:         __u64 reserved1[2];
193:         __u64 reserved2[5];
194: };
195: 
196: struct _ymmh_state {
197:         
198:         __u32 ymmh_space[64];
199: };
200: 
201: 
202: 
203: 
204: 
205: 
206: 
207: struct _xstate {
208:         struct _fpstate fpstate;
209:         struct _xsave_hdr xstate_hdr;
210:         struct _ymmh_state ymmh;
211:         
212: };
213: 
214: #endif 
215: 
      
      
      
      
   
      
      
         
            
            © Andrew Scott 2006 -
            2025, 
            All Rights Reserved