aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mm/proc-arm926.S
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2006-06-29 10:09:57 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2006-06-29 10:09:57 -0400
commit22b1908610dd7ff68471cd4fbd383dbdfe5e0ecd (patch)
tree696d910ef791433a6a6bbd30ae841a106ce78a88 /arch/arm/mm/proc-arm926.S
parent264edb35ce5c85749bfdd2942c74b786ea1cde41 (diff)
[ARM] nommu: provide a way for correct control register value selection
Most MMU-based CPUs have a restriction on the setting of the data cache enable and mmu enable bits in the control register, whereby if the data cache is enabled, the MMU must also be enabled. Enabling the data cache without the MMU is an invalid combination. However, there are CPUs where the data cache can be enabled without the MMU. In order to allow these CPUs to take advantage of that, provide a method whereby each proc-*.S file defines the control regsiter value for use with nommu (with the MMU disabled.) Later on, when we add support for enabling the MMU on these devices, we can adjust the "crval" macro to also enable the data cache for nommu. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm/proc-arm926.S')
-rw-r--r--arch/arm/mm/proc-arm926.S15
1 files changed, 6 insertions, 9 deletions
diff --git a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S
index ce246dd7b407..77e58375778c 100644
--- a/arch/arm/mm/proc-arm926.S
+++ b/arch/arm/mm/proc-arm926.S
@@ -404,11 +404,11 @@ __arm926_setup:
404 mcr p15, 7, r0, c15, c0, 0 404 mcr p15, 7, r0, c15, c0, 0
405#endif 405#endif
406 406
407 adr r5, arm926_crval
408 ldmia r5, {r5, r6}
407 mrc p15, 0, r0, c1, c0 @ get control register v4 409 mrc p15, 0, r0, c1, c0 @ get control register v4
408 ldr r5, arm926_cr1_clear
409 bic r0, r0, r5 410 bic r0, r0, r5
410 ldr r5, arm926_cr1_set 411 orr r0, r0, r6
411 orr r0, r0, r5
412#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN 412#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
413 orr r0, r0, #0x4000 @ .1.. .... .... .... 413 orr r0, r0, #0x4000 @ .1.. .... .... ....
414#endif 414#endif
@@ -421,12 +421,9 @@ __arm926_setup:
421 * .011 0001 ..11 0101 421 * .011 0001 ..11 0101
422 * 422 *
423 */ 423 */
424 .type arm926_cr1_clear, #object 424 .type arm926_crval, #object
425 .type arm926_cr1_set, #object 425arm926_crval:
426arm926_cr1_clear: 426 crval clear=0x00007f3f, mmuset=0x00003135, ucset=0x00001134
427 .word 0x7f3f
428arm926_cr1_set:
429 .word 0x3135
430 427
431 __INITDATA 428 __INITDATA
432 429