arch/riscv: Unify trap return

Change-Id: I9de0c92b3f925e8f4db00d7281222a07db68b2ae
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
Reviewed-on: https://review.coreboot.org/21763
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
Jonathan Neuschäfer 2017-11-24 23:12:14 +01:00 committed by Martin Roth
parent 0baad61a4e
commit 3f75f5da42
2 changed files with 10 additions and 15 deletions

View File

@ -69,7 +69,7 @@ void handle_supervisor_call(trapframe *tf) {
}
tf->gpr[10] = returnValue;
write_csr(mepc, read_csr(mepc) + 4);
asm volatile("j supervisor_call_return");
asm volatile("j trap_return");
}
static const char *const exception_names[] = {
@ -264,7 +264,7 @@ void handle_misaligned_load(trapframe *tf) {
// return to where we came from
write_csr(mepc, read_csr(mepc) + 4);
asm volatile("j machine_call_return");
asm volatile("j trap_return");
}
void handle_misaligned_store(trapframe *tf) {
@ -292,5 +292,5 @@ void handle_misaligned_store(trapframe *tf) {
// return to where we came from
write_csr(mepc, read_csr(mepc) + 4);
asm volatile("j machine_call_return");
asm volatile("j trap_return");
}

View File

@ -140,15 +140,10 @@ trap_entry:
save_tf
move a0,sp
jal trap_handler
.global supervisor_call_return
supervisor_call_return:
.global trap_return
trap_return:
csrr a0, mscratch
restore_regs
# go back into supervisor call
mret
.global machine_call_return
machine_call_return:
csrr a0, mscratch
restore_regs
# go back into machine call
# go back to the previous mode
mret