ecall指令行为

当用户程序调用 ecall (Environment Call) 时,硬件原子性地完成以下步骤(软件无法打断):

  1. 权限提升: Mode: User Supervisor。
  2. 保存 PC: sepc 当前 pc
  3. 保存原因: scause Trap 类型 (例如 Syscall 为 8)。
  4. 关闭中断: sstatus 的 SIE 位清零 (防止 Trap 过程中再来一个中断搞乱现场)。
  5. 跳转: pc stvec

注意:

  • 硬件不会切换页表。
  • 硬件不会切换栈。
  • 硬件不会保存通用寄存器(除了 PC)。
  • 这些脏活累活全都要靠 uservec (软件) 来做。