ARM Linux Page Table Entry format - nieużywane bity?

Muszę użyć dwóch bitów PTE, aby zapisać niestandardową wartość „stanu”, której użyje mój moduł jądra podczas przechwytywania błędów ochrony strony.

Rozwijam się na Galaxy Nexus, który ma ARM Cortex A9 (wierzę ARM v7). Jądro Linuksa w wersji 3.0.31. Definicje PTE dla Linuksa są następujące (zarch/arm/include/asm/pgtable.h:

/*
 * "Linux" PTE definitions.
 *
 * We keep two sets of PTEs - the hardware and the linux version.
 * This allows greater flexibility in the way we map the Linux bits
 * onto the hardware tables, and allows us to have YOUNG and DIRTY
 * bits.
 *
 * The PTE table pointer refers to the hardware entries; the "Linux"
 * entries are stored 1024 bytes below.
 */
#define L_PTE_PRESENT       (_AT(pteval_t, 1) << 0)
#define L_PTE_YOUNG         (_AT(pteval_t, 1) << 1)
#define L_PTE_FILE          (_AT(pteval_t, 1) << 2) /* only when !PRESENT */
#define L_PTE_DIRTY         (_AT(pteval_t, 1) << 6)
#define L_PTE_RDONLY        (_AT(pteval_t, 1) << 7)
#define L_PTE_USER          (_AT(pteval_t, 1) << 8)
#define L_PTE_XN            (_AT(pteval_t, 1) << 9)
#define L_PTE_SHARED        (_AT(pteval_t, 1) << 10)    /* shared(v6), coherent(xsc3) */

Wystarczy spojrzeć na tę listę definicji, że dostępne są bity 3,4,5, a także bity 11 i wyżej. Wiem jednak, że 20 najważniejszych bitów [31:12] jest używanych do numeru strony (PFN, jak sądzę), więc nie mogę ich użyć.

Czy mogę swobodnie używać bitów [5: 3] lub czy to stwarza problemy? Spędziłem godziny szukając odpowiedzi na to pytanie, ale mogę znaleźć tylko dokumentację dotyczącą tego, jak Linux używa bitów PTE dla architektury x86.

AKTUALIZACJA:

Złożyłem listę tego, co uważam za każdy bit PTE.

bit  0     PRESENT
bit  1     YOUNG
bit  2     MEMORY TYPES 0  B          FILE (only when not PRESENT)
bit  3     MEMORY TYPES 1  C
bit  4     AP0 
bit  5     AP1
bit  6     DIRTY
bit  7     RD_ONLY
bit  8     USER
bit  9     XN
bit 10     SHARED
bit 11     EXT_NG (no idea what this is)

bit 12     |---|
...        |PFN|
bit 31     |---|

Niestety nie widzę sposobu na określenieNie uprawnienia do odczytu lub zapisu, ale jakośmmap zPROT_NONE wciąż wydaje się działać. Wiem, jak określić uprawnienia do odczytu lub R / W, ale nadal muszę wiedzieć, jak ustawić stronę, aby nie miała uprawnień.

questionAnswers(1)

yourAnswerToTheQuestion