From 8b33e82b863d1c6fce7e69a41f6c96a8e15b73fb Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 1 Mar 2016 16:12:25 +0100 Subject: [PATCH] target-i386: Avoid repeated calls to the bnd_jmp helper MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Two flags were tested the wrong way. Tested-by: Hervé Poussineau Signed-off-by: Paolo Bonzini Message-Id: <1456845145-18891-1-git-send-email-pbonzini@redhat.com> Signed-off-by: Richard Henderson [rth: Fixed enable test as well.] --- target-i386/translate.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/target-i386/translate.c b/target-i386/translate.c index 53dee79afd..cd214a6180 100644 --- a/target-i386/translate.c +++ b/target-i386/translate.c @@ -2409,12 +2409,12 @@ static void gen_reset_hflag(DisasContext *s, uint32_t mask) /* Clear BND registers during legacy branches. */ static void gen_bnd_jmp(DisasContext *s) { - /* Do nothing if BND prefix present, MPX is disabled, or if the - BNDREGs are known to be in INIT state already. The helper - itself will check BNDPRESERVE at runtime. */ + /* Clear the registers only if BND prefix is missing, MPX is enabled, + and if the BNDREGs are known to be in use (non-zero) already. + The helper itself will check BNDPRESERVE at runtime. */ if ((s->prefix & PREFIX_REPNZ) == 0 - && (s->flags & HF_MPX_EN_MASK) == 0 - && (s->flags & HF_MPX_IU_MASK) == 0) { + && (s->flags & HF_MPX_EN_MASK) != 0 + && (s->flags & HF_MPX_IU_MASK) != 0) { gen_helper_bnd_jmp(cpu_env); } } -- 2.11.4.GIT