[coreboot-gerrit] Change in coreboot[master]: Simplify the code of riscv exception handling

Anonymous Coward (Code Review) gerrit at coreboot.org
Tue Jun 6 11:49:14 CEST 2017


Anonymous Coward #1001664 has uploaded this change for review. ( https://review.coreboot.org/20046


Change subject: Simplify the code of riscv exception handling
......................................................................

Simplify the code of riscv exception handling

There is some useless code. This code is not necessary.
It's cam be remove. The code will become simple and do
not need to insert the assembly code

Change-Id: I92f7df2202f1c886789a9a29285f4321eec75d23
Signed-off-by: wxjstz <wxjstz at 126.com>
---
M src/arch/riscv/trap_handler.c
M src/arch/riscv/trap_util.S
2 files changed, 4 insertions(+), 23 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/46/20046/1

diff --git a/src/arch/riscv/trap_handler.c b/src/arch/riscv/trap_handler.c
index 4dd3d5b..0cfd8dc 100644
--- a/src/arch/riscv/trap_handler.c
+++ b/src/arch/riscv/trap_handler.c
@@ -69,7 +69,6 @@
 	}
 	tf->gpr[10] = returnValue;
 	write_csr(mepc, read_csr(mepc) + 4);
-	asm volatile("j supervisor_call_return");
 }
 
 static const char *const exception_names[] = {
@@ -206,6 +205,7 @@
 		case CAUSE_HYPERVISOR_ECALL:
 		case CAUSE_MACHINE_ECALL:
 			print_trap_information(tf);
+			die("Can't recover from trap. Halting.\n");
 			break;
 		case CAUSE_MISALIGNED_LOAD:
 			print_trap_information(tf);
@@ -225,10 +225,10 @@
 			printk(BIOS_EMERG, "Coreboot: can not handle a trap:\n");
 			printk(BIOS_EMERG, "================================\n");
 			print_trap_information(tf);
+			die("Can't recover from trap. Halting.\n");
 			break;
 	}
 
-	die("Can't recover from trap. Halting.\n");
 }
 
 static uint32_t fetch_instruction(uintptr_t vaddr) {
@@ -262,7 +262,6 @@
 
 	// return to where we came from
 	write_csr(mepc, read_csr(mepc) + 4);
-	asm volatile("j machine_call_return");
 }
 
 void handle_misaligned_store(trapframe *tf) {
@@ -290,5 +289,4 @@
 
 	// return to where we came from
 	write_csr(mepc, read_csr(mepc) + 4);
-	asm volatile("j machine_call_return");
 }
diff --git a/src/arch/riscv/trap_util.S b/src/arch/riscv/trap_util.S
index ae32379..7eb964e 100644
--- a/src/arch/riscv/trap_util.S
+++ b/src/arch/riscv/trap_util.S
@@ -105,17 +105,7 @@
 
   .endm
 
-.globl estack
-  .text
-  .global  supervisor_trap_entry
-supervisor_trap_entry:
-    csrw mscratch, sp
-    # load in the top of the machine stack
-    la	sp, _estack
-    addi sp,sp,-MENTRY_FRAME_SIZE
-    save_tf
-    move  a0,sp
-    jal trap_handler
+
     .global  trap_entry
 trap_entry:
   csrw mscratch, sp
@@ -136,14 +126,7 @@
   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
-  .word 0x30200073 # mret
-  .global machine_call_return
-machine_call_return:
+
     csrr a0, mscratch
     restore_regs
     # go back into machine call

-- 
To view, visit https://review.coreboot.org/20046
To unsubscribe, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I92f7df2202f1c886789a9a29285f4321eec75d23
Gerrit-Change-Number: 20046
Gerrit-PatchSet: 1
Gerrit-Owner: Anonymous Coward #1001664



More information about the coreboot-gerrit mailing list