我目前正在学习RISC-V规范2.2版和特权架构1.10版。在RISC-V规范的第2章中提到:“[...]虽然一个简单的实现可能只涵盖8个SCALL/SBREAK/CSRR*指令,但使用始终触发陷阱的单个SYSTEM硬件指令即可[...]”。
然而,在我查看特权规范时,指令MRET也是一个SYSTEM指令,用于从陷阱返回。我现在感到困惑的是:机器级ISA需要多少内容?根据规范,是否可以省略所有M级CSR,并为任何SYSTEM指令使用软件处理程序?如果可以,那么如何传递诸如返回地址和陷阱原因之类的信息?它们是通过常规寄存器x1-x31完成的吗?
或者,如果我只针对具有M级权限的简单嵌入式核心进行实现,那么仅实现以下M级CSR是否足够?
最后,这些CSR中有多少可以省略?
然而,在我查看特权规范时,指令MRET也是一个SYSTEM指令,用于从陷阱返回。我现在感到困惑的是:机器级ISA需要多少内容?根据规范,是否可以省略所有M级CSR,并为任何SYSTEM指令使用软件处理程序?如果可以,那么如何传递诸如返回地址和陷阱原因之类的信息?它们是通过常规寄存器x1-x31完成的吗?
或者,如果我只针对具有M级权限的简单嵌入式核心进行实现,那么仅实现以下M级CSR是否足够?
mvendorid
marchid
mimpid
mhartid
misa
mscratch
mepc
mcause
最后,这些CSR中有多少可以省略?