diff options
Diffstat (limited to 'arch/arm/boot/compressed/head.S')
| -rw-r--r-- | arch/arm/boot/compressed/head.S | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 90275f036cd1..fe4d9c3ad761 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
| @@ -44,7 +44,7 @@ | |||
| 44 | 44 | ||
| 45 | #else | 45 | #else |
| 46 | 46 | ||
| 47 | #include <mach/debug-macro.S> | 47 | #include CONFIG_DEBUG_LL_INCLUDE |
| 48 | 48 | ||
| 49 | .macro writeb, ch, rb | 49 | .macro writeb, ch, rb |
| 50 | senduart \ch, \rb | 50 | senduart \ch, \rb |
| @@ -652,6 +652,15 @@ __setup_mmu: sub r3, r4, #16384 @ Page directory size | |||
| 652 | mov pc, lr | 652 | mov pc, lr |
| 653 | ENDPROC(__setup_mmu) | 653 | ENDPROC(__setup_mmu) |
| 654 | 654 | ||
| 655 | @ Enable unaligned access on v6, to allow better code generation | ||
| 656 | @ for the decompressor C code: | ||
| 657 | __armv6_mmu_cache_on: | ||
| 658 | mrc p15, 0, r0, c1, c0, 0 @ read SCTLR | ||
| 659 | bic r0, r0, #2 @ A (no unaligned access fault) | ||
| 660 | orr r0, r0, #1 << 22 @ U (v6 unaligned access model) | ||
| 661 | mcr p15, 0, r0, c1, c0, 0 @ write SCTLR | ||
| 662 | b __armv4_mmu_cache_on | ||
| 663 | |||
| 655 | __arm926ejs_mmu_cache_on: | 664 | __arm926ejs_mmu_cache_on: |
| 656 | #ifdef CONFIG_CPU_DCACHE_WRITETHROUGH | 665 | #ifdef CONFIG_CPU_DCACHE_WRITETHROUGH |
| 657 | mov r0, #4 @ put dcache in WT mode | 666 | mov r0, #4 @ put dcache in WT mode |
| @@ -694,6 +703,9 @@ __armv7_mmu_cache_on: | |||
| 694 | bic r0, r0, #1 << 28 @ clear SCTLR.TRE | 703 | bic r0, r0, #1 << 28 @ clear SCTLR.TRE |
| 695 | orr r0, r0, #0x5000 @ I-cache enable, RR cache replacement | 704 | orr r0, r0, #0x5000 @ I-cache enable, RR cache replacement |
| 696 | orr r0, r0, #0x003c @ write buffer | 705 | orr r0, r0, #0x003c @ write buffer |
| 706 | bic r0, r0, #2 @ A (no unaligned access fault) | ||
| 707 | orr r0, r0, #1 << 22 @ U (v6 unaligned access model) | ||
| 708 | @ (needed for ARM1176) | ||
| 697 | #ifdef CONFIG_MMU | 709 | #ifdef CONFIG_MMU |
| 698 | #ifdef CONFIG_CPU_ENDIAN_BE8 | 710 | #ifdef CONFIG_CPU_ENDIAN_BE8 |
| 699 | orr r0, r0, #1 << 25 @ big-endian page tables | 711 | orr r0, r0, #1 << 25 @ big-endian page tables |
| @@ -914,7 +926,7 @@ proc_types: | |||
| 914 | 926 | ||
| 915 | .word 0x0007b000 @ ARMv6 | 927 | .word 0x0007b000 @ ARMv6 |
| 916 | .word 0x000ff000 | 928 | .word 0x000ff000 |
| 917 | W(b) __armv4_mmu_cache_on | 929 | W(b) __armv6_mmu_cache_on |
| 918 | W(b) __armv4_mmu_cache_off | 930 | W(b) __armv4_mmu_cache_off |
| 919 | W(b) __armv6_mmu_cache_flush | 931 | W(b) __armv6_mmu_cache_flush |
| 920 | 932 | ||
