diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2006-06-29 13:24:21 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-06-29 13:24:21 -0400 |
commit | 8799ee9f49f6171fd58f4d64f8c067ca49006a5d (patch) | |
tree | b746b8800bc99633f31505d151624c8ccd75cd47 /arch/arm/kernel | |
parent | 326764a85b7676388db3ebad6488f312631d7661 (diff) |
[ARM] Set bit 4 on section mappings correctly depending on CPU
On some CPUs, bit 4 of section mappings means "update the
cache when written to". On others, this bit is required to
be one, and others it's required to be zero. Finally, on
ARMv6 and above, setting it turns on "no execute" and prevents
speculative prefetches.
With all these combinations, no one value fits all CPUs, so we
have to pick a value depending on the CPU type, and the area
we're mapping.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/asm-offsets.c | 3 | ||||
-rw-r--r-- | arch/arm/kernel/head.S | 5 |
2 files changed, 4 insertions, 4 deletions
diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c index 447ede5143a8..cc2d58d028e1 100644 --- a/arch/arm/kernel/asm-offsets.c +++ b/arch/arm/kernel/asm-offsets.c | |||
@@ -105,6 +105,7 @@ int main(void) | |||
105 | BLANK(); | 105 | BLANK(); |
106 | DEFINE(PROC_INFO_SZ, sizeof(struct proc_info_list)); | 106 | DEFINE(PROC_INFO_SZ, sizeof(struct proc_info_list)); |
107 | DEFINE(PROCINFO_INITFUNC, offsetof(struct proc_info_list, __cpu_flush)); | 107 | DEFINE(PROCINFO_INITFUNC, offsetof(struct proc_info_list, __cpu_flush)); |
108 | DEFINE(PROCINFO_MMUFLAGS, offsetof(struct proc_info_list, __cpu_mmu_flags)); | 108 | DEFINE(PROCINFO_MM_MMUFLAGS, offsetof(struct proc_info_list, __cpu_mm_mmu_flags)); |
109 | DEFINE(PROCINFO_IO_MMUFLAGS, offsetof(struct proc_info_list, __cpu_io_mmu_flags)); | ||
109 | return 0; | 110 | return 0; |
110 | } | 111 | } |
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index 330b9476c398..81cb902c487c 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S | |||
@@ -221,7 +221,7 @@ __create_page_tables: | |||
221 | teq r0, r6 | 221 | teq r0, r6 |
222 | bne 1b | 222 | bne 1b |
223 | 223 | ||
224 | ldr r7, [r10, #PROCINFO_MMUFLAGS] @ mmuflags | 224 | ldr r7, [r10, #PROCINFO_MM_MMUFLAGS] @ mm_mmuflags |
225 | 225 | ||
226 | /* | 226 | /* |
227 | * Create identity mapping for first MB of kernel to | 227 | * Create identity mapping for first MB of kernel to |
@@ -272,8 +272,7 @@ __create_page_tables: | |||
272 | #endif | 272 | #endif |
273 | 273 | ||
274 | #ifdef CONFIG_DEBUG_LL | 274 | #ifdef CONFIG_DEBUG_LL |
275 | bic r7, r7, #0x0c @ turn off cacheable | 275 | ldr r7, [r10, #PROCINFO_IO_MMUFLAGS] @ io_mmuflags |
276 | @ and bufferable bits | ||
277 | /* | 276 | /* |
278 | * Map in IO space for serial debugging. | 277 | * Map in IO space for serial debugging. |
279 | * This allows debug messages to be output | 278 | * This allows debug messages to be output |