ARM: introduce atag_offset to replace boot_params
authorNicolas Pitre <nicolas.pitre@linaro.org>
Wed, 6 Jul 2011 02:38:10 +0000 (22:38 -0400)
committerNicolas Pitre <nico@fluxnic.net>
Sun, 21 Aug 2011 21:09:13 +0000 (17:09 -0400)
The boot_params member of the mdesc structure is used to provide a
default physical address for the ATAG list.  Since this value is fixed
at compile time and sometimes based on constants such as ARCH_PHYS_OFFSET,
it gets in the way of runtime PHYS_OFFSET and CONFIG_ARM_PATCH_PHYS_VIRT
usage.

Let's introduce atag_offset which should contains only the relative
offset from PHYS_OFFSET instead of an absolute value, in preparation
to move all instance of boot_params over to it.

Signed-off-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Tested-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Tested-by: Petr Štetiar <ynezz@true.cz>
Acked-by: Arnd Bergmann <arnd@arndb.de>
arch/arm/include/asm/mach/arch.h
arch/arm/kernel/setup.c

index 217aa1911dd7a01641a8d9e85220c2128d263b0b..cc240c03efeca996d7c9e4647687ee971e2a8b3a 100644 (file)
@@ -18,6 +18,7 @@ struct machine_desc {
        unsigned int            nr;             /* architecture number  */
        const char              *name;          /* architecture name    */
        unsigned long           boot_params;    /* tagged list          */
+       unsigned long           atag_offset;    /* tagged list (relative) */
        const char              **dt_compat;    /* array of device tree
                                                 * 'compatible' strings */
 
index 70bca649e9250d8a517348c7536e1fd7e782f942..2737ba3f739c9c52aed2dce65bef9961640bea14 100644 (file)
@@ -819,6 +819,8 @@ static struct machine_desc * __init setup_machine_tags(unsigned int nr)
 
        if (__atags_pointer)
                tags = phys_to_virt(__atags_pointer);
+       else if (mdesc->atag_offset)
+               tags = (void *)(PAGE_OFFSET + mdesc->atag_offset);
        else if (mdesc->boot_params) {
 #ifdef CONFIG_MMU
                /*