aboutsummaryrefslogtreecommitdiff
path: root/target-i386/cpu.h
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-03-13 17:01:47 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-03-13 17:01:47 +0000
commit7a0e1f41ceeb658791a1456ffc7f8f9edca7da19 (patch)
treeeab50fb37085ad2dc6e8aa283f334defd538fa8c /target-i386/cpu.h
parent4ecc31906d7535c4ad88fcc63968bef412dd67ba (diff)
soft float support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1336 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-i386/cpu.h')
-rw-r--r--target-i386/cpu.h14
1 files changed, 9 insertions, 5 deletions
diff --git a/target-i386/cpu.h b/target-i386/cpu.h
index 154d8bfdae..ce65c34306 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -36,6 +36,8 @@
#include "cpu-defs.h"
+#include "softfloat.h"
+
#if defined(__i386__) && !defined(CONFIG_SOFTMMU)
#define USE_CODE_COPY
#endif
@@ -332,14 +334,14 @@ enum {
CC_OP_NB,
};
-#if (defined(__i386__) || defined(__x86_64__)) && !defined(_BSD)
+#ifdef FLOATX80
#define USE_X86LDOUBLE
#endif
#ifdef USE_X86LDOUBLE
-typedef long double CPU86_LDouble;
+typedef floatx80 CPU86_LDouble;
#else
-typedef double CPU86_LDouble;
+typedef float64 CPU86_LDouble;
#endif
typedef struct SegmentCache {
@@ -354,8 +356,8 @@ typedef union {
uint16_t _w[8];
uint32_t _l[4];
uint64_t _q[2];
- float _s[4];
- double _d[2];
+ float32 _s[4];
+ float64 _d[2];
} XMMReg;
typedef union {
@@ -441,6 +443,7 @@ typedef struct CPUX86State {
} fpregs[8];
/* emulator internal variables */
+ float_status fp_status;
CPU86_LDouble ft0;
union {
float f;
@@ -449,6 +452,7 @@ typedef struct CPUX86State {
int64_t i64;
} fp_convert;
+ float_status sse_status;
uint32_t mxcsr;
XMMReg xmm_regs[CPU_NB_REGS];
XMMReg xmm_t0;