diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2008-09-06 15:47:54 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-10-01 11:40:58 -0400 |
commit | 9e8b5199a753a2583a8ef8360e6428304a242283 (patch) | |
tree | cfd065b410dd5fe5c14843b71368e0916a496739 /arch/arm/mm/proc-xsc3.S | |
parent | bb30f36f9b71c31dc8fe3483bba4c9884fc86080 (diff) |
[ARM] Convert Xscale and Xscale3 to use new memory types
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm/proc-xsc3.S')
-rw-r--r-- | arch/arm/mm/proc-xsc3.S | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/arch/arm/mm/proc-xsc3.S b/arch/arm/mm/proc-xsc3.S index ad1ce5a89221..96e47fc7fd6f 100644 --- a/arch/arm/mm/proc-xsc3.S +++ b/arch/arm/mm/proc-xsc3.S | |||
@@ -347,16 +347,36 @@ ENTRY(cpu_xsc3_switch_mm) | |||
347 | * Set a PTE and flush it out | 347 | * Set a PTE and flush it out |
348 | * | 348 | * |
349 | */ | 349 | */ |
350 | |||
351 | cpu_xsc3_mt_table: | ||
352 | .long 0x00 @ L_PTE_MT_UNCACHED | ||
353 | .long PTE_BUFFERABLE @ L_PTE_MT_BUFFERABLE | ||
354 | .long PTE_EXT_TEX(5) | PTE_CACHEABLE @ L_PTE_MT_WRITETHROUGH | ||
355 | .long PTE_EXT_TEX(5) | PTE_CACHEABLE | PTE_BUFFERABLE @ L_PTE_MT_WRITEBACK | ||
356 | .long 0x00 @ L_PTE_MT_DEV_SHARED | ||
357 | .long 0x00 @ L_PTE_MT_DEV_SHARED2 | ||
358 | .long 0x00 @ L_PTE_MT_MINICACHE (not present) | ||
359 | .long PTE_EXT_TEX(5) | PTE_CACHEABLE | PTE_BUFFERABLE @ L_PTE_MT_WRITEALLOC (not present?) | ||
360 | .long PTE_EXT_TEX(1) @ L_PTE_MT_DEV_WC2 | ||
361 | .long PTE_EXT_TEX(1) @ L_PTE_MT_DEV_WC | ||
362 | .long 0x00 @ unused | ||
363 | .long PTE_EXT_TEX(5) | PTE_CACHEABLE | PTE_BUFFERABLE @ L_PTE_MT_DEV_CACHED | ||
364 | .long 0x00 @ L_PTE_MT_DEV_NONSHARED | ||
365 | .long 0x00 @ L_PTE_MT_DEV_IXP2000 (not present) | ||
366 | .long 0x00 @ unused | ||
367 | .long 0x00 @ unused | ||
368 | |||
350 | .align 5 | 369 | .align 5 |
351 | ENTRY(cpu_xsc3_set_pte_ext) | 370 | ENTRY(cpu_xsc3_set_pte_ext) |
352 | xscale_set_pte_ext_prologue | 371 | xscale_set_pte_ext_prologue |
353 | 372 | ||
354 | @ If it's cacheable, it needs to be in L2 also. | ||
355 | tst r1, #L_PTE_CACHEABLE | ||
356 | orrne r2, r2, #PTE_EXT_TEX(0x5) | ||
357 | |||
358 | tst r1, #L_PTE_SHARED @ shared? | 373 | tst r1, #L_PTE_SHARED @ shared? |
359 | orrne r2, r2, #0x200 | 374 | and r1, r1, #L_PTE_MT_MASK |
375 | adr ip, cpu_xsc3_mt_table | ||
376 | ldr ip, [ip, r1] | ||
377 | orrne r2, r2, #PTE_EXT_COHERENT @ interlock: mask in coherent bit | ||
378 | bic r2, r2, #0x0c @ clear old C,B bits | ||
379 | orr r2, r2, ip | ||
360 | 380 | ||
361 | xscale_set_pte_ext_epilogue | 381 | xscale_set_pte_ext_epilogue |
362 | mov pc, lr | 382 | mov pc, lr |