Rocket - debug - TLDebugModuleInner - DMSTATUS

https://mp.weixin.qq.com/s/GyGriFyeq_7Z3xOjKn56Mg

 

简单介绍TLDebugModuleInner中DMSTATUS寄存器的实现。

 

 

1. DMSTATUSRdData

 

从DMSTATUS寄存器读取时,使用DMSTATUSRdData作为数据源:

 

2. authenticated

 

认证功能没有实现:

 

3. version

 

当前版本号值为2,代表Version 0.13:

 

4. any & all

 

规范中定义为:

 

代码实现为:

 

1) nonexistent

 

某个或者全部被选中的核心不存在:

 

在实现中:

a. anynonexistent只表示hartsel选择的核心是否存在,并且认为小于nComponents的核心都存在;

b. allnonexistent则表示hartsel和hamask选择的核心都不存在;

 

2) unavail

 

某个或者全部被选中的核心不可用:

 

其实现依赖于io.debugUnavail,而io.debugUnavail目前未实现:

 

3) halted

 

某个或者全部被选中的核心被暂停:

使用记录核心暂停请求的寄存器haltedBitRegs实现。

 

4) running

 

某个或者全部被选中的核心正在运行:

使用记录核心暂停请求的寄存器haltedBitRegs实现。

 

5) havereset

 

某个或者全部被选中的核心被复位:

使用记录核心复位状态的寄存器haveResetBitRegs实现。

 

6) resumeack

 

某个或者全部被选中的核心确认了针对他们的最近一个恢复运行的请求:

使用记录核心恢复状态的寄存器haveResetBitRegs实现。

 

5. haveResetBitRegs

 

记录针对每个核心的复位请求状态。默认值为真:

 

如果有相应的ackhavereset信号,则清除状态:

 

6. impebreak

 

是否实现隐式的ebreak指令:

 

7. haltedBitRegs

 

记录核心的暂停请求状态。默认值为假:

 

根据halt/resume请求,决定其值:

             

 

posted @ 2020-03-07 11:04  wjcdx  阅读(232)  评论(0编辑  收藏  举报