FIXME: なにをするもの?
超マニアックです。
Linux カーネルの pte_t に設定する L_PTE_MT_BUFFERABLE などの L_PTE_MT_ 系マクロの値と ARM のページテーブルのマッピングについて。
ARM の第二レベルページテーブルエントリの構成は下記のようになっています。 (ARM DDI406B B3-10 - B3.3.1 Translation table entry formats の表 B3-1より)
bit | 9 | 8 7 6 | 5 4 | 3 | 2 | 1 | 0 |
Lv2 entry | AP[2] | TEX[2:0] | AP[1:0] | C | B | 1 | XN |
一方で Linux の pte_t の構成は下記のようになっています。
bit | 9 | 8 | 7 | 6 | 5 4 3 2 | 1 | 0 |
ARM Linux pte_t | XN | USER | RDONLY | DIRTY | MT[3:0] | YOUNG | VALID |
並べてみます。
bit | 9 | 8 | 7 | 6 | 5 4 | 3 | 2 | 1 | 0 |
Lv2 entry | AP[2] | TEX[2] | TEX[1] | TEX[0] | AP[1:0] | C | B | 1 | XN |
ARM Linux pte_t | XN | USER | RDONLY | DIRTY | MT[3:2] | MT[1] | MT[0] | YOUNG | VALID |