FVP: make usage of Trusted DRAM optional at build time
This patch groups the current contents of the Trusted DRAM region at
address 0x00_0600_0000 (entrypoint mailboxes and BL3-1 parameters) in
a single shared memory area that may be allocated to Trusted SRAM
(default) or Trusted DRAM at build time by setting the
FVP_SHARED_DATA_LOCATION make variable. The size of this shared
memory is 4096 bytes.
The combination 'Shared data in Trusted SRAM + TSP in Trusted DRAM'
is not currently supported due to restrictions in the maximum number
of mmu tables that can be created.
Documentation has been updated to reflect these changes.
Fixes ARM-software/tf-issues#100
Change-Id: I26ff04d33ce4cacf8d770d1a1e24132b4fc53ff0
diff --git a/plat/fvp/fvp_def.h b/plat/fvp/fvp_def.h
index c54537f..b371ea9 100644
--- a/plat/fvp/fvp_def.h
+++ b/plat/fvp/fvp_def.h
@@ -74,10 +74,27 @@
#define NSRAM_BASE 0x2e000000
#define NSRAM_SIZE 0x10000
-#define MBOX_OFF 0x1000
+/* 4KB shared memory */
+#define FVP_SHARED_RAM_SIZE 0x1000
-/* Base address where parameters to BL31 are stored */
-#define PARAMS_BASE FVP_TRUSTED_DRAM_BASE
+/* Location of shared memory */
+#if (FVP_SHARED_DATA_LOCATION_ID == FVP_IN_TRUSTED_DRAM)
+/* Shared memory at the base of Trusted DRAM */
+# define FVP_SHARED_RAM_BASE FVP_TRUSTED_DRAM_BASE
+# define FVP_TRUSTED_SRAM_LIMIT (FVP_TRUSTED_SRAM_BASE \
+ + FVP_TRUSTED_SRAM_SIZE)
+#elif (FVP_SHARED_DATA_LOCATION_ID == FVP_IN_TRUSTED_SRAM)
+# if (FVP_TSP_RAM_LOCATION_ID == FVP_IN_TRUSTED_DRAM)
+# error "Shared data in Trusted SRAM and TSP in Trusted DRAM is not supported"
+# endif
+/* Shared memory at the top of the Trusted SRAM */
+# define FVP_SHARED_RAM_BASE (FVP_TRUSTED_SRAM_BASE \
+ + FVP_TRUSTED_SRAM_SIZE \
+ - FVP_SHARED_RAM_SIZE)
+# define FVP_TRUSTED_SRAM_LIMIT FVP_SHARED_RAM_BASE
+#else
+# error "Unsupported FVP_SHARED_DATA_LOCATION_ID value"
+#endif
#define DRAM1_BASE 0x80000000ull
#define DRAM1_SIZE 0x80000000ull
@@ -239,4 +256,15 @@
#define FVP_NSAID_HDLCD0 2
#define FVP_NSAID_CLCD 7
+/*******************************************************************************
+ * Shared Data
+ ******************************************************************************/
+
+/* Entrypoint mailboxes */
+#define MBOX_BASE FVP_SHARED_RAM_BASE
+#define MBOX_SIZE 0x200
+
+/* Base address where parameters to BL31 are stored */
+#define PARAMS_BASE (MBOX_BASE + MBOX_SIZE)
+
#endif /* __FVP_DEF_H__ */