From 31941c0813a18432c086f0361da3f56ac800af3e Mon Sep 17 00:00:00 2001 From: vhaudiquet Date: Wed, 11 Oct 2023 19:25:06 +0200 Subject: [PATCH] MRET jump support --- src/cpu/rv32cpu.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/cpu/rv32cpu.c b/src/cpu/rv32cpu.c index 299ef08..ae8bdd3 100644 --- a/src/cpu/rv32cpu.c +++ b/src/cpu/rv32cpu.c @@ -522,7 +522,9 @@ static void cpu_execute(rv32_cpu_t* cpu, instruction_t* instruction) fprintf(stderr, "SRET: We don't support that.\n"); break; case IMM_MRET: - fprintf(stderr, "MRET: We don't support that.\n"); + // Act like a normal ret/jalr, with destination address being CSR_MEPC content + fprintf(stderr, "Warning: MRET: We don't support privilege mode change\n"); + cpu->pc = cpu->csr[CSR_MEPC] - 4; break; default: switch(instruction->func7)