它是用户态普通指令吗?
不是。DRET 只在 D-mode 且不从 Program Buffer 执行时有定义;它不是用户态汇编指令。
从调试模式返回:PC←dpc,恢复 dcsr 记录的 prv/v(以及适用时的 pelp)状态。仅在 D-mode 且不从 Program Buffer 执行时有定义。
扩展条件:调试规范 Sdext 的调试模式返回;推荐的 DRET 机制仅在 D-mode 且不从 Program Buffer 执行时有定义。
DRET 由 Debug Module 用于恢复正常执行。它的推荐编码为 0x7b200073;执行时 PC 从 dpc 恢复,正常执行按 dcsr 中的 prv 和 v 恢复,适用时 ELP 从 pelp 恢复。DRET 仅在 D-mode 且不从 Program Buffer 执行时有定义;其他上下文的行为不由这段 DRET 定义规定。
DRET 是调试规范推荐的恢复机制:仅 D-mode 且不从 Program Buffer 执行时有定义,PC 从 dpc 恢复,模式按 dcsr.prv/v 恢复。
仅在 D-mode 且不从 Program Buffer 执行:若已准备 dpc=0x8000、dcsr.prv=M、v=0,dret 按调试恢复规则从 PC=0x8000 在 M-mode 恢复;不是 SRET/MRET 的中断使能恢复序列。
仅在 D-mode 且不从 Program Buffer 执行:若已准备 dpc=0x8000、dcsr.prv=M、v=0,dret 按调试恢复规则从 PC=0x8000 在 M-mode 恢复;不是 SRET/MRET 的中断使能恢复序列。
不是。DRET 只在 D-mode 且不从 Program Buffer 执行时有定义;它不是用户态汇编指令。
PC 从 dpc 恢复;正常执行按 dcsr.prv 与 dcsr.v 恢复,适用时 ELP 从 pelp 恢复。官方文本没有把它定义为 mret/sret 的中断使能恢复序列。