target-i386: Avoid repeated calls to the bnd_jmp helper

Two flags were tested the wrong way.

Tested-by: Hervé Poussineau <hpoussin@reactos.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <1456845145-18891-1-git-send-email-pbonzini@redhat.com>
Signed-off-by: Richard Henderson <rth@twiddle.net>
[rth: Fixed enable test as well.]
This commit is contained in:
Paolo Bonzini 2016-03-01 16:12:25 +01:00 committed by Richard Henderson
parent 618a5a8bc5
commit 8b33e82b86
1 changed files with 5 additions and 5 deletions

View File

@ -2409,12 +2409,12 @@ static void gen_reset_hflag(DisasContext *s, uint32_t mask)
/* Clear BND registers during legacy branches. */ /* Clear BND registers during legacy branches. */
static void gen_bnd_jmp(DisasContext *s) static void gen_bnd_jmp(DisasContext *s)
{ {
/* Do nothing if BND prefix present, MPX is disabled, or if the /* Clear the registers only if BND prefix is missing, MPX is enabled,
BNDREGs are known to be in INIT state already. The helper and if the BNDREGs are known to be in use (non-zero) already.
itself will check BNDPRESERVE at runtime. */ The helper itself will check BNDPRESERVE at runtime. */
if ((s->prefix & PREFIX_REPNZ) == 0 if ((s->prefix & PREFIX_REPNZ) == 0
&& (s->flags & HF_MPX_EN_MASK) == 0 && (s->flags & HF_MPX_EN_MASK) != 0
&& (s->flags & HF_MPX_IU_MASK) == 0) { && (s->flags & HF_MPX_IU_MASK) != 0) {
gen_helper_bnd_jmp(cpu_env); gen_helper_bnd_jmp(cpu_env);
} }
} }