参考资料:
http://xenyinzen.wikidot.com/code-research:pmon:start-functions
https://wenku.baidu.com/view/013ba5f9700abb68a982fb3a.html?sxts=1535682681686&pn=1
因为项目需要在裸机阶段访问到512M以上的物理地址,根据参考手册需要设置TLB进行访问,所以对PMON中TLB初始化的代码段进行了一些探究和简单注释,以便后面需要的时候参考。
TLB的作用是将虚拟地址映射到物理地址,所以需要配置他们的对应关系。
##两个关键寄存器
EntryHi寄存器存放地址入口,也就是需要转换的虚拟地址;EntryLo寄存器存放出口地址,也就是虚拟地址映射到的物理地址。下面是这两个寄存器的具体描述。关于TLB的初始化就是根据这两个寄存器的描述进行配置。

##ls1c中TLB初始化代码注释
ls1c中是将虚拟地址的0xc0000000开始的1G空间映射到物理地址的0xc0000000中,页面大小设置为16M。
LEAF(CPU_TLBInit)
li a3, 0 # First TLB index.
li a2, PG_SIZE_16M
MTC0 a2, COP_0_TLB_PG_MASK # All pages are 16

本文探讨了在裸机环境下,由于项目需求访问超过512M的物理地址,因此研究了PMON中关于TLB初始化的代码。TLB的作用是将虚拟地址映射到物理地址。关键涉及EntryHi和EntryLo寄存器,它们分别存储虚拟和物理地址。在LS1C中,初始化TLB将0xc0000000开始的1G虚拟地址映射到相同物理地址,使用16M页面大小。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



