Commit 1cdb9c3d82d6febb526ddb085f2dea8f59c55a93

Authored by aurel32
1 parent f9fcd6f5

Revert revisions r4168 and r4169. That's work in progress, not ready for trunk yet.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4171 c046a42c-6fe2-441c-8c8c-71466251a162
configure
@@ -1224,7 +1224,7 @@ if test "$target_darwin_user" = "yes" ; then @@ -1224,7 +1224,7 @@ if test "$target_darwin_user" = "yes" ; then
1224 echo "#define CONFIG_DARWIN_USER 1" >> $config_h 1224 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1225 fi 1225 fi
1226 1226
1227 -if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = "sparc" -o "$target_cpu" = "sparc64" -o "$target_cpu" = "sparc32plus" -o "$target_cpu" = "m68k" -o "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" -o "$target_cpu" = "mipsn32" -o "$target_cpu" = "mipsn32el" -o "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" -o "$target_cpu" = "ppc" ; then 1227 +if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = "sparc" -o "$target_cpu" = "sparc64" -o "$target_cpu" = "sparc32plus" -o "$target_cpu" = "m68k" -o "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" -o "$target_cpu" = "mipsn32" -o "$target_cpu" = "mipsn32el" -o "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el"; then
1228 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak 1228 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1229 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h 1229 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1230 fi 1230 fi
target-ppc/exec.h
@@ -27,6 +27,10 @@ @@ -27,6 +27,10 @@
27 #include "cpu.h" 27 #include "cpu.h"
28 #include "exec-all.h" 28 #include "exec-all.h"
29 29
  30 +/* For normal operations, precise emulation should not be needed */
  31 +//#define USE_PRECISE_EMULATION 1
  32 +#define USE_PRECISE_EMULATION 0
  33 +
30 register struct CPUPPCState *env asm(AREG0); 34 register struct CPUPPCState *env asm(AREG0);
31 #if TARGET_LONG_BITS > HOST_LONG_BITS 35 #if TARGET_LONG_BITS > HOST_LONG_BITS
32 /* no registers can be used */ 36 /* no registers can be used */
target-ppc/op.c
@@ -1716,7 +1716,7 @@ void OPPROTO op_srli_T1_64 (void) @@ -1716,7 +1716,7 @@ void OPPROTO op_srli_T1_64 (void)
1716 /* fadd - fadd. */ 1716 /* fadd - fadd. */
1717 void OPPROTO op_fadd (void) 1717 void OPPROTO op_fadd (void)
1718 { 1718 {
1719 -#ifdef CONFIG_SOFTFLOAT 1719 +#if USE_PRECISE_EMULATION
1720 do_fadd(); 1720 do_fadd();
1721 #else 1721 #else
1722 FT0 = float64_add(FT0, FT1, &env->fp_status); 1722 FT0 = float64_add(FT0, FT1, &env->fp_status);
@@ -1727,7 +1727,7 @@ void OPPROTO op_fadd (void) @@ -1727,7 +1727,7 @@ void OPPROTO op_fadd (void)
1727 /* fsub - fsub. */ 1727 /* fsub - fsub. */
1728 void OPPROTO op_fsub (void) 1728 void OPPROTO op_fsub (void)
1729 { 1729 {
1730 -#ifdef CONFIG_SOFTFLOAT 1730 +#if USE_PRECISE_EMULATION
1731 do_fsub(); 1731 do_fsub();
1732 #else 1732 #else
1733 FT0 = float64_sub(FT0, FT1, &env->fp_status); 1733 FT0 = float64_sub(FT0, FT1, &env->fp_status);
@@ -1738,7 +1738,7 @@ void OPPROTO op_fsub (void) @@ -1738,7 +1738,7 @@ void OPPROTO op_fsub (void)
1738 /* fmul - fmul. */ 1738 /* fmul - fmul. */
1739 void OPPROTO op_fmul (void) 1739 void OPPROTO op_fmul (void)
1740 { 1740 {
1741 -#ifdef CONFIG_SOFTFLOAT 1741 +#if USE_PRECISE_EMULATION
1742 do_fmul(); 1742 do_fmul();
1743 #else 1743 #else
1744 FT0 = float64_mul(FT0, FT1, &env->fp_status); 1744 FT0 = float64_mul(FT0, FT1, &env->fp_status);
@@ -1749,7 +1749,7 @@ void OPPROTO op_fmul (void) @@ -1749,7 +1749,7 @@ void OPPROTO op_fmul (void)
1749 /* fdiv - fdiv. */ 1749 /* fdiv - fdiv. */
1750 void OPPROTO op_fdiv (void) 1750 void OPPROTO op_fdiv (void)
1751 { 1751 {
1752 -#ifdef CONFIG_SOFTFLOAT 1752 +#if USE_PRECISE_EMULATION
1753 do_fdiv(); 1753 do_fdiv();
1754 #else 1754 #else
1755 FT0 = float64_div(FT0, FT1, &env->fp_status); 1755 FT0 = float64_div(FT0, FT1, &env->fp_status);
@@ -1796,7 +1796,7 @@ void OPPROTO op_fsel (void) @@ -1796,7 +1796,7 @@ void OPPROTO op_fsel (void)
1796 /* fmadd - fmadd. */ 1796 /* fmadd - fmadd. */
1797 void OPPROTO op_fmadd (void) 1797 void OPPROTO op_fmadd (void)
1798 { 1798 {
1799 -#ifdef CONFIG_SOFTFLOAT 1799 +#if USE_PRECISE_EMULATION
1800 do_fmadd(); 1800 do_fmadd();
1801 #else 1801 #else
1802 FT0 = float64_mul(FT0, FT1, &env->fp_status); 1802 FT0 = float64_mul(FT0, FT1, &env->fp_status);
@@ -1808,7 +1808,7 @@ void OPPROTO op_fmadd (void) @@ -1808,7 +1808,7 @@ void OPPROTO op_fmadd (void)
1808 /* fmsub - fmsub. */ 1808 /* fmsub - fmsub. */
1809 void OPPROTO op_fmsub (void) 1809 void OPPROTO op_fmsub (void)
1810 { 1810 {
1811 -#ifdef CONFIG_SOFTFLOAT 1811 +#if USE_PRECISE_EMULATION
1812 do_fmsub(); 1812 do_fmsub();
1813 #else 1813 #else
1814 FT0 = float64_mul(FT0, FT1, &env->fp_status); 1814 FT0 = float64_mul(FT0, FT1, &env->fp_status);
@@ -1835,7 +1835,7 @@ void OPPROTO op_fnmsub (void) @@ -1835,7 +1835,7 @@ void OPPROTO op_fnmsub (void)
1835 /* frsp - frsp. */ 1835 /* frsp - frsp. */
1836 void OPPROTO op_frsp (void) 1836 void OPPROTO op_frsp (void)
1837 { 1837 {
1838 -#ifdef CONFIG_SOFTFLOAT 1838 +#if USE_PRECISE_EMULATION
1839 do_frsp(); 1839 do_frsp();
1840 #else 1840 #else
1841 FT0 = float64_to_float32(FT0, &env->fp_status); 1841 FT0 = float64_to_float32(FT0, &env->fp_status);
target-ppc/op_helper.c
@@ -922,7 +922,7 @@ void do_float_check_status (void) @@ -922,7 +922,7 @@ void do_float_check_status (void)
922 } 922 }
923 #endif 923 #endif
924 924
925 -#ifdef CONFIG_SOFTFLOAT 925 +#if USE_PRECISE_EMULATION
926 void do_fadd (void) 926 void do_fadd (void)
927 { 927 {
928 if (unlikely(float64_is_signaling_nan(FT0) || 928 if (unlikely(float64_is_signaling_nan(FT0) ||
@@ -989,7 +989,7 @@ void do_fdiv (void) @@ -989,7 +989,7 @@ void do_fdiv (void)
989 FT0 = float64_div(FT0, FT1, &env->fp_status); 989 FT0 = float64_div(FT0, FT1, &env->fp_status);
990 } 990 }
991 } 991 }
992 -#endif /* CONFIG_SOFTFLOAT */ 992 +#endif /* USE_PRECISE_EMULATION */
993 993
994 void do_fctiw (void) 994 void do_fctiw (void)
995 { 995 {
@@ -1003,7 +1003,7 @@ void do_fctiw (void) @@ -1003,7 +1003,7 @@ void do_fctiw (void)
1003 fload_invalid_op_excp(POWERPC_EXCP_FP_VXCVI); 1003 fload_invalid_op_excp(POWERPC_EXCP_FP_VXCVI);
1004 } else { 1004 } else {
1005 p.ll = float64_to_int32(FT0, &env->fp_status); 1005 p.ll = float64_to_int32(FT0, &env->fp_status);
1006 -#ifdef CONFIG_SOFTFLOAT 1006 +#if USE_PRECISE_EMULATION
1007 /* XXX: higher bits are not supposed to be significant. 1007 /* XXX: higher bits are not supposed to be significant.
1008 * to make tests easier, return the same as a real PowerPC 750 1008 * to make tests easier, return the same as a real PowerPC 750
1009 */ 1009 */
@@ -1025,7 +1025,7 @@ void do_fctiwz (void) @@ -1025,7 +1025,7 @@ void do_fctiwz (void)
1025 fload_invalid_op_excp(POWERPC_EXCP_FP_VXCVI); 1025 fload_invalid_op_excp(POWERPC_EXCP_FP_VXCVI);
1026 } else { 1026 } else {
1027 p.ll = float64_to_int32_round_to_zero(FT0, &env->fp_status); 1027 p.ll = float64_to_int32_round_to_zero(FT0, &env->fp_status);
1028 -#ifdef CONFIG_SOFTFLOAT 1028 +#if USE_PRECISE_EMULATION
1029 /* XXX: higher bits are not supposed to be significant. 1029 /* XXX: higher bits are not supposed to be significant.
1030 * to make tests easier, return the same as a real PowerPC 750 1030 * to make tests easier, return the same as a real PowerPC 750
1031 */ 1031 */
@@ -1114,7 +1114,7 @@ void do_frim (void) @@ -1114,7 +1114,7 @@ void do_frim (void)
1114 do_fri(float_round_down); 1114 do_fri(float_round_down);
1115 } 1115 }
1116 1116
1117 -#ifdef CONFIG_SOFTFLOAT 1117 +#if USE_PRECISE_EMULATION
1118 void do_fmadd (void) 1118 void do_fmadd (void)
1119 { 1119 {
1120 if (unlikely(float64_is_signaling_nan(FT0) || 1120 if (unlikely(float64_is_signaling_nan(FT0) ||
@@ -1164,7 +1164,7 @@ void do_fmsub (void) @@ -1164,7 +1164,7 @@ void do_fmsub (void)
1164 #endif 1164 #endif
1165 } 1165 }
1166 } 1166 }
1167 -#endif /* CONFIG_SOFTFLOAT */ 1167 +#endif /* USE_PRECISE_EMULATION */
1168 1168
1169 void do_fnmadd (void) 1169 void do_fnmadd (void)
1170 { 1170 {
@@ -1174,7 +1174,7 @@ void do_fnmadd (void) @@ -1174,7 +1174,7 @@ void do_fnmadd (void)
1174 /* sNaN operation */ 1174 /* sNaN operation */
1175 fload_invalid_op_excp(POWERPC_EXCP_FP_VXSNAN); 1175 fload_invalid_op_excp(POWERPC_EXCP_FP_VXSNAN);
1176 } else { 1176 } else {
1177 -#ifdef CONFIG_SOFTFLOAT 1177 +#if USE_PRECISE_EMULATION
1178 #ifdef FLOAT128 1178 #ifdef FLOAT128
1179 /* This is the way the PowerPC specification defines it */ 1179 /* This is the way the PowerPC specification defines it */
1180 float128 ft0_128, ft1_128; 1180 float128 ft0_128, ft1_128;
@@ -1206,7 +1206,7 @@ void do_fnmsub (void) @@ -1206,7 +1206,7 @@ void do_fnmsub (void)
1206 /* sNaN operation */ 1206 /* sNaN operation */
1207 fload_invalid_op_excp(POWERPC_EXCP_FP_VXSNAN); 1207 fload_invalid_op_excp(POWERPC_EXCP_FP_VXSNAN);
1208 } else { 1208 } else {
1209 -#ifdef CONFIG_SOFTFLOAT 1209 +#if USE_PRECISE_EMULATION
1210 #ifdef FLOAT128 1210 #ifdef FLOAT128
1211 /* This is the way the PowerPC specification defines it */ 1211 /* This is the way the PowerPC specification defines it */
1212 float128 ft0_128, ft1_128; 1212 float128 ft0_128, ft1_128;
@@ -1230,7 +1230,7 @@ void do_fnmsub (void) @@ -1230,7 +1230,7 @@ void do_fnmsub (void)
1230 } 1230 }
1231 } 1231 }
1232 1232
1233 -#ifdef CONFIG_SOFTFLOAT 1233 +#if USE_PRECISE_EMULATION
1234 void do_frsp (void) 1234 void do_frsp (void)
1235 { 1235 {
1236 if (unlikely(float64_is_signaling_nan(FT0))) { 1236 if (unlikely(float64_is_signaling_nan(FT0))) {
@@ -1240,7 +1240,7 @@ void do_frsp (void) @@ -1240,7 +1240,7 @@ void do_frsp (void)
1240 FT0 = float64_to_float32(FT0, &env->fp_status); 1240 FT0 = float64_to_float32(FT0, &env->fp_status);
1241 } 1241 }
1242 } 1242 }
1243 -#endif /* CONFIG_SOFTFLOAT */ 1243 +#endif /* USE_PRECISE_EMULATION */
1244 1244
1245 void do_fsqrt (void) 1245 void do_fsqrt (void)
1246 { 1246 {
@@ -1295,7 +1295,7 @@ void do_fres (void) @@ -1295,7 +1295,7 @@ void do_fres (void)
1295 /* Zero reciprocal */ 1295 /* Zero reciprocal */
1296 float_zero_divide_excp(); 1296 float_zero_divide_excp();
1297 } else if (likely(isnormal(FT0))) { 1297 } else if (likely(isnormal(FT0))) {
1298 -#ifdef CONFIG_SOFTFLOAT 1298 +#if USE_PRECISE_EMULATION
1299 FT0 = float64_div(1.0, FT0, &env->fp_status); 1299 FT0 = float64_div(1.0, FT0, &env->fp_status);
1300 FT0 = float64_to_float32(FT0, &env->fp_status); 1300 FT0 = float64_to_float32(FT0, &env->fp_status);
1301 #else 1301 #else
target-ppc/op_helper.h
@@ -98,7 +98,7 @@ void do_compute_fprf (int set_class); @@ -98,7 +98,7 @@ void do_compute_fprf (int set_class);
98 #ifdef CONFIG_SOFTFLOAT 98 #ifdef CONFIG_SOFTFLOAT
99 void do_float_check_status (void); 99 void do_float_check_status (void);
100 #endif 100 #endif
101 -#ifdef CONFIG_SOFTFLOAT 101 +#if USE_PRECISE_EMULATION
102 void do_fadd (void); 102 void do_fadd (void);
103 void do_fsub (void); 103 void do_fsub (void);
104 void do_fmul (void); 104 void do_fmul (void);
@@ -109,13 +109,13 @@ void do_fre (void); @@ -109,13 +109,13 @@ void do_fre (void);
109 void do_fres (void); 109 void do_fres (void);
110 void do_frsqrte (void); 110 void do_frsqrte (void);
111 void do_fsel (void); 111 void do_fsel (void);
112 -#ifdef CONFIG_SOFTFLOAT 112 +#if USE_PRECISE_EMULATION
113 void do_fmadd (void); 113 void do_fmadd (void);
114 void do_fmsub (void); 114 void do_fmsub (void);
115 #endif 115 #endif
116 void do_fnmadd (void); 116 void do_fnmadd (void);
117 void do_fnmsub (void); 117 void do_fnmsub (void);
118 -#ifdef CONFIG_SOFTFLOAT 118 +#if USE_PRECISE_EMULATION
119 void do_frsp (void); 119 void do_frsp (void);
120 #endif 120 #endif
121 void do_fctiw (void); 121 void do_fctiw (void);