ARM: 5739/1: ARM: allow empty ATAG_CORE
authorDavid Brown <davidb@codeaurora.org>
Thu, 1 Oct 2009 16:43:29 +0000 (17:43 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 2 Oct 2009 21:32:34 +0000 (22:32 +0100)
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>
arch/arm/kernel/head-common.S

index 93ad576b2d74b311331542f6a79fc4054a0306d8..885a7214418d81877d3cec0eb2f3c4d2f0d07133 100644 (file)
@@ -13,6 +13,7 @@
 
 #define ATAG_CORE 0x54410001
 #define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
+#define ATAG_CORE_SIZE_EMPTY ((2*4) >> 2)
 
        .align  2
        .type   __switch_data, %object
@@ -251,7 +252,8 @@ __vet_atags:
        bne     1f
 
        ldr     r5, [r2, #0]                    @ is first tag ATAG_CORE?
-       subs    r5, r5, #ATAG_CORE_SIZE
+       cmp     r5, #ATAG_CORE_SIZE
+       cmpne   r5, #ATAG_CORE_SIZE_EMPTY
        bne     1f
        ldr     r5, [r2, #4]
        ldr     r6, =ATAG_CORE