On Thu, Jan 27, 2011 at 09:50:43AM -0600, Rob Herring wrote: > From: Rob Herring <[email protected]> > > If ATAGs or DTB pointer is not within first 1MB of RAM, then the boot params > will not be mapped early enough, so map the 1MB region that r2 points to. Only > map the first 1MB when r2 is 0. > > Some assembly improvements from Nicolas Pitre. > > Signed-off-by: Rob Herring <[email protected]>
I'll try temporarily picking this one up into my devicetree/test branch until Russell's p2v patches get merged into mainline. Thanks! g. > --- > arch/arm/kernel/head.S | 19 ++++++++++++++++++- > 1 files changed, 18 insertions(+), 1 deletions(-) > > diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S > index 65d9489..9c688bf 100644 > --- a/arch/arm/kernel/head.S > +++ b/arch/arm/kernel/head.S > @@ -205,15 +205,32 @@ __create_page_tables: > #endif > > /* > - * Then map first 1MB of ram in case it contains our boot params. > + * Then map first 1MB of ram if boot params address is not specified. > */ > + cmp r2, #0 > + bne 1f > add r0, r4, #PAGE_OFFSET >> 18 > orr r6, r7, #(PHYS_OFFSET & 0xff000000) > .if (PHYS_OFFSET & 0x00f00000) > orr r6, r6, #(PHYS_OFFSET & 0x00f00000) > .endif > str r6, [r0] > + b 2f > > + /* > + * Otherwise map the 1MB region r2 points to (atags or dtb) > + */ > +1: mov r0, r2, lsr #20 > + mov r0, r0, lsl #20 > + sub r3, r0, #(PHYS_OFFSET & 0xff000000) > + .if (PHYS_OFFSET & 0x00f00000) > + sub r3, r3, #(PHYS_OFFSET & 0x00f00000) > + .endif > + add r3, r3, #PAGE_OFFSET > + add r3, r4, r3, lsr #18 > + orr r6, r7, r0 > + str r6, [r3] > +2: > #ifdef CONFIG_DEBUG_LL > #ifndef CONFIG_DEBUG_ICEDCC > /* > -- > 1.7.1 > > > _______________________________________________ > linux-arm-kernel mailing list > [email protected] > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel _______________________________________________ devicetree-discuss mailing list [email protected] https://lists.ozlabs.org/listinfo/devicetree-discuss
