aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mm/proc-arm1026.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-arm1026.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-arm1026.S')
-rw-r--r--arch/arm/mm/proc-arm1026.S15
1 files changed, 6 insertions, 9 deletions
diff --git a/arch/arm/mm/proc-arm1026.S b/arch/arm/mm/proc-arm1026.S
index 2796c8e0ddf3..85d8fb0f25b5 100644
--- a/arch/arm/mm/proc-arm1026.S
+++ b/arch/arm/mm/proc-arm1026.S
@@ -399,11 +399,11 @@ __arm1026_setup:
399 mov r0, #4 @ explicitly disable writeback 399 mov r0, #4 @ explicitly disable writeback
400 mcr p15, 7, r0, c15, c0, 0 400 mcr p15, 7, r0, c15, c0, 0
401#endif 401#endif
402 adr r5, arm1026_crval
403 ldmia r5, {r5, r6}
402 mrc p15, 0, r0, c1, c0 @ get control register v4 404 mrc p15, 0, r0, c1, c0 @ get control register v4
403 ldr r5, arm1026_cr1_clear
404 bic r0, r0, r5 405 bic r0, r0, r5
405 ldr r5, arm1026_cr1_set 406 orr r0, r0, r6
406 orr r0, r0, r5
407#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN 407#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
408 orr r0, r0, #0x4000 @ .R.. .... .... .... 408 orr r0, r0, #0x4000 @ .R.. .... .... ....
409#endif 409#endif
@@ -416,12 +416,9 @@ __arm1026_setup:
416 * .011 1001 ..11 0101 416 * .011 1001 ..11 0101
417 * 417 *
418 */ 418 */
419 .type arm1026_cr1_clear, #object 419 .type arm1026_crval, #object
420 .type arm1026_cr1_set, #object 420arm1026_crval:
421arm1026_cr1_clear: 421 crval clear=0x00007f3f, mmuset=0x00003935, ucset=0x00001934
422 .word 0x7f3f
423arm1026_cr1_set:
424 .word 0x3935
425 422
426 __INITDATA 423 __INITDATA
427 424