ECALL cause 8

RISC-V ECALL Trap

U-mode ecall -> trap entry -> handler -> return

Step 1 / 5目标: S-mode
流程用户态执行流到达 ecall;到目标 handler 的连线标示硬件 Trap entry:cause 8、medeleg[8]=1、写 sepc/scause/stval=0、更新 sstatus 可见状态字段,并跳到 stvec.BASE。sepc / sret
ECALL
Trap entry
Handler
EPC +4
xRET
当前步骤1/5

U-mode 到达 ECALL

U-mode instruction(用户态指令)

当前在 U-mode 执行地址 0x4040 处的 ECALL 指令。ECALL 会触发同步异常;随后硬件会把触发地址记录到目标 EPC(sepc 或 mepc),把原因记录到目标 cause(scause 或 mcause),保存返回状态,并按 delegation 配置进入 S-mode 或 M-mode 路径。

本页不规定具体操作系统的 syscall ABI。

关键说明

ECALL trap 容易混淆的边界

EPC

EPC 先保存 ecall 指令地址,不是自动保存下一条指令。

ABI

系统调用号和参数位置属于 OS/执行环境 ABI,不是 RISC-V ISA 固定语义。

medeleg[8]

medeleg[8] 改变 trap 目标,不改变 ECALL 的 cause=8。

官方语义边界

官方手册定义 ECALL 的 trap 和 cause;系统调用 ABI 是 OS/执行环境约定。