RISCV架构中调试模式发生异常如何结束程序缓冲区的执行?

问题描述 投票:0回答:1

以下引用摘自 riscv-debug-spec 版本 0.132

  1. 异常不会更新任何寄存器。其中包括 Cause、epc、tval、dpc 和 mstatus。 他们结束程序缓冲区的执行。

我了解例外情况不会更新上述 CSR。但是,我无法理解它是如何结束程序缓冲区的。它没有明确的定义。我应该在调试模式下将异常计为 dret 指令吗?或者我应该将异常信息发送到负责结束执行缓冲区的调试模块?

cpu-architecture privileges riscv
1个回答
0
投票

如果我理解正确的话,你想使用progbuf来访问内存或寄存器。执行完progbuf中存储的指令后,需要结束progbuf运行。对于progbuf操作,程序必须以指令ebreak结束,该指令终止progbuf程序缓冲区的执行。 ebreak是一条指令,编码为0x100073,它会中断程序的运行,以便系统将使用权交给调试器。

© www.soinside.com 2019 - 2024. All rights reserved.