Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: pgtable: document mapping types

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

+30 -1
+30 -1
arch/arm/include/asm/pgtable-2level.h
··· 129 129 130 130 /* 131 131 * These are the memory types, defined to be compatible with 132 - * pre-ARMv6 CPUs cacheable and bufferable bits: XXCB 132 + * pre-ARMv6 CPUs cacheable and bufferable bits: n/a,n/a,C,B 133 + * ARMv6+ without TEX remapping, they are a table index. 134 + * ARMv6+ with TEX remapping, they correspond to n/a,TEX(0),C,B 135 + * 136 + * MT type Pre-ARMv6 ARMv6+ type / cacheable status 137 + * UNCACHED Uncached Strongly ordered 138 + * BUFFERABLE Bufferable Normal memory / non-cacheable 139 + * WRITETHROUGH Writethrough Normal memory / write through 140 + * WRITEBACK Writeback Normal memory / write back, read alloc 141 + * MINICACHE Minicache N/A 142 + * WRITEALLOC Writeback Normal memory / write back, write alloc 143 + * DEV_SHARED Uncached Device memory (shared) 144 + * DEV_NONSHARED Uncached Device memory (non-shared) 145 + * DEV_WC Bufferable Normal memory / non-cacheable 146 + * DEV_CACHED Writeback Normal memory / write back, read alloc 147 + * VECTORS Variable Normal memory / variable 148 + * 149 + * All normal memory mappings have the following properties: 150 + * - reads can be repeated with no side effects 151 + * - repeated reads return the last value written 152 + * - reads can fetch additional locations without side effects 153 + * - writes can be repeated (in certain cases) with no side effects 154 + * - writes can be merged before accessing the target 155 + * - unaligned accesses can be supported 156 + * 157 + * All device mappings have the following properties: 158 + * - no access speculation 159 + * - no repetition (eg, on return from an exception) 160 + * - number, order and size of accesses are maintained 161 + * - unaligned accesses are "unpredictable" 133 162 */ 134 163 #define L_PTE_MT_UNCACHED (_AT(pteval_t, 0x00) << 2) /* 0000 */ 135 164 #define L_PTE_MT_BUFFERABLE (_AT(pteval_t, 0x01) << 2) /* 0001 */