diff options
author | Bastian Koppelmann <kbastian@mail.uni-paderborn.de> | 2020-05-29 09:21:46 +0200 |
---|---|---|
committer | Bastian Koppelmann <kbastian@mail.uni-paderborn.de> | 2020-06-01 16:55:12 +0200 |
commit | 1ed8739a9ab38f97f901f0988d266b2981627f1b (patch) | |
tree | 0717395f5b1cd249044742684cf575b1a4204847 /target | |
parent | 44ee3bafb6711180e77dd071beb04fae70b1cb65 (diff) | |
download | qemu-1ed8739a9ab38f97f901f0988d266b2981627f1b.zip qemu-1ed8739a9ab38f97f901f0988d266b2981627f1b.tar.gz qemu-1ed8739a9ab38f97f901f0988d266b2981627f1b.tar.bz2 |
target/tricore: Raise EXCP_DEBUG in gen_goto_tb() for singlestep
this is needed for remote gdb connections.
Signed-off-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
Message-Id: <20200529072148.284037-4-kbastian@mail.uni-paderborn.de>
Diffstat (limited to 'target')
-rw-r--r-- | target/tricore/translate.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/target/tricore/translate.c b/target/tricore/translate.c index 608f72d..7752630 100644 --- a/target/tricore/translate.c +++ b/target/tricore/translate.c @@ -3238,6 +3238,14 @@ static inline bool use_goto_tb(DisasContext *ctx, target_ulong dest) #endif } +static void generate_qemu_excp(DisasContext *ctx, int excp) +{ + TCGv_i32 tmp = tcg_const_i32(excp); + gen_helper_qemu_excp(cpu_env, tmp); + ctx->base.is_jmp = DISAS_NORETURN; + tcg_temp_free(tmp); +} + static inline void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest) { if (use_goto_tb(ctx, dest)) { @@ -3247,7 +3255,7 @@ static inline void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest) } else { gen_save_pc(dest); if (ctx->base.singlestep_enabled) { - /* raise exception debug */ + generate_qemu_excp(ctx, EXCP_DEBUG); } tcg_gen_exit_tb(NULL, 0); } @@ -3266,14 +3274,6 @@ static void generate_trap(DisasContext *ctx, int class, int tin) tcg_temp_free(tintemp); } -static void generate_qemu_excp(DisasContext *ctx, int excp) -{ - TCGv_i32 tmp = tcg_const_i32(excp); - gen_helper_qemu_excp(cpu_env, tmp); - ctx->base.is_jmp = DISAS_NORETURN; - tcg_temp_free(tmp); -} - static inline void gen_branch_cond(DisasContext *ctx, TCGCond cond, TCGv r1, TCGv r2, int16_t address) { |