diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-03-28 17:03:14 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-03-28 17:03:14 -0400 |
commit | 0fe41b8982001cd14ee2c77cd776735a5024e98b (patch) | |
tree | 83e65d595c413d55259ea14fb97748ce5efe5707 /arch/arm/boot/compressed | |
parent | eedf2c5296a8dfaaf9aec1a938c1d3bd73159a30 (diff) | |
parent | 9759d22c8348343b0da4e25d6150c41712686c14 (diff) |
Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm: (422 commits)
[ARM] 5435/1: fix compile warning in sanity_check_meminfo()
[ARM] 5434/1: ARM: OMAP: Fix mailbox compile for 24xx
[ARM] pxa: fix the bad assumption that PCMCIA sockets always start with 0
[ARM] pxa: fix Colibri PXA300 and PXA320 LCD backlight pins
imxfb: Fix TFT mode
i.MX21/27: remove ifdef CONFIG_FB_IMX
imxfb: add clock support
mxc: add arch_reset() function
clkdev: add possibility to get a clock based on the device name
i.MX1: remove fb support from mach-imx
[ARM] pxa: build arch/arm/plat-pxa/mfp.c only when PXA3xx or ARCH_MMP defined
Gemini: Add support for Teltonika RUT100
Gemini: gpiolib based GPIO support v2
MAINTAINERS: add myself as Gemini architecture maintainer
ARM: Add Gemini architecture v3
[ARM] OMAP: Fix compile for omap2_init_common_hw()
MAINTAINERS: Add myself as Faraday ARM core variant maintainer
ARM: Add support for FA526 v2
[ARM] acorn,ebsa110,footbridge,integrator,sa1100: Convert asm/io.h to linux/io.h
[ARM] collie: fix two minor formatting nits
...
Diffstat (limited to 'arch/arm/boot/compressed')
-rw-r--r-- | arch/arm/boot/compressed/head.S | 44 | ||||
-rw-r--r-- | arch/arm/boot/compressed/misc.c | 15 | ||||
-rw-r--r-- | arch/arm/boot/compressed/vmlinux.lds.in | 5 |
3 files changed, 64 insertions, 0 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 77d614232d8..b371fba1b95 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 |
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c index 3fc08413fff..393c8164131 100644 --- a/arch/arm/boot/compressed/misc.c +++ b/arch/arm/boot/compressed/misc.c | |||
@@ -46,6 +46,21 @@ static void icedcc_putc(int ch) | |||
46 | 46 | ||
47 | asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch)); | 47 | asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch)); |
48 | } | 48 | } |
49 | #elif defined(CONFIG_CPU_XSCALE) | ||
50 | |||
51 | static void icedcc_putc(int ch) | ||
52 | { | ||
53 | int status, i = 0x4000000; | ||
54 | |||
55 | do { | ||
56 | if (--i < 0) | ||
57 | return; | ||
58 | |||
59 | asm volatile ("mrc p14, 0, %0, c14, c0, 0" : "=r" (status)); | ||
60 | } while (status & (1 << 28)); | ||
61 | |||
62 | asm("mcr p14, 0, %0, c8, c0, 0" : : "r" (ch)); | ||
63 | } | ||
49 | 64 | ||
50 | #else | 65 | #else |
51 | 66 | ||
diff --git a/arch/arm/boot/compressed/vmlinux.lds.in b/arch/arm/boot/compressed/vmlinux.lds.in index 153a07e7222..a5924b9b88b 100644 --- a/arch/arm/boot/compressed/vmlinux.lds.in +++ b/arch/arm/boot/compressed/vmlinux.lds.in | |||
@@ -11,6 +11,11 @@ OUTPUT_ARCH(arm) | |||
11 | ENTRY(_start) | 11 | ENTRY(_start) |
12 | SECTIONS | 12 | SECTIONS |
13 | { | 13 | { |
14 | /DISCARD/ : { | ||
15 | *(.ARM.exidx*) | ||
16 | *(.ARM.extab*) | ||
17 | } | ||
18 | |||
14 | . = TEXT_START; | 19 | . = TEXT_START; |
15 | _text = .; | 20 | _text = .; |
16 | 21 | ||