RISCV用户模式断点支持需要更多“;“硬件”;对于GDB支持

RISCV用户模式断点支持需要更多“;“硬件”;对于GDB支持,gdb,interrupt,specifications,riscv,usermode,Gdb,Interrupt,Specifications,Riscv,Usermode,刚刚读完RISCV规范,更具体地说是“第二卷:RISC-V特权体系结构”,并对GDB(或任何其他调试器)应该如何工作提出了一个问题 基本上有两种编译标准GDB的方法:基于硬件或基于操作系统 一个区别是“单步指令”(si命令)——对于基于操作系统的指令,它是通过在每个可能的后续指令(下一条汇编指令,如果当前是条件分支,则可能是另一条汇编指令)上放置一个软件断点(将汇编指令替换为“断点”汇编指令)来实现的。忽略可能的中断、页面错误、操作系统请求等 对于基于硬件的GDB,没有任何内容是隐藏的,因此使用

刚刚读完RISCV规范,更具体地说是“第二卷:RISC-V特权体系结构”,并对GDB(或任何其他调试器)应该如何工作提出了一个问题

基本上有两种编译标准GDB的方法:基于硬件或基于操作系统

一个区别是“单步指令”(si命令)——对于基于操作系统的指令,它是通过在每个可能的后续指令(下一条汇编指令,如果当前是条件分支,则可能是另一条汇编指令)上放置一个软件断点(将汇编指令替换为“断点”汇编指令)来实现的。忽略可能的中断、页面错误、操作系统请求等

对于基于硬件的GDB,没有任何内容是隐藏的,因此使用软件“下一条指令上的断点”是不可能的:可能存在中断或异常,GDB应在该处理程序的入口处停止

如果RISC-V被认为也支持“用户模式中断”,它将有同样的问题,在用户模式下执行“单个汇编指令步骤”可能不知道下一条汇编指令要替换什么,GDB用户可能不想跳过/隐藏中断处理


然后需要一些“硬件”支持来中断硬件周期计数器,有点像计时器的“实时寄存器及其比较值寄存器”。

您的问题是什么?在不更改规格的情况下,它应该如何工作?