diff options
Diffstat (limited to 'arch/arm/boot/compressed/head.S')
-rw-r--r-- | arch/arm/boot/compressed/head.S | 44 |
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 |