summaryrefslogtreecommitdiff
path: root/common/board_f.c
diff options
context:
space:
mode:
authorYork Sun <yorksun@freescale.com>2015-12-04 19:57:07 (GMT)
committerYork Sun <yorksun@freescale.com>2015-12-15 00:57:32 (GMT)
commite81495224f732f17ae6f379baf23b90cd1d5cb5f (patch)
treef0e798cad86d64d6c2978307c94299f7f30eb208 /common/board_f.c
parent000f4e7686f4291fbd74d8920b586caf10f9241f (diff)
downloadu-boot-fsl-qoriq-e81495224f732f17ae6f379baf23b90cd1d5cb5f.tar.xz
Reserve secure memory
Secure memory is at the end of memory, separated and reserved from OS, tracked by gd->secure_ram. Secure memory can host MMU tables, security monitor, etc. This is different from PRAM used to reserve private memory. PRAM offers memory at the top of u-boot memory, not necessarily the real end of memory for systems with very large DDR. Using the end of memory simplifies MMU setup and avoid memory fragmentation. "bdinfo" command shows gd->secure_ram value if this memory is marked as secured. Signed-off-by: York Sun <yorksun@freescale.com>
Diffstat (limited to 'common/board_f.c')
-rw-r--r--common/board_f.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/common/board_f.c b/common/board_f.c
index b407354..bd5a486 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -324,6 +324,15 @@ static int setup_dest_addr(void)
* Ram is setup, size stored in gd !!
*/
debug("Ram size: %08lX\n", (ulong)gd->ram_size);
+#ifdef CONFIG_SYS_MEM_RESERVE_SECURE
+ /* Reserve memory for secure MMU tables, and/or security monitor */
+ gd->ram_size -= CONFIG_SYS_MEM_RESERVE_SECURE;
+ /*
+ * Record secure memory location. Need recalcuate if memory splits
+ * into banks, or the ram base is not zero.
+ */
+ gd->secure_ram = gd->ram_size;
+#endif
#if defined(CONFIG_SYS_MEM_TOP_HIDE)
/*
* Subtract specified amount of memory to hide so that it won't