RISC-V 手册 v2(一本开源指令集的指南)把控制状态寄存器 mstatus 中的 MIE 位置零以禁用中断,并把先前的 MIE 值保 留到 MPIE 中。 ⚫ 发生异常之前的权限模式保留在 mstatus 的 MPP 域中,再把权限模式更改为 M。图 10.5 显示了 MPP 域的编码(如果处理器仅实现 M 模式,则有效地跳过这 个步骤)。 为避免覆盖整数寄存器中的内容,中断处理程序先在最开始用 mscratch 和整数 寄存器(例如 a0)中的值交换。通常,软件会让 mret 指令(M 模 式特有的指令)返回。mret 将 PC 设置为 mepc,通过将 mstatus 的 MPIE 域复制到 MIE 来恢复之前的中断使能设置,并将权限模式设置为 mstatus 的 MPP 域中的值。 这基本是前一段中描述的逆操作。 图 10.6 展示了遵循此模式的基本时钟中断处理程序的 RISC-V 汇编代码。它只对 时间比较器执行了递增操作,然后继续执行之前的任务。更实际的时钟中断处理程序 限模式:用户模式(U 模式)。这种模式拒绝使用这些功能,并在尝试执行 M 模式指令或 访问 CSR 的时候产生非法指令异常。其它时候,U 模式和 M 模式的表现十分相似。通过 将 mstatus.MPP 设置为 U(如图 10.5 所示,编码为 0),然后执行 mret 指令,软件可以 从 M 模式进入 U 模式。如果在 U 模式下发生异常,则把控制移交给 M 模式。 这些不可信的代码还必须被限制只能访问自己那部分内存。实现了0 码力 | 164 页 | 8.85 MB | 1 年前3
RISC-V 开放架构设计之道 1.0.0Reserved TSR TW TVM MXR SUM MPRV 1 XLEN-24 1 1 1 1 1 1 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 XS FS MPP Res. SPP MPIE Res. SPIE Res. MIE Res. SIE Res. 2 2 2 2 1 1 1 1 1 1 1 1 1 图 10.4: mstatus CSR。在仅有机器模式且无 的信息字写入 mtval。 • 将 mstatus.MIE 清零以屏蔽中断,并将 MIE 的旧值保存到 MPIE 中。 • 将异常发生前的特权模式保存到 mstatus.MPP,并将特权模式更改为 M。 图 10.9 列出了 MPP 字段的编码。(若处理器仅支持 M 模式,则省略此步)。 为避免覆盖整数寄存器的内容,中断处理程序的准备阶段通常先交换 mscratch 和某个整数寄存器(如 a0)。软件通常预先让 到异常发生前的值。最后,处理程序通过一条 M 模式专用的指令 mret 返回。mret 将 PC 设为 mepc,将 mstatus.MPIE 复制到 MIE 字段来恢复之前的中断使能状态, 并将特权模式设为 mstatus.MPP 的值。此过程基本是前文所述行为的逆操作。 图 10.10 展示了一个简单的时钟中断处理程序的 RISC-V 汇编代码,其处理过程 如上文所述。它仅递增时间比较器,然后返回之前的任务继续执行。在实际系统中,0 码力 | 223 页 | 15.31 MB | 1 年前3
Guía Práctica de RISC-V:
El Atlas de una Arquitectura Abierta
Primera Edición, 1.0.5Reservado TSR TW TVM MXR SUM MPRV 1 XLEN-24 1 1 1 1 1 1 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 XS FS MPP Res. SPP MPIE Res. SPIE Res. MIE Res. SIE Res. 2 2 2 2 1 1 1 1 1 1 1 1 1 Figura 10.4: El CSR m s privilegio pre-excepción es preservado en el campo MPP de m s t a t u s , y el modo de privilegio es cambiado a M. La Figura 10.9 muestra la codificación del campo MPP (Si el procesador solo implementa el modo copiando el campo MPIE de m s t a t u s a MIE, y escribe el modo de privilegio al valor en el campo MPP de m s t a t u s , esencialmente revirtiendo las acciones descritas en el párrafo anterior. La Figura0 码力 | 217 页 | 29.97 MB | 1 年前3
Guia prático RISC-V
Atlas de uma Arquitetura Aberta
Primeira edição, 1.0.0Reserved TSR TW TVM MXR SUM MPRV 1 XLEN-24 1 1 1 1 1 1 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 XS FS MPP Res. SPP MPIE Res. SPIE Res. MIE Res. SIE Res. 2 2 2 2 1 1 1 1 1 1 1 1 1 Figura 10.4: O CSR m s t privilégio de pré-exceção é preservado no campo MPP do m s t a t u s e o modo de privilégio é alterado para M. A Figura 10.9 mostra a codificação do campo MPP. (Se o processador implementar apenas o M-mode anterior copiando o campo MPIE m s t a t u s para MIE e "seta" o modo de privilégio para o valor no campo MPP de m s t a t u s , essencialmente invertendo as ações descrito no parágrafo anterior. A Figura 100 码力 | 215 页 | 21.77 MB | 1 年前3
The RISC-V Reader:
An Open Architecture AtlasFirst Edition, 1.0.0 - 2021Reserved TSR TW TVM MXR SUM MPRV 1 XLEN-24 1 1 1 1 1 1 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 XS FS MPP Res. SPP MPIE Res. SPIE Res. MIE Res. SIE Res. 2 2 2 2 1 1 1 1 1 1 1 1 1 그림 10.4: mstatus CSR. 머신 CSR에 있는 MIE=0으로 설정하여 비활성되고, MIE의 이전 값은 MPIE에 보존된다. • 이전 예외상황 특권 모드는 mstatus’ MPP 필드에 보존되고, 특권 모드는 M으로 변 화된다. 그림 10.9는 MPP 필드의 인코딩을 보이고 있다. (만약 프로세서가 M-mode 만 구현되어 있다면 이 단계는 효율적으로 건너뛴다.) 정수 레지스터의 내용을 이용해 복귀한다. mret는 PC를 mepc로 설정하고, mstatus MPIE 필드를 MIE에 복사하여 이전 인터럽트 활성화 설정을 복구하고, 특권 모드를 mstatus’ MPP 필드에 있는 값으로 설정한다. 앞 단락에서 기술된 동작을 정확하게 반대로 수행한다. 그림 10.10은 이런 패턴을 따르는 기본적인 타이머 인터럽트 핸들러에 대한 RISC-V0 码力 | 232 页 | 5.16 MB | 1 年前3
共 5 条
- 1













