From: Aurelien Jarno <aurelien@aurel32.net>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <rth@twiddle.net>,
Aurelien Jarno <aurelien@aurel32.net>
Subject: [Qemu-devel] [PULL 5/6] target/sh4: Do not singlestep after exceptions
Date: Mon, 18 Dec 2017 23:40:29 +0100 [thread overview]
Message-ID: <20171218224030.26726-6-aurelien@aurel32.net> (raw)
In-Reply-To: <20171218224030.26726-1-aurelien@aurel32.net>
From: Richard Henderson <rth@twiddle.net>
If we've already raised an exception (and set NORETURN),
do not emit unreachable code to raise a debug exception.
Note that gen_goto_tb takes single-stepping into account.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Message-Id: <20170907185057.23421-4-richard.henderson@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
target/sh4/translate.c | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/target/sh4/translate.c b/target/sh4/translate.c
index efd1081c57..dd9aaa4e63 100644
--- a/target/sh4/translate.c
+++ b/target/sh4/translate.c
@@ -270,6 +270,7 @@ static void gen_jump(DisasContext * ctx)
} else {
tcg_gen_lookup_and_goto_ptr();
}
+ ctx->bstate = DISAS_NORETURN;
} else {
gen_goto_tb(ctx, 0, ctx->delayed_pc);
}
@@ -2341,24 +2342,23 @@ void gen_intermediate_code(CPUState *cs, struct TranslationBlock *tb)
ctx.envflags &= ~GUSA_MASK;
}
- if (cs->singlestep_enabled) {
+ switch (ctx.bstate) {
+ case DISAS_STOP:
gen_save_cpu_state(&ctx, true);
- gen_helper_debug(cpu_env);
- } else {
- switch (ctx.bstate) {
- case DISAS_STOP:
- gen_save_cpu_state(&ctx, true);
+ if (cs->singlestep_enabled) {
+ gen_helper_debug(cpu_env);
+ } else {
tcg_gen_exit_tb(0);
- break;
- case DISAS_NEXT:
- gen_save_cpu_state(&ctx, false);
- gen_goto_tb(&ctx, 0, ctx.pc);
- break;
- case DISAS_NORETURN:
- break;
- default:
- g_assert_not_reached();
- }
+ }
+ break;
+ case DISAS_NEXT:
+ gen_save_cpu_state(&ctx, false);
+ gen_goto_tb(&ctx, 0, ctx.pc);
+ break;
+ case DISAS_NORETURN:
+ break;
+ default:
+ g_assert_not_reached();
}
gen_tb_end(tb, num_insns);
--
2.15.1
next prev parent reply other threads:[~2017-12-18 22:40 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-18 22:40 [Qemu-devel] [PULL 0/6] Queued target/sh4 patches Aurelien Jarno
2017-12-18 22:40 ` [Qemu-devel] [PULL 1/6] target/sh4: add missing tcg_temp_free() in _decode_opc() Aurelien Jarno
2017-12-18 22:40 ` [Qemu-devel] [PULL 2/6] target/sh4: fix TCG leak during gusa sequence Aurelien Jarno
2017-12-18 22:40 ` [Qemu-devel] [PULL 3/6] target/sh4: Use cmpxchg for movco when parallel_cpus Aurelien Jarno
2017-12-18 22:40 ` [Qemu-devel] [PULL 4/6] target/sh4: Convert to DisasJumpType Aurelien Jarno
2017-12-18 22:40 ` Aurelien Jarno [this message]
2017-12-18 22:40 ` [Qemu-devel] [PULL 6/6] target/sh4: Convert to DisasContextBase Aurelien Jarno
2017-12-19 21:16 ` [Qemu-devel] [PULL 0/6] Queued target/sh4 patches Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171218224030.26726-6-aurelien@aurel32.net \
--to=aurelien@aurel32.net \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).