aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel
diff options
context:
space:
mode:
authorDavid Brown <davidb@codeaurora.org>2009-10-01 12:43:29 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2009-10-02 17:32:34 -0400
commit31abdb744179159f8b605f56da5b197b188e1689 (patch)
tree3f7831e86901526bd0da7d8da18ab4de348c22ff /arch/arm/kernel
parent0a4bc5e89cfc3cc3083acef130cd8b670ee56914 (diff)
ARM: 5739/1: ARM: allow empty ATAG_CORE
From: David Brown <davidb@quicinc.com> The ATAG_CORE is allowed to be empty. Although this is handled by parse_tag_core(), __vet_atags during startup rejects this tag unless it contains data. Allow the initial tag to be either the full size, or empty. Signed-off-by: David Brown <davidb@quicinc.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r--arch/arm/kernel/head-common.S4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/arm/kernel/head-common.S b/arch/arm/kernel/head-common.S
index 93ad576b2d74..885a7214418d 100644
--- a/arch/arm/kernel/head-common.S
+++ b/arch/arm/kernel/head-common.S
@@ -13,6 +13,7 @@
13 13
14#define ATAG_CORE 0x54410001 14#define ATAG_CORE 0x54410001
15#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2) 15#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
16#define ATAG_CORE_SIZE_EMPTY ((2*4) >> 2)
16 17
17 .align 2 18 .align 2
18 .type __switch_data, %object 19 .type __switch_data, %object
@@ -251,7 +252,8 @@ __vet_atags:
251 bne 1f 252 bne 1f
252 253
253 ldr r5, [r2, #0] @ is first tag ATAG_CORE? 254 ldr r5, [r2, #0] @ is first tag ATAG_CORE?
254 subs r5, r5, #ATAG_CORE_SIZE 255 cmp r5, #ATAG_CORE_SIZE
256 cmpne r5, #ATAG_CORE_SIZE_EMPTY
255 bne 1f 257 bne 1f
256 ldr r5, [r2, #4] 258 ldr r5, [r2, #4]
257 ldr r6, =ATAG_CORE 259 ldr r6, =ATAG_CORE