riscv - RISC-V HW 如何确定权限级别?
问题描述
RISC-V 当前的 SW 特权级别未在任何 CSR 中设置。尽管如此,规范声明“尝试在没有适当特权级别的情况下访问 CSR ......引发非法指令”。那么(在硬件中)如何实现它?
解决方案
好吧,在中断上——“xPP 保持以前的特权模式(x=M,S 或 U)。xPP 字段只能保持最高 x 的特权模式,所以 MPP 是两位宽,SPP 是一位宽,UPP 是隐含为零。”
实际上,我现在发现的是 xRET 指令使处理器能够(内部)存储当前模式 - “MRET、SRET 或 URET 指令用于从 M-mode、S-mode 或 U 中的陷阱返回分别为-mode。当执行xRET指令时,假设xPP保持值y,x IE设置为x PIE;特权模式更改为y;x PIE设置为1;xPP设置为U(或M,如果不支持用户模式)。”
推荐阅读
- spring - 带有 OAuth2 的 Spring Security 5 休息客户端
- arraylist - 为什么我的数字序列不能正确地从二维数组列表中打印出来?
- sql-server - SQL Server:带有日期的递归 CTE - 类型不匹配
- reactjs - 无法让 React Forwarded refs 在测试环境中工作
- html - 顺利加载消息Angular 8
- react-native - 此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 6.0 不兼容。安装一些库时出错
- python-3.x - 按列名拼接 Pandas 数据框
- javascript - 为什么两个 if 语句在一个函数中不起作用?
- javascript - Javascript - 原始字符串隐式转换为对象
- php - PHP/Symfony 3:使用完全限定的类名(字符串)来调用实例化的类方法