On 3/26/22 06:50, Peter Maydell wrote:
On Fri, 25 Mar 2022 at 19:52, Richard Henderson
<richard.hender...@linaro.org> wrote:
Note that this advance *should* be done by the translator, as
that's the pc value that's supposed to be generated by hardware.
However, that's a much larger change across sysemu as well.
In the meantime, produce the correct PC for any signals raised
by the trap instruction.
Signed-off-by: Richard Henderson <richard.hender...@linaro.org>
---
linux-user/nios2/cpu_loop.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c
index 1e93ef34e6..2768ae61dd 100644
--- a/linux-user/nios2/cpu_loop.c
+++ b/linux-user/nios2/cpu_loop.c
@@ -40,6 +40,12 @@ void cpu_loop(CPUNios2State *env)
break;
case EXCP_TRAP:
+ /*
+ * TODO: This advance should be done in the translator, as
+ * hardware produces an advanced pc as part of all exceptions.
+ */
+ env->regs[R_PC] += 4;
+
You need to rewind again for the TRAP_BRKPT case, as the
kernel does fp->ea -= 4 in breakpoint_c().
Yep, thanks.
r~