[PATCH v2] ARM: proc-v7.S: Adjust stack address when XIP_KERNEL

Nicolas Pitre nicolas.pitre at linaro.org
Mon Feb 1 13:15:38 PST 2016


On Mon, 1 Feb 2016, Chris Brandt wrote:

> From: Nicolas Pitre <nico at linaro.org>
> 
> When XIP_KERNEL is enabled, the virt to phys address translation for RAM
> is not the same as the virt to phys address translation for .text.
> The only way to know where physical RAM is located is to use
> PLAT_PHYS_OFFSET.
> The MACRO will be useful for other places where there is a similar problem.
> 
> Signed-off-by: Nicolas Pitre <nico at linaro.org>
> Signed-off-by: Chris Brandt <chris.brandt at renesas.com>

Looks fine.  You may submit it here:

http://www.arm.linux.org.uk/developer/patches/


> ---
> v2:
> * Fixed Signed-off to show correct author
> ---
>  arch/arm/include/asm/memory.h | 8 ++++++++
>  arch/arm/mm/proc-v7.S         | 2 +-
>  2 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h
> index c79b57b..7dd2ab5 100644
> --- a/arch/arm/include/asm/memory.h
> +++ b/arch/arm/include/asm/memory.h
> @@ -134,6 +134,14 @@
>   */
>  #define PLAT_PHYS_OFFSET	UL(CONFIG_PHYS_OFFSET)
>  
> +#ifdef CONFIG_XIP_KERNEL
> +#define PHYS_OFFSET_FIXUP \
> +	( XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR) - PAGE_OFFSET + \
> +	  PLAT_PHYS_OFFSET - CONFIG_XIP_PHYS_ADDR )
> +#else
> +#define PHYS_OFFSET_FIXUP 0
> +#endif
> +
>  #ifndef __ASSEMBLY__
>  
>  /*
> diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S
> index 0f92d57..1595fb2 100644
> --- a/arch/arm/mm/proc-v7.S
> +++ b/arch/arm/mm/proc-v7.S
> @@ -487,7 +487,7 @@ __errata_finish:
>  
>  	.align	2
>  __v7_setup_stack_ptr:
> -	.word	__v7_setup_stack - .
> +	.word	__v7_setup_stack - . + PHYS_OFFSET_FIXUP
>  ENDPROC(__v7_setup)
>  
>  	.bss
> -- 
> 1.9.1
> 
> 
> 



More information about the linux-arm-kernel mailing list