Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/arm/boot/compressed/head-xscale.S
29269 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
/*
3
* linux/arch/arm/boot/compressed/head-xscale.S
4
*
5
* XScale specific tweaks. This is merged into head.S by the linker.
6
*
7
*/
8
9
#include <linux/linkage.h>
10
11
.section ".start", "ax"
12
13
__XScale_start:
14
15
@ Preserve r8/r7 i.e. kernel entry values
16
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.
22
bic r2, pc, #0x1f
23
add r3, r2, #0x10000 @ 64 kb is quite enough...
24
1: ldr r0, [r2], #32
25
teq r2, r3
26
bne 1b
27
mcr p15, 0, r0, c7, c10, 4 @ drain WB
28
mcr p15, 0, r0, c7, c7, 0 @ flush I & D caches
29
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
35
36
37