firmware: Split RO/RX and RW sections
authorHimanshu Chauhan <hchauhan@ventanamicro.com>
Thu, 19 Jan 2023 15:18:22 +0000 (20:48 +0530)
committerAnup Patel <anup@brainfault.org>
Mon, 23 Jan 2023 04:36:14 +0000 (10:06 +0530)
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>
firmware/fw_base.ldS

index 563ae25..5411bbd 100644 (file)
 
        . = 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 :