
Sascha,
-----Original Message----- From: Sascha Hauer [mailto:s.hauer@pengutronix.de] Sent: Tuesday, June 03, 2008 10:24 AM To: Menon, Nishanth Cc: u-boot-users@lists.sourceforge.net; Laurent Desnogues; dirk.behme@googlemail.com; philip.balister@gmail.com; Gopinath, Thara; Kamat, Nishant; Syed Mohammed, Khasim Subject: Re: [Patch 05/17] U-Boot-V2:ARM: Introduce capability tohavedifferent stack/malloc area
Instead of modifying this for one architecture I would prefer something like this (currently no implementation, only kconfig). Would this solve your issues?
Modification only done for ARM.
Signed-off-by: Nishanth Menonx0nishan@ti.com
--- arch/arm/cpu/start-arm.S | 27 +++++++++++++++++++- arch/arm/lib/arm.c | 16 ++++++++++-- common/Kconfig | 61 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+), 4 deletions(-)
Index: u-boot.v2/arch/arm/lib/arm.c =================================================================== --- u-boot.v2.orig/arch/arm/lib/arm.c 2008-06-03 20:56:27.000000000 -0500 +++ u-boot.v2/arch/arm/lib/arm.c 2008-06-03 20:56:46.000000000 -0500 @@ -4,10 +4,22 @@ #include <asm/u-boot-arm.h> #include <reloc.h>
+#ifdef CONFIG_MALLOC_BASE +#define ARM_MALLOC_START CONFIG_MALLOC_BASE +#else +#define ARM_MALLOC_START _u_boot_start +#endif + +#ifdef CONFIG_MALLOC_SIZE +#define ARM_MALLOC_SIZE CONFIG_MALLOC_SIZE +#else +#define ARM_MALLOC_SIZE CFG_MALLOC_LEN +#endif + int arm_mem_malloc_init(void) { - mem_malloc_init((void *)(_u_boot_start - CFG_MALLOC_LEN), - (void *)_u_boot_start); + mem_malloc_init((void *)(ARM_MALLOC_START - ARM_MALLOC_SIZE), + (void *)ARM_MALLOC_START); return 0; }
Index: u-boot.v2/arch/arm/cpu/start-arm.S =================================================================== --- u-boot.v2.orig/arch/arm/cpu/start-arm.S 2008-06-03 20:56:40.000000000 -0500 +++ u-boot.v2/arch/arm/cpu/start-arm.S 2008-06-03 21:08:04.000000000 -0500 @@ -90,11 +90,34 @@ * FIXME *************************************************************************/
+#ifdef CONFIG_MALLOC_BASE +#define ARM_MALLOC_START CONFIG_MALLOC_BASE +#else +#define ARM_MALLOC_START _start +#endif + +#ifdef CONFIG_MALLOC_SIZE +#define ARM_MALLOC_SIZE CONFIG_MALLOC_SIZE +#else +#define ARM_MALLOC_SIZE CFG_MALLOC_LEN +#endif _MALLOC_START: - .word _start - CFG_MALLOC_LEN + .word ARM_MALLOC_START - ARM_MALLOC_SIZE
+#ifdef CONFIG_STACK_BASE +#define ARM_STACK_START CONFIG_STACK_BASE +#else +#define ARM_STACK_START (ARM_MALLOC_START - ARM_MALLOC_SIZE) +#endif + +#ifdef CONFIG_STACK_SIZE +#define ARM_STACK_SIZE CONFIG_STACK_SIZE +#else +#define ARM_STACK_SIZE CFG_STACK_LEN +#endif _STACK_START: - .word _start - CFG_MALLOC_LEN - CONFIG_STACKSIZE + .word ARM_STACK_START - CONFIG_STACKSIZE +
/* * These are defined in the board-specific linker script. Index: u-boot.v2/common/Kconfig =================================================================== --- u-boot.v2.orig/common/Kconfig 2008-06-03 20:56:40.000000000 -0500 +++ u-boot.v2/common/Kconfig 2008-06-03 21:08:37.000000000 -0500 @@ -19,13 +19,74 @@ config BOARDINFO string
+menu "memory layout " + +config HAVE_CONFIGURABLE_TEXT_BASE + bool + config TEXT_BASE + depends on HAVE_CONFIGURABLE_TEXT_BASE prompt "TEXT_BASE" hex default ARCH_TEXT_BASE help The Address U-Boot gets linked at.
+config HAVE_CONFIGURABLE_STACK + bool +choice + prompt "select stack base policy" + depends on HAVE_CONFIGURABLE_STACK + default STACK_BASE_FIXED + +config STACK_BASE_DEFAULT + bool "place stack before malloc space" + +config STACK_BASE_FIXED + bool "manually assign a stack base" + +endchoice + +config STACK_BASE + depends on STACK_BASE_FIXED + hex + prompt "STACK_BASE" + +config STACK_SIZE + hex + depends on HAVE_CONFIGURABLE_STACK + default 0x8000 + prompt "Stack size" + +config HAVE_CONFIGURABLE_MALLOC + bool + +choice + prompt "select malloc base policy" + depends on HAVE_CONFIGURABLE_MALLOC + +config MALLOC_BASE_DEFAULT + bool + prompt "place malloc before U-Boot" + +config MALLOC_BASE_FIXED + bool + prompt "manually assign a malloc base" + +endchoice + +config MALLOC_BASE + depends on MALLOC_BASE_FIXED + hex + prompt "MALLOC_BASE" + +config MALLOC_SIZE + hex + depends on HAVE_CONFIGURABLE_MALLOC + default 0x400000 + prompt "malloc area size" +endmenu + config BROKEN bool prompt "Prompt for broken or incomplete code"