我目前正在研究具有规范版本 2.2 和特权架构版本 1.10 的 RISC-V 规范。在 RISC-V 规范的第 2 章中,提到“[...] 尽管一个简单的实现可能涵盖了八个 SCALL/SBREAK/CSRR* 指令,其中一条 SYSTEM 硬件指令总是捕获 [...]”
但是,当我查看特权规范时,指令 MRET
也是 SYSTEM 指令,需要从陷阱返回。现在我很困惑需要多少机器级 ISA:是否可以省略所有 M 级 CSR 并为任何系统指令使用软件处理程序,如规范中所述?如果是这样,如何传入返回地址和陷阱原因等信息?它们是通过常规寄存器 x1-x31 完成的吗?
或者,如果我的目标是一个只有 M 级特权的简单嵌入式内核,仅实现以下 M 级 CSR 就足够了吗?
mvendorid
marchid
mimpid
mhartid
misa
mscratch
mepc
mcause
最后,这些CSR中有多少可以省略?
最佳答案
关于exception - RISC-V SYSTEM 指令如何实现为陷阱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47605460/