target-i386: Fix FPU helpers.

This fixes the bug that prevents x86 system images from booting
properly without KVM/HAXM. It was introduced by commit
e228840614eab80006f9d7e68339b09b3890931a which upgraded
softfloat support to upstream version.

This patch upgrades the target-i386 FPU emulation code to
always use 80-bit FPU registera, and perform computations
appropriately. This comes from upstream QEMU patch
c31da136a0bf8caad70c348f5ffc283206e9c7fc

Change-Id: I5c3452a3072f31299623b5dae754a060c86c402a
diff --git a/target-i386/cpu.h b/target-i386/cpu.h
index de23359..44f29e1 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -661,16 +661,6 @@
     CC_OP_NB,
 };
 
-#ifdef FLOATX80
-#define USE_X86LDOUBLE
-#endif
-
-#ifdef USE_X86LDOUBLE
-typedef floatx80 CPU86_LDouble;
-#else
-typedef float64 CPU86_LDouble;
-#endif
-
 typedef struct SegmentCache {
     uint32_t selector;
     target_ulong base;
@@ -775,18 +765,11 @@
     unsigned int fpus;
     unsigned int fpuc;
     uint8_t fptags[8];   /* 0 = valid, 1 = empty */
-    union {
-#ifdef USE_X86LDOUBLE
-        CPU86_LDouble d __attribute__((aligned(16)));
-#else
-        CPU86_LDouble d;
-#endif
-        MMXReg mmx;
-    } fpregs[8];
+    FPReg fpregs[8];
 
     /* emulator internal variables */
     float_status fp_status;
-    CPU86_LDouble ft0;
+    floatx80 ft0;
 
     float_status mmx_status; /* for 3DNow! float ops */
     float_status sse_status;
@@ -955,8 +938,8 @@
 
 /* op_helper.c */
 /* used for debug or cpu save/restore */
-void cpu_get_fp80(uint64_t *pmant, uint16_t *pexp, CPU86_LDouble f);
-CPU86_LDouble cpu_set_fp80(uint64_t mant, uint16_t upper);
+void cpu_get_fp80(uint64_t *pmant, uint16_t *pexp, floatx80 f);
+floatx80 cpu_set_fp80(uint64_t mant, uint16_t upper);
 
 /* cpu-exec.c */
 /* the following helpers are only usable in user mode simulation as