diff options
author | Grant Likely <grant.likely@secretlab.ca> | 2011-04-28 16:27:20 -0400 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2011-05-11 09:12:32 -0400 |
commit | 4c2896e88d976d0e5b2213c64cde885f5677fa2b (patch) | |
tree | d5573124e35cb3b81b7ac56fb4d7708eacf4991d /arch/arm/kernel/head.S | |
parent | 7ee4b98eca42c1ff1df7dcf443dac07f0a2ea93d (diff) |
arm/dt: Make __vet_atags also accept a dtb image
The dtb is passed to the kernel via register r2, which is the same
method that is used to pass an atags pointer. This patch modifies
__vet_atags to not clear r2 when it encounters a dtb image.
v2: fixed bugs pointed out by Nicolas Pitre
Tested-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Diffstat (limited to 'arch/arm/kernel/head.S')
-rw-r--r-- | arch/arm/kernel/head.S | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index c9173cfbbc74..a5e5c5b9b48e 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S | |||
@@ -59,7 +59,7 @@ | |||
59 | * | 59 | * |
60 | * This is normally called from the decompressor code. The requirements | 60 | * This is normally called from the decompressor code. The requirements |
61 | * are: MMU = off, D-cache = off, I-cache = dont care, r0 = 0, | 61 | * are: MMU = off, D-cache = off, I-cache = dont care, r0 = 0, |
62 | * r1 = machine nr, r2 = atags pointer. | 62 | * r1 = machine nr, r2 = atags or dtb pointer. |
63 | * | 63 | * |
64 | * This code is mostly position independent, so if you link the kernel at | 64 | * This code is mostly position independent, so if you link the kernel at |
65 | * 0xc0008000, you call this at __pa(0xc0008000). | 65 | * 0xc0008000, you call this at __pa(0xc0008000). |
@@ -91,7 +91,7 @@ ENTRY(stext) | |||
91 | #endif | 91 | #endif |
92 | 92 | ||
93 | /* | 93 | /* |
94 | * r1 = machine no, r2 = atags, | 94 | * r1 = machine no, r2 = atags or dtb, |
95 | * r8 = phys_offset, r9 = cpuid, r10 = procinfo | 95 | * r8 = phys_offset, r9 = cpuid, r10 = procinfo |
96 | */ | 96 | */ |
97 | bl __vet_atags | 97 | bl __vet_atags |
@@ -339,7 +339,7 @@ __secondary_data: | |||
339 | * | 339 | * |
340 | * r0 = cp#15 control register | 340 | * r0 = cp#15 control register |
341 | * r1 = machine ID | 341 | * r1 = machine ID |
342 | * r2 = atags pointer | 342 | * r2 = atags or dtb pointer |
343 | * r4 = page table pointer | 343 | * r4 = page table pointer |
344 | * r9 = processor ID | 344 | * r9 = processor ID |
345 | * r13 = *virtual* address to jump to upon completion | 345 | * r13 = *virtual* address to jump to upon completion |
@@ -376,7 +376,7 @@ ENDPROC(__enable_mmu) | |||
376 | * | 376 | * |
377 | * r0 = cp#15 control register | 377 | * r0 = cp#15 control register |
378 | * r1 = machine ID | 378 | * r1 = machine ID |
379 | * r2 = atags pointer | 379 | * r2 = atags or dtb pointer |
380 | * r9 = processor ID | 380 | * r9 = processor ID |
381 | * r13 = *virtual* address to jump to upon completion | 381 | * r13 = *virtual* address to jump to upon completion |
382 | * | 382 | * |