summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bl1/bl1.ld.S9
-rw-r--r--bl2/bl2.ld.S9
-rw-r--r--bl31/bl31.ld.S9
-rw-r--r--plat/fvp/aarch64/plat_common.c4
-rw-r--r--plat/fvp/platform.h4
5 files changed, 31 insertions, 4 deletions
diff --git a/bl1/bl1.ld.S b/bl1/bl1.ld.S
index 48828e8f..969b8c27 100644
--- a/bl1/bl1.ld.S
+++ b/bl1/bl1.ld.S
@@ -77,6 +77,15 @@ SECTIONS
} >RAM
/*
+ * The .xlat_table section is for full, aligned page tables (4K).
+ * Removing them from .bss avoids forcing 4K alignment on
+ * the .bss section and eliminates the unecessary zero init
+ */
+ xlat_table (NOLOAD) : {
+ *(xlat_table)
+ } >RAM
+
+ /*
* The base address of the coherent memory section must be page-aligned (4K)
* to guarantee that the coherent data are stored on their own pages and
* are not mixed with normal data. This is required to set up the correct
diff --git a/bl2/bl2.ld.S b/bl2/bl2.ld.S
index c1d5d5c2..849297a7 100644
--- a/bl2/bl2.ld.S
+++ b/bl2/bl2.ld.S
@@ -59,6 +59,15 @@ SECTIONS
__RO_END__ = .;
} >RAM
+ /*
+ * The .xlat_table section is for full, aligned page tables (4K).
+ * Removing them from .bss avoids forcing 4K alignment on
+ * the .bss section and eliminates the unecessary zero init
+ */
+ xlat_table (NOLOAD) : {
+ *(xlat_table)
+ } >RAM
+
.data . : {
__DATA_START__ = .;
*(.data)
diff --git a/bl31/bl31.ld.S b/bl31/bl31.ld.S
index 42325609..7cc85273 100644
--- a/bl31/bl31.ld.S
+++ b/bl31/bl31.ld.S
@@ -60,6 +60,15 @@ SECTIONS
__RO_END__ = .;
} >RAM
+ /*
+ * The .xlat_table section is for full, aligned page tables (4K).
+ * Removing them from .bss avoids forcing 4K alignment on
+ * the .bss section and eliminates the unecessary zero init
+ */
+ xlat_table (NOLOAD) : {
+ *(xlat_table)
+ } >RAM
+
.data . : {
__DATA_START__ = .;
*(.data)
diff --git a/plat/fvp/aarch64/plat_common.c b/plat/fvp/aarch64/plat_common.c
index 5b53aafb..c8c36d79 100644
--- a/plat/fvp/aarch64/plat_common.c
+++ b/plat/fvp/aarch64/plat_common.c
@@ -67,14 +67,14 @@ __attribute__ ((aligned((ADDR_SPACE_SIZE >> 30) << 3)));
* space needed to address secure peripherals e.g. trusted ROM and RAM.
******************************************************************************/
static unsigned long l2_xlation_table[NUM_L2_PAGETABLES][NUM_2MB_IN_GB]
-__attribute__ ((aligned(NUM_2MB_IN_GB << 3)));
+__attribute__ ((aligned(NUM_2MB_IN_GB << 3), section("xlat_table")));
/*******************************************************************************
* Level 3 translation tables (2 sets) describe the trusted & non-trusted RAM
* regions at a granularity of 4K.
******************************************************************************/
static unsigned long l3_xlation_table[NUM_L3_PAGETABLES][NUM_4K_IN_2MB]
-__attribute__ ((aligned(NUM_4K_IN_2MB << 3)));
+__attribute__ ((aligned(NUM_4K_IN_2MB << 3), section("xlat_table")));
/*******************************************************************************
* Helper to create a level 1/2 table descriptor which points to a level 2/3
diff --git a/plat/fvp/platform.h b/plat/fvp/platform.h
index a12a0948..5826d357 100644
--- a/plat/fvp/platform.h
+++ b/plat/fvp/platform.h
@@ -225,12 +225,12 @@
/*******************************************************************************
* BL2 specific defines.
******************************************************************************/
-#define BL2_BASE 0x0402B000
+#define BL2_BASE 0x0402D000
/*******************************************************************************
* BL31 specific defines.
******************************************************************************/
-#define BL31_BASE 0x0400E000
+#define BL31_BASE 0x0400C000
/*******************************************************************************
* Platform specific page table and MMU setup constants