Formato de entrada de tabla de páginas ARM Linux - ¿bits no utilizados?

Necesito usar dos bits del PTE para almacenar un valor de "estado" personalizado que mi módulo de kernel usará cuando intercepte fallas de protección de páginas.

Estoy desarrollando un Galaxy Nexus que tiene un ARM Cortex A9 (ARM v7, creo). Versión del kernel de Linux 3.0.31. Las definiciones de Linux PTE son las siguientes (dearch/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) */

Con solo mirar esta lista de definiciones, parece que los bits 3,4,5 están disponibles, así como los bits 11 y superiores. Sin embargo, sé que los 20 bits más significativos [31:12] se usan para el número de página (PFN, creo), por lo que no puedo usar ninguno de esos.

¿Puedo usar libremente bits [5: 3] o eso creará problemas? He pasado horas buscando la respuesta a esto, pero solo puedo encontrar documentación sobre cómo Linux utiliza los bits PTE para la arquitectura x86.

ACTUALIZAR:

He compilado una lista de lo que creo que es cada 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     |---|

Lamentablemente no veo una manera de especificarno permisos de lectura o escritura, pero de alguna manerammap conPROT_NONE Todavía parece funcionar. Sé cómo especificar los permisos de lectura o R / W, pero aún necesito saber cómo configurar una página para que no tenga permisos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta