Hi, Peter Maydell schrieb: > On 25 March 2011 10:54, Alex Zuepke <azue...@sysgo.com> wrote: >> while digging through some problems with BKPT exceptions on ARM, I >> discovered that QEMU does not update IFSR on prefetch aborts. This >> should be done since ARMv6 according to ARM docs. Please include. > > This patch is the wrong approach to fixing this bug -- the > updating of the IFSR needs to be done when the exception > is taken, not when we translate the breakpoint instruction. > > I'll put this on my todo list. If you happen to have a convenient > test case demonstrating the problem, that would make a fix happen > faster ;-) > > -- PMM
I tried to fix it, new patch attached. But I'm not sure if it is required for semihosting as well. On ARMv7-M bkpt works differently, and debug registers aren't implemented yet, so I didn't touch it. Best Regards, Alex -- Alexander Zuepke azue...@sysgo.com SYSGO AG ~ Am Pfaffenstein 14 ~ 55270 Klein-Winternheim ~ Germany
target-arm: BKPT instructions should raise prefetch aborts with IFSR type 00010 diff against qemu 0.14.1 Signed-off-by: Alex Zuepke <azue...@sysgo.com> diff --git a/target-arm/helper.c b/target-arm/helper.c --- a/target-arm/helper.c +++ b/target-arm/helper.c @@ -847,6 +849,7 @@ void do_interrupt(CPUARMState *env) return; } } + env->cp15.c5_insn = 2; /* Fall through to prefetch abort. */ case EXCP_PREFETCH_ABORT: new_mode = ARM_CPU_MODE_ABT;