summaryrefslogtreecommitdiffstats
path: root/linux-user
diff options
context:
space:
mode:
authorRichard Henderson2020-08-23 18:17:22 +0200
committerRichard Henderson2020-09-01 16:43:35 +0200
commitf523531471c9342020cda0ef5a2eccb7d77e7e34 (patch)
treec52e9f8dba13eb49436ad26f5db75dd7ae19301f /linux-user
parenttarget/microblaze: Tidy mb_cpu_dump_state (diff)
downloadqemu-f523531471c9342020cda0ef5a2eccb7d77e7e34.tar.gz
qemu-f523531471c9342020cda0ef5a2eccb7d77e7e34.tar.xz
qemu-f523531471c9342020cda0ef5a2eccb7d77e7e34.zip
target/microblaze: Convert brk and brki to decodetree
Split these out of the normal branch instructions, as they require special handling. Perform the entire operation inline, instead of raising EXCP_BREAK to do the work in mb_cpu_do_interrupt. This fixes a bug in that brki rd, imm, for imm != 0x18 is not supposed to set MSR_BIP. This fixes a bug in that imm == 0 is the reset vector and 0x18 is the debug vector, and neither should raise a tcg exception in system mode. Introduce EXCP_SYSCALL for microblaze-linux-user. Tested-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'linux-user')
-rw-r--r--linux-user/microblaze/cpu_loop.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/linux-user/microblaze/cpu_loop.c b/linux-user/microblaze/cpu_loop.c
index 3de99ea311..c3396a6e09 100644
--- a/linux-user/microblaze/cpu_loop.c
+++ b/linux-user/microblaze/cpu_loop.c
@@ -48,7 +48,7 @@ void cpu_loop(CPUMBState *env)
case EXCP_INTERRUPT:
/* just indicate that signals should be handled asap */
break;
- case EXCP_BREAK:
+ case EXCP_SYSCALL:
/* Return address is 4 bytes after the call. */
env->regs[14] += 4;
env->pc = env->regs[14];