aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/riscv/riscv/trap.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/sys/riscv/riscv/trap.c b/sys/riscv/riscv/trap.c
index f5aff2601336..b483659dcd8e 100644
--- a/sys/riscv/riscv/trap.c
+++ b/sys/riscv/riscv/trap.c
@@ -158,15 +158,12 @@ dump_regs(struct trapframe *frame)
}
static void
-ecall_handler(struct trapframe *frame)
+ecall_handler(void)
{
struct thread *td;
td = curthread;
- KASSERT(td->td_frame == frame,
- ("%s: td_frame %p != frame %p", __func__, td->td_frame, frame));
-
syscallenter(td);
syscallret(td);
}
@@ -324,9 +321,11 @@ do_trap_user(struct trapframe *frame)
struct pcb *pcb;
td = curthread;
- td->td_frame = frame;
pcb = td->td_pcb;
+ KASSERT(td->td_frame == frame,
+ ("%s: td_frame %p != frame %p", __func__, td->td_frame, frame));
+
/* Ensure we came from usermode, interrupts disabled */
KASSERT((csr_read(sstatus) & (SSTATUS_SPP | SSTATUS_SIE)) == 0,
("Came from U mode with interrupts enabled"));
@@ -357,7 +356,7 @@ do_trap_user(struct trapframe *frame)
break;
case EXCP_USER_ECALL:
frame->tf_sepc += 4; /* Next instruction */
- ecall_handler(frame);
+ ecall_handler();
break;
case EXCP_ILLEGAL_INSTRUCTION:
#ifdef FPE