diff options
author | Richard Henderson <rth@twiddle.net> | 2017-07-14 10:00:33 -1000 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2017-09-06 08:06:47 -0700 |
commit | 3805c2eba8999049bbbea29fdcdea4d47d943c88 (patch) | |
tree | c3947fa0e3b85c5dae9775c59d80197ad0136cb1 /target | |
parent | 77fc6f5e28667634916f114ae04c6029cd7b9c45 (diff) | |
download | qemu-3805c2eba8999049bbbea29fdcdea4d47d943c88.zip qemu-3805c2eba8999049bbbea29fdcdea4d47d943c88.tar.gz qemu-3805c2eba8999049bbbea29fdcdea4d47d943c88.tar.bz2 |
target/arm: Delay check for magic kernel page
There's nothing magic about the exception that we generate in order
to execute the magic kernel page. We can and should allow gdb to
set a breakpoint at this location.
Reviewed-by: Emilio G. Cota <cota@braap.org>
Signed-off-by: Richard Henderson <rth@twiddle.net>
Diffstat (limited to 'target')
-rw-r--r-- | target/arm/translate.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/target/arm/translate.c b/target/arm/translate.c index 0c39c2b..746193e 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -11968,17 +11968,6 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb) 0); num_insns++; -#ifdef CONFIG_USER_ONLY - /* Intercept jump to the magic kernel page. */ - if (dc->pc >= 0xffff0000) { - /* We always get here via a jump, so know we are not in a - conditional execution block. */ - gen_exception_internal(EXCP_KERNEL_TRAP); - dc->is_jmp = DISAS_NORETURN; - break; - } -#endif - if (unlikely(!QTAILQ_EMPTY(&cs->breakpoints))) { CPUBreakpoint *bp; QTAILQ_FOREACH(bp, &cs->breakpoints, entry) { @@ -12010,6 +11999,17 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb) gen_io_start(); } +#ifdef CONFIG_USER_ONLY + /* Intercept jump to the magic kernel page. */ + if (dc->pc >= 0xffff0000) { + /* We always get here via a jump, so know we are not in a + conditional execution block. */ + gen_exception_internal(EXCP_KERNEL_TRAP); + dc->is_jmp = DISAS_NORETURN; + break; + } +#endif + if (dc->ss_active && !dc->pstate_ss) { /* Singlestep state is Active-pending. * If we're in this state at the start of a TB then either |