diff options
-rw-r--r-- | arch/arm/boot/compressed/head-shmobile.S | 43 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/include/mach/zboot.h | 2 |
2 files changed, 39 insertions, 6 deletions
diff --git a/arch/arm/boot/compressed/head-shmobile.S b/arch/arm/boot/compressed/head-shmobile.S index e2d636336b7c..e7f80928949c 100644 --- a/arch/arm/boot/compressed/head-shmobile.S +++ b/arch/arm/boot/compressed/head-shmobile.S | |||
@@ -55,12 +55,47 @@ __tmp_stack: | |||
55 | __continue: | 55 | __continue: |
56 | #endif /* CONFIG_ZBOOT_ROM_MMC || CONFIG_ZBOOT_ROM_SH_MOBILE_SDHI */ | 56 | #endif /* CONFIG_ZBOOT_ROM_MMC || CONFIG_ZBOOT_ROM_SH_MOBILE_SDHI */ |
57 | 57 | ||
58 | /* Set board ID necessary for boot */ | 58 | adr r0, dtb_info |
59 | ldr r7, 1f @ Set machine type register | 59 | ldmia r0, {r1, r3, r4, r5, r7} |
60 | mov r8, #0 @ pass null pointer as atag | 60 | |
61 | sub r0, r0, r1 @ calculate the delta offset | ||
62 | add r5, r5, r0 @ _edata | ||
63 | |||
64 | ldr lr, [r5, #0] @ check if valid DTB is present | ||
65 | cmp lr, r3 | ||
66 | bne 0f | ||
67 | |||
68 | add r9, r7, #31 @ rounded up to a multiple | ||
69 | bic r9, r9, #31 @ ... of 32 bytes | ||
70 | |||
71 | add r6, r9, r5 @ copy from _edata | ||
72 | add r9, r9, r4 @ to MEMORY_START | ||
73 | |||
74 | 1: ldmdb r6!, {r0 - r3, r10 - r12, lr} | ||
75 | cmp r6, r5 | ||
76 | stmdb r9!, {r0 - r3, r10 - r12, lr} | ||
77 | bhi 1b | ||
78 | |||
79 | /* Success: Zero board ID, pointer to start of memory for atag/dtb */ | ||
80 | mov r7, #0 | ||
81 | mov r8, r4 | ||
61 | b 2f | 82 | b 2f |
62 | 83 | ||
63 | 1 : .long MACH_TYPE | 84 | .align 2 |
85 | dtb_info: | ||
86 | .word dtb_info | ||
87 | #ifndef __ARMEB__ | ||
88 | .word 0xedfe0dd0 @ sig is 0xd00dfeed big endian | ||
89 | #else | ||
90 | .word 0xd00dfeed | ||
91 | #endif | ||
92 | .word MEMORY_START | ||
93 | .word _edata | ||
94 | .word 0x4000 @ maximum DTB size | ||
95 | 0: | ||
96 | /* Failure: Zero board ID, NULL atag/dtb */ | ||
97 | mov r7, #0 | ||
98 | mov r8, #0 @ pass null pointer as atag | ||
64 | 2 : | 99 | 2 : |
65 | 100 | ||
66 | #endif /* CONFIG_ZBOOT_ROM */ | 101 | #endif /* CONFIG_ZBOOT_ROM */ |
diff --git a/arch/arm/mach-shmobile/include/mach/zboot.h b/arch/arm/mach-shmobile/include/mach/zboot.h index f2d8744c1f14..c3c4669a2d72 100644 --- a/arch/arm/mach-shmobile/include/mach/zboot.h +++ b/arch/arm/mach-shmobile/include/mach/zboot.h | |||
@@ -1,7 +1,6 @@ | |||
1 | #ifndef ZBOOT_H | 1 | #ifndef ZBOOT_H |
2 | #define ZBOOT_H | 2 | #define ZBOOT_H |
3 | 3 | ||
4 | #include <asm/mach-types.h> | ||
5 | #include <mach/zboot_macros.h> | 4 | #include <mach/zboot_macros.h> |
6 | 5 | ||
7 | /************************************************** | 6 | /************************************************** |
@@ -11,7 +10,6 @@ | |||
11 | **************************************************/ | 10 | **************************************************/ |
12 | 11 | ||
13 | #ifdef CONFIG_MACH_MACKEREL | 12 | #ifdef CONFIG_MACH_MACKEREL |
14 | #define MACH_TYPE MACH_TYPE_MACKEREL | ||
15 | #define MEMORY_START 0x40000000 | 13 | #define MEMORY_START 0x40000000 |
16 | #include "mach/head-mackerel.txt" | 14 | #include "mach/head-mackerel.txt" |
17 | #else | 15 | #else |