diff --git a/arch/arm/cpu/entry.c b/arch/arm/cpu/entry.c index 0cdcfec..33b1429 100644 --- a/arch/arm/cpu/entry.c +++ b/arch/arm/cpu/entry.c @@ -27,7 +27,7 @@ void __naked __noreturn barebox_arm_entry(unsigned long membase, unsigned long memsize, void *boarddata) { - arm_setup_stack(arm_mem_stack(membase, membase + memsize) + STACK_SIZE - 16); + arm_setup_stack(arm_mem_stack_top(membase, membase + memsize) - 16); arm_early_mmu_cache_invalidate(); if (IS_ENABLED(CONFIG_PBL_MULTI_IMAGES)) diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c index 0120117..a62b0d5 100644 --- a/arch/arm/cpu/start.c +++ b/arch/arm/cpu/start.c @@ -158,7 +158,7 @@ pr_debug("memory at 0x%08lx, size 0x%08lx\n", membase, memsize); - arm_stack_top = endmem; + arm_stack_top = arm_mem_stack_top(membase, endmem); arm_barebox_size = barebox_size; malloc_end = arm_mem_barebox_image(membase, endmem, arm_barebox_size); diff --git a/arch/arm/include/asm/barebox-arm.h b/arch/arm/include/asm/barebox-arm.h index 061296a..e8dfd02 100644 --- a/arch/arm/include/asm/barebox-arm.h +++ b/arch/arm/include/asm/barebox-arm.h @@ -94,10 +94,16 @@ void *barebox_arm_boot_dtb(void); +static inline unsigned long arm_mem_stack_top(unsigned long membase, + unsigned long endmem) +{ + return endmem - SZ_64K; +} + static inline unsigned long arm_mem_stack(unsigned long membase, unsigned long endmem) { - return endmem - SZ_64K - STACK_SIZE; + return arm_mem_stack_top(membase, endmem) - STACK_SIZE; } static inline unsigned long arm_mem_ttb(unsigned long membase,