1c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef USER32_H 2c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define USER32_H 1 3c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 4c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* IA32 compatible user structures for ptrace. These should be used for 32bit coredumps too. */ 5c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 6c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct user_i387_ia32_struct { 7c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 cwd; 8c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 swd; 9c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 twd; 10c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 fip; 11c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 fcs; 12c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 foo; 13c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 fos; 14c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru u32 st_space[20]; /* 8*10 bytes for each FP-reg = 80 bytes */ 15c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 16c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 17c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* FSAVE frame with extensions */ 18c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct user32_fxsr_struct { 19c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned short cwd; 20c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned short swd; 21c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned short twd; /* not compatible to 64bit twd */ 22c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned short fop; 23c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int fip; 24c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int fcs; 25c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int foo; 26c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int fos; 27c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int mxcsr; 28c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int reserved; 29c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */ 30c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int xmm_space[32]; /* 8*16 bytes for each XMM-reg = 128 bytes */ 31c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int padding[56]; 32c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 33c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 34c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct user_regs_struct32 { 35c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 ebx, ecx, edx, esi, edi, ebp, eax; 36c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned short ds, __ds, es, __es; 37c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned short fs, __fs, gs, __gs; 38c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 orig_eax, eip; 39c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned short cs, __cs; 40c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 eflags, esp; 41c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru unsigned short ss, __ss; 42c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 43c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 44c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct user32 { 45c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct user_regs_struct32 regs; /* Where the registers are actually stored */ 46c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int u_fpvalid; /* True if math co-processor being used. */ 47c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru /* for this mess. Not yet used. */ 48c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct user_i387_ia32_struct i387; /* Math Co-processor registers. */ 49c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* The rest of this junk is to help gdb figure out what goes where */ 50c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 u_tsize; /* Text segment size (pages). */ 51c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 u_dsize; /* Data segment size (pages). */ 52c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 u_ssize; /* Stack segment size (pages). */ 53c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 start_code; /* Starting virtual address of text. */ 54c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 start_stack; /* Starting virtual address of stack area. 55c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru This is actually the bottom of the stack, 56c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru the top of the stack is always found in the 57c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru esp register. */ 58c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 signal; /* Signal that caused the core dump. */ 59c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int reserved; /* No __u32er used */ 60c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 u_ar0; /* Used by gdb to help find the values for */ 61c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru /* the registers. */ 62c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 u_fpstate; /* Math Co-processor pointer. */ 63c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 magic; /* To uniquely identify a core file */ 64c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru char u_comm[32]; /* User command that was responsible */ 65c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru int u_debugreg[8]; 66c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 67c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 68c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 69c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif 70