about summary refs log tree commit diff stats
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rwxr-xr-xsrc/include/debug.h1
-rwxr-xr-xsrc/include/regs.h72
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;