summaryrefslogtreecommitdiff
path: root/include/configs/zynq-common.h
diff options
context:
space:
mode:
authorMichal Simek <michal.simek@xilinx.com>2015-11-23 16:27:38 +0100
committerMichal Simek <michal.simek@xilinx.com>2015-12-07 10:14:29 +0100
commit83b6464daa017eb142370f537e58f19e8d9f6e53 (patch)
treefac6bdc6b3cc02d288fa1ad1a7371c35996a4cf8 /include/configs/zynq-common.h
parente92fc6df7ab1e3389225cca0102995942e010b43 (diff)
ARM: zynq: Fix location of stack and malloc areas
The patch "board_init: Change the logic to setup malloc_base" (sha1: 9ac4fc82071ce346e3885118242ff45d22f69b82) breaks SPL for Zynq because it puts early alloc area on the stack which caused that stack was decreased by CONFIG_SYS_MALLOC_F_LEN (0x400) and there was not enough space for regular stack. This patch changes memory layout to better utilize the last 64k OCM block. 0xffff0000 - 0xfff1000 - Full malloc space 0xffff1000 - 0xffff300 - Stack location 0xfffff300 - CONFIG_SYS_MALLOC_F_LEN - Early malloc space 0xfffffd00 - sizeof(GD) - GD 0xfffffe00 - 0xffffffff - SoC specific boot code Signed-off-by: Michal Simek <michal.simek@xilinx.com> Tested-by: Moritz Fischer <moritz.fischer@ettus.com>
Diffstat (limited to 'include/configs/zynq-common.h')
-rw-r--r--include/configs/zynq-common.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/include/configs/zynq-common.h b/include/configs/zynq-common.h
index d3d5470ad8..d499656bb5 100644
--- a/include/configs/zynq-common.h
+++ b/include/configs/zynq-common.h
@@ -367,17 +367,17 @@
/* The highest 64k OCM address */
#define OCM_HIGH_ADDR 0xffff0000
-/* Just define any reasonable size */
-#define CONFIG_SPL_STACK_SIZE 0x1000
-
-/* SPL stack position - and stack goes down */
-#define CONFIG_SPL_STACK (OCM_HIGH_ADDR + CONFIG_SPL_STACK_SIZE)
-
/* On the top of OCM space */
-#define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SPL_STACK + \
- GENERATED_GBL_DATA_SIZE)
+#define CONFIG_SYS_SPL_MALLOC_START OCM_HIGH_ADDR
#define CONFIG_SYS_SPL_MALLOC_SIZE 0x1000
+/*
+ * SPL stack position - and stack goes down
+ * 0xfffffe00 is used for putting wfi loop.
+ * Set it up as limit for now.
+ */
+#define CONFIG_SPL_STACK 0xfffffe00
+
/* BSS setup */
#define CONFIG_SPL_BSS_START_ADDR 0x100000
#define CONFIG_SPL_BSS_MAX_SIZE 0x100000