aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mm/proc-arm920.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-arm920.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-arm920.S')
-rw-r--r--arch/arm/mm/proc-arm920.S15
1 files changed, 6 insertions, 9 deletions
diff --git a/arch/arm/mm/proc-arm920.S b/arch/arm/mm/proc-arm920.S
index 02af3e2a8247..e647c3ae1351 100644
--- a/arch/arm/mm/proc-arm920.S
+++ b/arch/arm/mm/proc-arm920.S
@@ -391,11 +391,11 @@ __arm920_setup:
391#ifdef CONFIG_MMU 391#ifdef CONFIG_MMU
392 mcr p15, 0, r0, c8, c7 @ invalidate I,D TLBs on v4 392 mcr p15, 0, r0, c8, c7 @ invalidate I,D TLBs on v4
393#endif 393#endif
394 adr r5, arm920_crval
395 ldmia r5, {r5, r6}
394 mrc p15, 0, r0, c1, c0 @ get control register v4 396 mrc p15, 0, r0, c1, c0 @ get control register v4
395 ldr r5, arm920_cr1_clear
396 bic r0, r0, r5 397 bic r0, r0, r5
397 ldr r5, arm920_cr1_set 398 orr r0, r0, r6
398 orr r0, r0, r5
399 mov pc, lr 399 mov pc, lr
400 .size __arm920_setup, . - __arm920_setup 400 .size __arm920_setup, . - __arm920_setup
401 401
@@ -405,12 +405,9 @@ __arm920_setup:
405 * ..11 0001 ..11 0101 405 * ..11 0001 ..11 0101
406 * 406 *
407 */ 407 */
408 .type arm920_cr1_clear, #object 408 .type arm920_crval, #object
409 .type arm920_cr1_set, #object 409arm920_crval:
410arm920_cr1_clear: 410 crval clear=0x00003f3f, mmuset=0x00003135, ucset=0x00001130
411 .word 0x3f3f
412arm920_cr1_set:
413 .word 0x3135
414 411
415 __INITDATA 412 __INITDATA
416 413