From 35f3890d2b724c6adb79281413fe6f60c552ca20 Mon Sep 17 00:00:00 2001 From: Juergen Borleis Date: Tue, 9 May 2017 09:51:15 +0200 Subject: PPC: request a consistent memory layout Using the memory test command will crash barebox, because it tests the area where the stack is located for the PPC architecture. On PPC the stack is below the barebox binary. Below the stack the malloc area is located. Until this change some routines used the macros from 'memory_layout.h', some other calculated their values by their own - which resulted into an unrequested and unprotected stack area. Signed-off-by: Juergen Borleis Signed-off-by: Sascha Hauer --- arch/ppc/mach-mpc5xxx/Kconfig | 1 - arch/ppc/mach-mpc5xxx/cpu.c | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/arch/ppc/mach-mpc5xxx/Kconfig b/arch/ppc/mach-mpc5xxx/Kconfig index 1ecce3a56c..180aa32ad1 100644 --- a/arch/ppc/mach-mpc5xxx/Kconfig +++ b/arch/ppc/mach-mpc5xxx/Kconfig @@ -32,7 +32,6 @@ config ARCH_MPC5200 config MPC5xxx bool depends on MACH_PHYCORE_MPC5200B_TINY - select HAVE_CONFIGURABLE_MEMORY_LAYOUT default y menu "Board specific settings" diff --git a/arch/ppc/mach-mpc5xxx/cpu.c b/arch/ppc/mach-mpc5xxx/cpu.c index 42ced9ac54..ab58967aa4 100644 --- a/arch/ppc/mach-mpc5xxx/cpu.c +++ b/arch/ppc/mach-mpc5xxx/cpu.c @@ -33,6 +33,8 @@ #include #include #include +#include +#include int checkcpu (void) { @@ -60,6 +62,22 @@ int checkcpu (void) /* ------------------------------------------------------------------------- */ +static int mpc5xxx_reserve_region(void) +{ + struct resource *r; + + /* keep this in sync with the assembler routines setting up the stack */ + r = request_sdram_region("stack", _text_base - STACK_SIZE, STACK_SIZE); + if (r == NULL) { + pr_err("Failed to request stack region at: 0x%08lx/0x%08lx\n", + _text_base - STACK_SIZE, _text_base - 1); + return -EBUSY; + } + + return 0; +} +coredevice_initcall(mpc5xxx_reserve_region); + static void __noreturn mpc5xxx_restart_soc(struct restart_handler *rst) { ulong msr; -- cgit v1.2.3