[U-Boot] [PATCH v2] board_f: reserve noncached space below malloc area

Vikas Manocha vikas.manocha at st.com
Fri Aug 16 16:57:44 UTC 2019


Noncached area at present is being initialized to random space after malloc
area. It works in most the cases as it goes to stack area & stack is not
overwriting it being far from it.

Signed-off-by: Vikas Manocha <vikas.manocha at st.com>
---
Changes in v2: added blank line before return

 common/board_f.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/common/board_f.c b/common/board_f.c
index 59745d5..58529d2 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -439,12 +439,29 @@ static int reserve_uboot(void)
 	return 0;
 }
 
+#ifdef CONFIG_SYS_NONCACHED_MEMORY
+static int reserve_noncached(void)
+{
+	/* round down to SECTION SIZE (typicaly 1MB) limit */
+	gd->start_addr_sp &= ~(MMU_SECTION_SIZE - 1);
+	gd->start_addr_sp -= CONFIG_SYS_NONCACHED_MEMORY;
+	debug("Reserving %dM for noncached_alloc() at: %08lx\n",
+	      CONFIG_SYS_NONCACHED_MEMORY >> 20, gd->start_addr_sp);
+
+	return 0;
+}
+#endif
+
 /* reserve memory for malloc() area */
 static int reserve_malloc(void)
 {
 	gd->start_addr_sp = gd->start_addr_sp - TOTAL_MALLOC_LEN;
 	debug("Reserving %dk for malloc() at: %08lx\n",
 	      TOTAL_MALLOC_LEN >> 10, gd->start_addr_sp);
+#ifdef CONFIG_SYS_NONCACHED_MEMORY
+	reserve_noncached();
+#endif
+
 	return 0;
 }
 
-- 
2.7.4



More information about the U-Boot mailing list