[PATCH] ARM: Exynos : Fix build error with thumb2

Dave Martin Dave.Martin at arm.com
Mon Jun 2 03:10:24 PDT 2014


On Mon, May 26, 2014 at 09:23:45PM +0530, Santosh Shukla wrote:
> From: santosh shukla <santosh.shukla at linaro.org>
> 
> Add non-global symbol .LLl2x0_regs_phys to avoid build break in thumb2 mode.
> 
> IIUC, arm assembler fail to load value of "global" variable
> l2xo_regs_phys for thum2 mode and wrapping it in non-global symbol like
> .Ll2x0_regs_phys solves the build break issue.
> 
> arch/arm/mach-exynos/sleep.S: Assembler messages:
> arch/arm/mach-exynos/sleep.S:57: Error: invalid immediate for address
> calculation (value = 0x00000004)
> 
> fix inspired from [1]
> 
> [1] https://lkml.org/lkml/2010/3/31/235
> 
> Signed-off-by: santosh shukla <santosh.shukla at linaro.org>

Reviewed-by: Dave Martin <Dave.Martin at arm.com>

The binutils folks insist that this is not a bug in gas.  (I disagreed, but
it's a grey area.)  This is the established pattern for working round this
issue -- looks fine to me.

Cheers
---Dave


> ---
>  arch/arm/mach-exynos/sleep.S |    4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/mach-exynos/sleep.S b/arch/arm/mach-exynos/sleep.S
> index a2613e9..dc8c6b6 100644
> --- a/arch/arm/mach-exynos/sleep.S
> +++ b/arch/arm/mach-exynos/sleep.S
> @@ -54,7 +54,7 @@ ENTRY(exynos_cpu_resume)
>  	ldr	r1, =CPU_CORTEX_A9
>  	cmp	r0, r1
>  	bne	skip_l2_resume
> -	adr	r0, l2x0_regs_phys
> +	adr	r0, .Ll2x0_regs_phys
>  	ldr	r0, [r0]
>  	cmp	r0, #0
>  	beq	skip_l2_resume
> @@ -79,6 +79,8 @@ skip_l2_resume:
>  	b	cpu_resume
>  ENDPROC(exynos_cpu_resume)
>  #ifdef CONFIG_CACHE_L2X0
> +
> +.Ll2x0_regs_phys:
>  	.globl l2x0_regs_phys
>  l2x0_regs_phys:
>  	.long	0
> -- 
> 1.7.9.5
> 
> 
> _______________________________________________
> linaro-kernel mailing list
> linaro-kernel at lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/linaro-kernel



More information about the linux-arm-kernel mailing list