armv8/armv9页表属性(page descriptor)的详细介绍
快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈
目錄
- 1、stage1的頁表屬性
- 2、stage2的頁表屬性
- 3、各標志位的詳細介紹
- 3.1、MemAttr
- 3.1、NS
- 3.1、AP
- 3.1、SH
- 3.1、AF
- 3.1、nG
- 3.1、DBM
- 3.1、Contiguous
- 3.1、XN or UXN
1、stage1的頁表屬性
(Attribute fields in stage 1 VMSAv8-64 Block and Page descriptors)
- PBHA, bits[62:59] :for FEAT_HPDS2
- XN or UXN, bit[54] : Execute-never or Unprivileged execute-never
- PXN, bit[53] :Privileged execute-never
- Contiguous, bit[52] : translation table entry 是連續的,可以存在一個TLB Entry中
- DBM, bit[51] :Dirty Bit Modifier
- GP, bit[50] :for FEAT_BTI
- nT, bit[16] :for FEAT_BBM
- nG, bit[11] :緩存在TLB中的翻譯是否使用ASID標識
- AF, bit[10] : Access flag, AF=0后,第一次訪問該頁面時,會將該標志置為1. 即暗示第一次訪問
- SH, bits[9:8] :shareable屬性
- AP[2:1], bits[7:6] :Data Access Permissions bits,
- NS, bit[5] :Non-secure bit
- AttrIndx[2:0], bits[4:2] :
2、stage2的頁表屬性
(Attribute fields in stage 2 VMSAv8-64 Block and Page descriptors)
- PBHA[3:1], bits[62:60] :for FEAT_HPDS2
- PBHA[0], bit[59] :for FEAT_HPDS2
- XN[1:0], bits[54:53] :Execute-never
- Contiguous, bit[52] :translation table entry 是連續的,可以存在一個TLB Entry中
- DBM, bit[51] :Dirty Bit Modifier
- nT, bit[16] :for FEAT_BBM
- FnXS, bit[11] :for FEAT_XS
- AF, bit[10] :Access flag
- SH, bits[9:8] :shareable屬性
- S2AP, bits[7:6] :Stage 2 data Access Permissions
- MemAttr, bits[5:2] :
3、各標志位的詳細介紹
3.1、MemAttr
3.1、NS
Non-secure比特 表示轉換后的物理地址是secure的還是non-secure的。
在REE(linux)和TEE(optee)雙系統的環境下,可同時開啟兩個系統的MMU.
在secure和non-secure中使用不同的頁表.secure的頁表可以映射non-secure的內存,而non-secure的頁表不能去映射secure的內存,否則在轉換時會發生錯誤
3.1、AP
Data access permissions 數據訪問權限
3.1、SH
shareable屬性
3.1、AF
Access flag, AF=0后,第一次訪問該頁面時,會將該標志置為1. 即暗示第一次訪問
3.1、nG
對于 EL0/EL1 虛擬地址空間,Page Descriptor屬性字段中的 nG 位將轉換標記為Gloabl(G) 或non-Gloabl(nG)。例如,內核映射是Gloabl(G)翻譯,應用程序映射是non-Gloabl翻譯。Gloabl翻譯適用于當前正在運的任何應用程序。非全局翻譯僅適用于特定應用程序
non-Gloabl映射在 TLB 中使用 ASID進行標記。在 TLB 查找時,將 TLB 條目中的 ASID 與當前選擇的 ASID 進行比較。如果它們不匹配,則不使用TLB 條目。下圖顯示了內核空間中沒有 ASID 標記的全局映射和用戶空間中具有 ASID 標記的非全局映射
3.1、DBM
TODO
3.1、Contiguous
TODO
3.1、XN or UXN
特權和非特權不可從該memory-region中執行指令的標志位:
Execute-never
Unprivileged execute-never
總結
以上是生活随笔為你收集整理的armv8/armv9页表属性(page descriptor)的详细介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: optee3.16.0 qemu_v8的
- 下一篇: ARMV8/ARMV9指令集概述(翻译)