Формат записи таблицы страниц ARM Linux - неиспользованные биты?

Мне нужно использовать два бита PTE для хранения пользовательского значения «состояния», которое мой модуль ядра будет использовать при перехвате ошибок защиты страницы.

Я разрабатываю на Galaxy Nexus, который имеет ARM Cortex A9 (ARM v7, я считаю). Ядро Linux версии 3.0.31. Ниже приведены определения Linux PTE (изarch/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) */

Если посмотреть на этот список определений, то окажется, что доступны биты 3,4,5, а также биты 11 и выше. Однако я знаю, что 20 самых значимых битов [31:12] используются для номера страницы (я считаю, что PFN), поэтому я не могу использовать ни один из них.

Могу ли я свободно использовать биты [5: 3] или это создаст проблемы? Я часами искал ответ на этот вопрос, но я могу только найти документацию о том, как Linux использует биты PTE для архитектуры x86.

ОБНОВИТЬ:

Я составил список того, что я считаю, каждый бит 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     |---|

К сожалению, я не вижу способа указатьнет разрешения на чтение или запись, но как-тоmmap с участиемPROT_NONE все еще похоже на работу. Я знаю, как задать разрешения на чтение или чтение / запись, но мне все еще нужно знать, как настроить страницу для отсутствия разрешений.

Ответы на вопрос(1)

Ваш ответ на вопрос