2 * linux/arch/arm/boot/compressed/head-xscale.S
4 * XScale specific tweaks. This is merged into head.S by the linker.
8 #include <linux/linkage.h>
9 #include <asm/mach-types.h>
11 .section ".start", "ax"
15 @ Preserve r8/r7 i.e. kernel entry values
17 @ Data cache might be active.
18 @ Be sure to flush kernel binary out of the cache,
19 @ whatever state it is, before it is turned off.
20 @ This is done by fetching through currently executed
21 @ memory to be sure we hit the same cache.
23 add r3, r2, #0x10000 @ 64 kb is quite enough...
27 mcr p15, 0, r0, c7, c10, 4 @ drain WB
28 mcr p15, 0, r0, c7, c7, 0 @ flush I & D caches
30 @ disabling MMU and caches
31 mrc p15, 0, r0, c1, c0, 0 @ read control reg
32 bic r0, r0, #0x05 @ clear DC, MMU
33 bic r0, r0, #0x1000 @ clear Icache
34 mcr p15, 0, r0, c1, c0, 0
36 #ifdef CONFIG_ARCH_LUBBOCK
37 mov r7, #MACH_TYPE_LUBBOCK
40 #ifdef CONFIG_ARCH_COTULLA_IDP
41 mov r7, #MACH_TYPE_COTULLA_IDP
44 #ifdef CONFIG_ARCH_IQ80310
46 * Crank the CPU up to 733MHz
49 mcr p14, 0, r1, c6, c0, 0
52 * Disable ECC error notification
53 * At some point, we should add an ECC handler to Linux
59 mov r7, #MACH_TYPE_IQ80310
62 #ifdef CONFIG_ARCH_IXDP425
63 mov r7, #MACH_TYPE_IXDP425
66 #ifdef CONFIG_MACH_IXDP465
67 mov r7, #MACH_TYPE_IXDP465 & 0xff
68 orr r7, r7, #MACH_TYPE_IXDP465 & 0xff00
71 #ifdef CONFIG_MACH_IXDPG425
72 mov r7, #MACH_TYPE_IXDPG425 & 0xff
73 orr r7, r7, #MACH_TYPE_IXDPG425 & 0xff00
76 #ifdef CONFIG_ARCH_PRPMC1100
77 mov r7, #(MACH_TYPE_PRPMC1100 & 0xff)
78 orr r7, r7, #(MACH_TYPE_PRPMC1100 & 0xff00)
81 #ifdef CONFIG_ARCH_ADI_COYOTE
82 # Set machine ID into r7 (Coyote ID > 255 hence needs
83 # two instructions to build the ID safely).
84 mov r7, #MACH_TYPE_ADI_COYOTE & 0xff
85 orr r7, r7, #MACH_TYPE_ADI_COYOTE & 0xff00
88 #ifdef CONFIG_ARCH_SE4000
89 mov r7, #MACH_TYPE_SE4000 & 0xff
90 orr r7, r7, #MACH_TYPE_SE4000 & 0xff00
93 #ifdef CONFIG_MACH_ESS710
94 mov r7, #MACH_TYPE_ESS710 & 0xff
95 orr r7, r7, #MACH_TYPE_ESS710 & 0xff00
98 #ifdef CONFIG_MACH_SG720
99 mov r7, #MACH_TYPE_SG720 & 0xff
100 orr r7, r7, #MACH_TYPE_SG720 & 0xff00
103 #ifdef CONFIG_MACH_MONTEJADE
104 mov r7, #MACH_TYPE_MONTEJADE & 0xff
105 orr r7, r7, #MACH_TYPE_MONTEJADE & 0xff00
108 #ifdef CONFIG_MACH_IVPN
109 mov r7, #MACH_TYPE_IVPN & 0xff
110 orr r7, r7, #MACH_TYPE_IVPN & 0xff00
113 #ifdef CONFIG_MACH_SE5100
114 mov r7, #MACH_TYPE_SE5100 & 0xff
115 orr r7, r7, #MACH_TYPE_SE5100 & 0xff00
118 #ifdef CONFIG_MACH_SG560
119 mov r7, #MACH_TYPE_SG560 & 0xff
120 orr r7, r7, #MACH_TYPE_SG560 & 0xff00
123 #ifdef CONFIG_MACH_SG565
124 mov r7, #MACH_TYPE_SG565 & 0xff
125 orr r7, r7, #MACH_TYPE_SG565 & 0xff00
128 #ifdef CONFIG_MACH_SG580
129 mov r7, #MACH_TYPE_SG580 & 0xff
130 orr r7, r7, #MACH_TYPE_SG580 & 0xff00
133 #ifdef CONFIG_MACH_SG590
134 mov r7, #MACH_TYPE_SG590 & 0xff
135 orr r7, r7, #MACH_TYPE_SG590 & 0xff00
138 #ifdef CONFIG_MACH_SG640
139 mov r7, #MACH_TYPE_SG640 & 0xff
140 orr r7, r7, #MACH_TYPE_SG640 & 0xff00
143 #ifdef CONFIG_MACH_GTWX5715
144 mov r7, #(MACH_TYPE_GTWX5715 & 0xff)
145 orr r7, r7, #(MACH_TYPE_GTWX5715 & 0xff00)
148 #ifdef CONFIG_ARCH_IXP2000