Jelajahi Sumber

Dyncom/VFP: Strip the VFP_NAN_FLAG sentinel value when setting vfp exceptions.

Subv 9 tahun lalu
induk
melakukan
11fe85f129

+ 1 - 1
src/core/arm/skyeye_common/vfp/vfpdouble.cpp

@@ -1216,7 +1216,7 @@ u32 vfp_double_cpdo(ARMul_State* state, u32 inst, u32 fpscr) {
         except = fop->fn(state, dest, dn, dm, fpscr);
         except = fop->fn(state, dest, dn, dm, fpscr);
         LOG_TRACE(Core_ARM11, "VFP: itr%d: exceptions=%08x", vecitr >> FPSCR_LENGTH_BIT, except);
         LOG_TRACE(Core_ARM11, "VFP: itr%d: exceptions=%08x", vecitr >> FPSCR_LENGTH_BIT, except);
 
 
-        exceptions |= except;
+        exceptions |= except & ~VFP_NAN_FLAG;
 
 
         /*
         /*
          * CHECK: It appears to be undefined whether we stop when
          * CHECK: It appears to be undefined whether we stop when

+ 1 - 1
src/core/arm/skyeye_common/vfp/vfpsingle.cpp

@@ -1231,7 +1231,7 @@ u32 vfp_single_cpdo(ARMul_State* state, u32 inst, u32 fpscr) {
         except = fop->fn(state, dest, sn, m, fpscr);
         except = fop->fn(state, dest, sn, m, fpscr);
         LOG_TRACE(Core_ARM11, "itr%d: exceptions=%08x", vecitr >> FPSCR_LENGTH_BIT, except);
         LOG_TRACE(Core_ARM11, "itr%d: exceptions=%08x", vecitr >> FPSCR_LENGTH_BIT, except);
 
 
-        exceptions |= except;
+        exceptions |= except & ~VFP_NAN_FLAG;
 
 
         /*
         /*
          * CHECK: It appears to be undefined whether we stop when
          * CHECK: It appears to be undefined whether we stop when