OSDN Git Service

target-i386: Update BNDSTATUS for exceptions raised by BOUND
authorRichard Henderson <rth@twiddle.net>
Mon, 6 Jul 2015 18:37:40 +0000 (19:37 +0100)
committerRichard Henderson <rth@twiddle.net>
Mon, 15 Feb 2016 03:50:00 +0000 (14:50 +1100)
Signed-off-by: Richard Henderson <rth@twiddle.net>
target-i386/mem_helper.c

index 7de7752..85e7516 100644 (file)
@@ -112,6 +112,9 @@ void helper_boundw(CPUX86State *env, target_ulong a0, int v)
     high = cpu_ldsw_data_ra(env, a0 + 2, GETPC());
     v = (int16_t)v;
     if (v < low || v > high) {
+        if (env->hflags & HF_MPX_EN_MASK) {
+            env->bndcs_regs.sts = 0;
+        }
         raise_exception_ra(env, EXCP05_BOUND, GETPC());
     }
 }
@@ -123,6 +126,9 @@ void helper_boundl(CPUX86State *env, target_ulong a0, int v)
     low = cpu_ldl_data_ra(env, a0, GETPC());
     high = cpu_ldl_data_ra(env, a0 + 4, GETPC());
     if (v < low || v > high) {
+        if (env->hflags & HF_MPX_EN_MASK) {
+            env->bndcs_regs.sts = 0;
+        }
         raise_exception_ra(env, EXCP05_BOUND, GETPC());
     }
 }