Compile problem due to compressor changes, UART referenced in section .txt

Uwe Kleine-König u.kleine-koenig at pengutronix.de
Mon Mar 8 04:55:37 EST 2010


Hello,

On Mon, Mar 08, 2010 at 09:13:33AM +1300, Ryan Mallon wrote:
> J.I. Cameron wrote:
> > Dear  All,
> >
> > Ran into the following problem on a pxa stargate2 platform (I think it
> > will
> > effect a number of others).
> >
> > `UART' referenced in section `.text' of
> > arch/arm/boot/compressed/misc.o: defined in discarded section `.data'
> > of arch/arm/boot/compressed/misc.o `UART' referenced in section
> > `.text' of arch/arm/boot/compressed/misc.o: defined in discarded
> > section `.data' of arch/arm/boot/compressed/misc.o
> >
> > There is a hack in mach-pxa/include/mach/uncompress.h
> > that changes the primary uart for some platforms:
> >
> > static inline void arch_decomp_setup(void)
> > {
> >     if (machine_is_littleton() || machine_is_intelmote2()
> >         || machine_is_csb726() || machine_is_stargate2()
> >       || machine_is_cm_x300() || machine_is_balloon3())
> >     UART = STUART;
> > }
> >
> > Simply changing the initial assignment of UART and commenting this
> > function
> > out acts as a work around.  I'm not entirely sure how to fix the problem
> > properly.
> Perhaps something like this untested patch:
> 
> Signed-off-by: Ryan Mallon <ryan at bluewatersys.com>
> ---
> 
> diff --git a/arch/arm/mach-pxa/include/mach/uncompress.h b/arch/arm/mach-pxa/include/mach/uncompress.h
> index 237734b..efd9c0d 100644
> --- a/arch/arm/mach-pxa/include/mach/uncompress.h
> +++ b/arch/arm/mach-pxa/include/mach/uncompress.h
> @@ -15,7 +15,16 @@
>  
>  #define __REG(x)       ((volatile unsigned long *)x)
>  
> +#if defined(CONFIG_MACH_LITTLETON)  ||	\
> +    defined(CONFIG_MACH_INTELMOTE2) ||	\
> +    defined(CONFIG_MACH_CSB726)     ||	\
> +    defined(CONFIG_MACH_STARGATE2)  ||	\
> +    defined(CONFIG_MACH_CM_X300)    ||	\
> +    defined(CONFIG_MACH_BALLOON3)
> +static volatile unsigned long *UART = STUART;
> +#else
>  static volatile unsigned long *UART = FFUART;
> +#endif
This doesn't work for kernels that have support for both types of
machines.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |



More information about the linux-arm-kernel mailing list