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/执行环境约定。