diff options
author | Jonathan Neuschäfer <j.neuschaefer@gmx.net> | 2017-11-24 23:12:14 +0100 |
---|---|---|
committer | Martin Roth <martinroth@google.com> | 2017-12-02 05:24:13 +0000 |
commit | 3f75f5da42c30ee9e0b6e20abd8c896aa5cd9dcf (patch) | |
tree | b88e37afd5ae727d283ee59ebbd1184ad1064f09 /src/arch/riscv | |
parent | 0baad61a4e2f66f91d18578a7260db19a3531caa (diff) |
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>
Diffstat (limited to 'src/arch/riscv')
-rw-r--r-- | src/arch/riscv/trap_handler.c | 6 | ||||
-rw-r--r-- | src/arch/riscv/trap_util.S | 19 |
2 files changed, 10 insertions, 15 deletions
diff --git a/src/arch/riscv/trap_handler.c b/src/arch/riscv/trap_handler.c index 842e3eab3b..288b05d1d1 100644 --- a/src/arch/riscv/trap_handler.c +++ b/src/arch/riscv/trap_handler.c @@ -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"); } diff --git a/src/arch/riscv/trap_util.S b/src/arch/riscv/trap_util.S index 5582a0770c..98db85c4cb 100644 --- a/src/arch/riscv/trap_util.S +++ b/src/arch/riscv/trap_util.S @@ -140,15 +140,10 @@ trap_entry: save_tf move a0,sp jal trap_handler - .global supervisor_call_return -supervisor_call_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 - mret + + .global trap_return +trap_return: + csrr a0, mscratch + restore_regs + # go back to the previous mode + mret |