diff options
Diffstat (limited to 'arch/arm/mach-pxa/mioa701_bootresume.S')
-rw-r--r-- | arch/arm/mach-pxa/mioa701_bootresume.S | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/arch/arm/mach-pxa/mioa701_bootresume.S b/arch/arm/mach-pxa/mioa701_bootresume.S new file mode 100644 index 000000000000..a647693d9856 --- /dev/null +++ b/arch/arm/mach-pxa/mioa701_bootresume.S | |||
@@ -0,0 +1,36 @@ | |||
1 | /* Bootloader to resume MIO A701 | ||
2 | * | ||
3 | * 2007-1-12 Robert Jarzmik | ||
4 | * | ||
5 | * This code is licenced under the GPLv2. | ||
6 | */ | ||
7 | |||
8 | #include <linux/linkage.h> | ||
9 | #include <asm/assembler.h> | ||
10 | |||
11 | /* | ||
12 | * Note: Yes, part of the following code is located into the .data section. | ||
13 | * This is to allow jumpaddr to be accessed with a relative load | ||
14 | * while we can't rely on any MMU translation. We could have put | ||
15 | * sleep_save_sp in the .text section as well, but some setups might | ||
16 | * insist on it to be truly read-only. | ||
17 | */ | ||
18 | .data | ||
19 | ENTRY(mioa701_bootstrap) | ||
20 | 0: | ||
21 | b 1f | ||
22 | ENTRY(mioa701_jumpaddr) | ||
23 | .word 0x40f00008 @ PSPR in no-MMU mode | ||
24 | 1: | ||
25 | mov r0, #0xa0000000 @ Don't suppose memory access works | ||
26 | orr r0, r0, #0x00200000 @ even if it's supposed to | ||
27 | mov r1, #0 | ||
28 | str r1, [r0] @ Early disable resume for next boot | ||
29 | ldr r0, mioa701_jumpaddr @ (Murphy's Law) | ||
30 | ldr r0, [r0] | ||
31 | mov pc, r0 | ||
32 | 2: | ||
33 | |||
34 | ENTRY(mioa701_bootstrap_lg) | ||
35 | .data | ||
36 | .word 2b-0b | ||