标签:表项 aarch64 descriptors global 内存 table entry ASID
摘录自 原文: Linux内存管理(二):ARMv8 地址转换
https://blog.csdn.net/yhb1047818384/article/details/108210044
memory attributes
Table descriptor和table entry, block entry中都有attribute的概念
table descriptor(only for stage1):
NSTable | NS表示Non-Secure,该table描述符指向的下一级的转换表是否存储在secure memory之中。为0表示存储在Secutre PA中,否则表示存储在Non-secure PA中。当在non-secure状态下进行地址映射时,该标志别忽略 |
APTable | 下一级level lookup的access permission |
UXNTable | Unprivileged Execute Never, 下一级level lookup的是否有内存的执行权限 |
PXNTable | 下一级level lookup的是否有内存的特权执行权限(EL1) |
table/block entry:
UXN | Excute-never, 决定了descriptor指向的region是否excuteable |
PXN | privileged excute-never, 决定了descriptor指向的region在EL1是否excuteable |
Contiguous | 该表项是否为连续表项中的一项。即转换表在该表项前后是连续的,没有空洞。这样,这些连续的表项便有可能一次性加载到cache中(比如由一个TLB entry缓存) |
DBM | dirty bit modifier, dirty bit指示内存页有没有被修改 |
nG | not global, 指明当前的entry是global(nG=0,所有process都可以访问)还是non-global(nG=1,only本process允许访问)。如果是global类型,则TLB中不会tag ASID;如果是non-global类型,则TLB会tag上ASID,且MMU在TLB中查询时需要判断这个ASID和当前进程的ASID是否一致,只有一致才证明这条entry当前process有权限访问。 |
AF | access flag,当该标志为0,标明对应的内存区域(一个block或者一个page)并非真正映射到物理内存,访问会引发异常。为1表示 真正映射到了物理内存。 |
SH | shareable attribute。00 non-shareable; 01 reserved; 10 outer shareable, 11 inner shareable |
AP |
access permission, 设置数据访问的权限,可以设置为4中, 只读,读写,非EL0的只读, 非EL0的读写。
|
NS | security bit, 当从Secure状态访问内存时,该标志指示转换后的地址在Secure区域还是在Non-Secure区域 |
Indx | index into the MAIR_ELn, 指向内存区域的类型以及可缓存性。见 https://www.cnblogs.com/zhangzhiwei122/p/15975446.html |
标签:表项,aarch64,descriptors,global,内存,table,entry,ASID 来源: https://www.cnblogs.com/zhangzhiwei122/p/15975505.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。