aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mm/proc-arm1020.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-arm1020.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-arm1020.S')
-rw-r--r--arch/arm/mm/proc-arm1020.S16
1 files changed, 7 insertions, 9 deletions
diff --git a/arch/arm/mm/proc-arm1020.S b/arch/arm/mm/proc-arm1020.S
index b9abbafca812..a1b85d9ae48e 100644
--- a/arch/arm/mm/proc-arm1020.S
+++ b/arch/arm/mm/proc-arm1020.S
@@ -440,11 +440,12 @@ __arm1020_setup:
440#ifdef CONFIG_MMU 440#ifdef CONFIG_MMU
441 mcr p15, 0, r0, c8, c7 @ invalidate I,D TLBs on v4 441 mcr p15, 0, r0, c8, c7 @ invalidate I,D TLBs on v4
442#endif 442#endif
443
444 adr r5, arm1020_crval
445 ldmia r5, {r5, r6}
443 mrc p15, 0, r0, c1, c0 @ get control register v4 446 mrc p15, 0, r0, c1, c0 @ get control register v4
444 ldr r5, arm1020_cr1_clear
445 bic r0, r0, r5 447 bic r0, r0, r5
446 ldr r5, arm1020_cr1_set 448 orr r0, r0, r6
447 orr r0, r0, r5
448#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN 449#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
449 orr r0, r0, #0x4000 @ .R.. .... .... .... 450 orr r0, r0, #0x4000 @ .R.. .... .... ....
450#endif 451#endif
@@ -456,12 +457,9 @@ __arm1020_setup:
456 * .RVI ZFRS BLDP WCAM 457 * .RVI ZFRS BLDP WCAM
457 * .011 1001 ..11 0101 458 * .011 1001 ..11 0101
458 */ 459 */
459 .type arm1020_cr1_clear, #object 460 .type arm1020_crval, #object
460 .type arm1020_cr1_set, #object 461arm1020_crval:
461arm1020_cr1_clear: 462 crval clear=0x0000593f, mmuset=0x00003935, ucset=0x00001930
462 .word 0x593f
463arm1020_cr1_set:
464 .word 0x3935
465 463
466 __INITDATA 464 __INITDATA
467 465