aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/boot/compressed/head.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/boot/compressed/head.S')
-rw-r--r--arch/arm/boot/compressed/head.S44
1 files changed, 44 insertions, 0 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
index 77d614232d81..b371fba1b954 100644
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -27,6 +27,12 @@
27 .macro writeb, ch, rb 27 .macro writeb, ch, rb
28 mcr p14, 0, \ch, c0, c5, 0 28 mcr p14, 0, \ch, c0, c5, 0
29 .endm 29 .endm
30#elif defined(CONFIG_CPU_XSCALE)
31 .macro loadsp, rb
32 .endm
33 .macro writeb, ch, rb
34 mcr p14, 0, \ch, c8, c0, 0
35 .endm
30#else 36#else
31 .macro loadsp, rb 37 .macro loadsp, rb
32 .endm 38 .endm
@@ -459,6 +465,20 @@ __armv7_mmu_cache_on:
459 mcr p15, 0, r0, c7, c5, 4 @ ISB 465 mcr p15, 0, r0, c7, c5, 4 @ ISB
460 mov pc, r12 466 mov pc, r12
461 467
468__fa526_cache_on:
469 mov r12, lr
470 bl __setup_mmu
471 mov r0, #0
472 mcr p15, 0, r0, c7, c7, 0 @ Invalidate whole cache
473 mcr p15, 0, r0, c7, c10, 4 @ drain write buffer
474 mcr p15, 0, r0, c8, c7, 0 @ flush UTLB
475 mrc p15, 0, r0, c1, c0, 0 @ read control reg
476 orr r0, r0, #0x1000 @ I-cache enable
477 bl __common_mmu_cache_on
478 mov r0, #0
479 mcr p15, 0, r0, c8, c7, 0 @ flush UTLB
480 mov pc, r12
481
462__arm6_mmu_cache_on: 482__arm6_mmu_cache_on:
463 mov r12, lr 483 mov r12, lr
464 bl __setup_mmu 484 bl __setup_mmu
@@ -630,12 +650,30 @@ proc_types:
630 b __armv4_mmu_cache_off 650 b __armv4_mmu_cache_off
631 b __armv4_mmu_cache_flush 651 b __armv4_mmu_cache_flush
632 652
653 .word 0x56158000 @ PXA168
654 .word 0xfffff000
655 b __armv4_mmu_cache_on
656 b __armv4_mmu_cache_off
657 b __armv5tej_mmu_cache_flush
658
659 .word 0x56056930
660 .word 0xff0ffff0 @ PXA935
661 b __armv4_mmu_cache_on
662 b __armv4_mmu_cache_off
663 b __armv4_mmu_cache_flush
664
633 .word 0x56050000 @ Feroceon 665 .word 0x56050000 @ Feroceon
634 .word 0xff0f0000 666 .word 0xff0f0000
635 b __armv4_mmu_cache_on 667 b __armv4_mmu_cache_on
636 b __armv4_mmu_cache_off 668 b __armv4_mmu_cache_off
637 b __armv5tej_mmu_cache_flush 669 b __armv5tej_mmu_cache_flush
638 670
671 .word 0x66015261 @ FA526
672 .word 0xff01fff1
673 b __fa526_cache_on
674 b __armv4_mmu_cache_off
675 b __fa526_cache_flush
676
639 @ These match on the architecture ID 677 @ These match on the architecture ID
640 678
641 .word 0x00020000 @ ARMv4T 679 .word 0x00020000 @ ARMv4T
@@ -775,6 +813,12 @@ __armv4_mpu_cache_flush:
775 mcr p15, 0, ip, c7, c10, 4 @ drain WB 813 mcr p15, 0, ip, c7, c10, 4 @ drain WB
776 mov pc, lr 814 mov pc, lr
777 815
816__fa526_cache_flush:
817 mov r1, #0
818 mcr p15, 0, r1, c7, c14, 0 @ clean and invalidate D cache
819 mcr p15, 0, r1, c7, c5, 0 @ flush I cache
820 mcr p15, 0, r1, c7, c10, 4 @ drain WB
821 mov pc, lr
778 822
779__armv6_mmu_cache_flush: 823__armv6_mmu_cache_flush:
780 mov r1, #0 824 mov r1, #0