summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorHimanshu Chauhan <hchauhan@ventanamicro.com>2023-01-19 18:18:22 +0300
committerAnup Patel <anup@brainfault.org>2023-01-23 07:36:14 +0300
commitfefa5488038584a6376a8f361e74ccc2183dd50b (patch)
tree28820c8d36a8d4029aceb2c7889de2a8d6bee3d6 /firmware
parenta990309fa362aa050caf7fb175f35c7bfa486ccc (diff)
downloadopensbi-fefa5488038584a6376a8f361e74ccc2183dd50b.tar.xz
firmware: Split RO/RX and RW sections
Split the RO/RX and RW sections so that they can have independent pmp entries with required permissions. The split size is ensured to be a power-of-2 as required by pmp. _fw_rw_offset symbol marks the beginning of the data section. Signed-off-by: Himanshu Chauhan <hchauhan@ventanamicro.com> Reviewed-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'firmware')
-rw-r--r--firmware/fw_base.ldS8
1 files changed, 8 insertions, 0 deletions
diff --git a/firmware/fw_base.ldS b/firmware/fw_base.ldS
index 563ae25..5411bbd 100644
--- a/firmware/fw_base.ldS
+++ b/firmware/fw_base.ldS
@@ -42,6 +42,14 @@
. = ALIGN(0x1000); /* Ensure next section is page aligned */
+ /*
+ * PMP regions must be to be power-of-2. RO/RW will have separate
+ * regions, so ensure that the split is power-of-2.
+ */
+ . = ALIGN(1 << LOG2CEIL(SIZEOF(.rodata) + SIZEOF(.text)));
+
+ PROVIDE(_fw_rw_offset = (. - _fw_start));
+
/* Beginning of the read-write data sections */
.data :