码迷,mamicode.com
首页 > 其他好文 > 详细

Rocket - debug - TLDebugModuleInner - ROM Generation

时间:2020-03-22 13:43:06      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:form   ada   tin   地址   undle   flags   cab   debug   核心   

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

 

简单介绍Variable ROM Generation。

 

技术图片

 

1. jalAbstract

 

jalAbstract是一条指令,跳转到抽象命令的指令:

技术图片

 

Instruction.JAL是jump and link指令:

技术图片

 

GeneratedUJ用于生成一个UJ格式的指令结构:

技术图片

JAL属于J-format。

 

GeneratedUJ的定义如下:

技术图片

 

jalAbstract.setImm(ABSTRACT(cfg) - WHERETO)把跳转地址设置为ABSTRACT:

技术图片

当pc=WHERETO时,跳转目标地址即是ABSTRACT。

 

jalAbstract的值存放在地址WHERETO处,亦即jalAbstract是存放在WHERETO地址处的指令:

技术图片

 

2. goReg

 

goReg是一个寄存器:

技术图片

 

其复位值为假:

技术图片

 

如果goAbstract为真,其值为真:

技术图片

 

如果hartGoingWrEn为真,其值为假:

技术图片

 

hartGoingWrEn是写GOING寄存器的标志:

技术图片

GOING寄存器位于核心访问的地址空间中,所以写GOING寄存器的是核心执行的指令。

 

总结一下:

a. 要执行抽象命令时(goAbstract=true)为真;

b. 开始执行抽象命令时(begins executing Debug Mode Instructions)为假;

 

3. goAbstract

 

goAbstract是一个标志位:

技术图片

 

表示将要执行command寄存器中的命令:

技术图片

 

4. goCustom

 

goCustom也是一个标志位:

技术图片

 

表示是否访问Custom地址区间的寄存器:

技术图片

 

5. flags

 

flags由1024个flagsBundle组成:

技术图片

 

其中go的值由goReg确定:

技术图片

 

resume的值由resume请求确定:

技术图片

 

flags用于在FLAGS地址处生成一组只读寄存器:

技术图片             

 

 

Rocket - debug - TLDebugModuleInner - ROM Generation

标签:form   ada   tin   地址   undle   flags   cab   debug   核心   

原文地址:https://www.cnblogs.com/wjcdx/p/12545510.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!