diff options
Diffstat (limited to 'src/include')
| -rwxr-xr-x | src/include/debug.h | 1 | ||||
| -rwxr-xr-x | src/include/regs.h | 72 |
2 files changed, 48 insertions, 25 deletions
diff --git a/src/include/debug.h b/src/include/debug.h index 6db06b9e..3ff15229 100755 --- a/src/include/debug.h +++ b/src/include/debug.h @@ -43,6 +43,7 @@ extern char* box64_trace; extern uint64_t start_cnt; #endif extern int box64_dummy_crashhandler; +extern int box64_sse_flushto0; extern int allow_missing_libs; extern int box64_mapclean; extern int box64_prefer_wrapped; diff --git a/src/include/regs.h b/src/include/regs.h index d66e8065..0097e723 100755 --- a/src/include/regs.h +++ b/src/include/regs.h @@ -223,42 +223,64 @@ typedef enum { typedef union { struct __attribute__ ((__packed__)) { - unsigned int F87_IE:1; - unsigned int F87_DE:1; - unsigned int F87_ZE:1; - unsigned int F87_OE:1; - unsigned int F87_UE:1; - unsigned int F87_PE:1; - unsigned int F87_SF:1; - unsigned int F87_ES:1; - unsigned int F87_C0:1; - unsigned int F87_C1:1; - unsigned int F87_C2:1; - unsigned int F87_TOP:3; - unsigned int F87_C3:1; - unsigned int F87_B:1; + uint16_t F87_IE:1; + uint16_t F87_DE:1; + uint16_t F87_ZE:1; + uint16_t F87_OE:1; + uint16_t F87_UE:1; + uint16_t F87_PE:1; + uint16_t F87_SF:1; + uint16_t F87_ES:1; + uint16_t F87_C0:1; + uint16_t F87_C1:1; + uint16_t F87_C2:1; + uint16_t F87_TOP:3; + uint16_t F87_C3:1; + uint16_t F87_B:1; } f; uint16_t x16; } x87flags_t; typedef union { struct __attribute__ ((__packed__)) { - unsigned int C87_IM:1; // interupt masks - unsigned int C87_DM:1; - unsigned int C87_ZM:1; - unsigned int C87_OM:1; - unsigned int C87_UM:1; - unsigned int C87_PM:1; - unsigned int C87_R1:2; // reserved - unsigned int C87_PC:2; // precision control (24bits, reserved, 53bits, 64bits) - unsigned int C87_RD:2; // Rounds - unsigned int C87_IC:1; - unsigned int C87_R2:3; // reserved + uint16_t C87_IM:1; // interupt masks + uint16_t C87_DM:1; + uint16_t C87_ZM:1; + uint16_t C87_OM:1; + uint16_t C87_UM:1; + uint16_t C87_PM:1; + uint16_t C87_R1:2; // reserved + uint16_t C87_PC:2; // precision control (24bits, reserved, 53bits, 64bits) + uint16_t C87_RD:2; // Rounds + uint16_t C87_IC:1; + uint16_t C87_R2:3; // reserved } f; uint16_t x16; } x87control_t; typedef union { + struct __attribute__ ((__packed__)) { + uint32_t MXCSR_IE:1; + uint32_t MXCSR_DE:1; + uint32_t MXCSR_ZE:1; + uint32_t MXCSR_OE:1; + uint32_t MXCSR_UE:1; + uint32_t MXCSR_PE:1; + uint32_t MXCSR_DAZ:1; + uint32_t MXCSR_IM:1; + uint32_t MXCSR_DM:1; + uint32_t MXCSR_ZM:1; + uint32_t MXCSR_OM:1; + uint32_t MXCSR_UM:1; + uint32_t MXCSR_PM:1; + uint32_t MXCSR_RC:2; + uint32_t MXCSR_FZ:1; + uint32_t MXCSR_RES:16; + } f; + uint32_t x32; +} mmxcontrol_t; + +typedef union { uint64_t q; int64_t sq; double d; |