diff options
| author | David Brown <davidb@codeaurora.org> | 2009-10-01 12:43:29 -0400 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-10-02 17:32:34 -0400 |
| commit | 31abdb744179159f8b605f56da5b197b188e1689 (patch) | |
| tree | 3f7831e86901526bd0da7d8da18ab4de348c22ff | |
| parent | 0a4bc5e89cfc3cc3083acef130cd8b670ee56914 (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>
| -rw-r--r-- | arch/arm/kernel/head-common.S | 4 |
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 |
