On 8/28/24 04:01, Gustavo Romero wrote:
SECTIONS
{
- /* virt machine, RAM starts at 1gb */
+ /* Skip first 1 GiB on virt machine: RAM starts at 1 GiB. */
. = (1 << 30);
Better is to use
MEMORY {
RAM (rwx) : ORIGIN = 1 << 30, LENGTH = 16M
}
(or whatever minimum length seems reasonable).
Since there is only one memory region, it will be used by default and no further markup is
required.
+ /* Align text to first 2 MiB. */
+ . = ALIGN(0 * 2M);
This is pointless, of course: ALIGN(0) does nothing.
@@ -19,12 +21,12 @@ SECTIONS
*(.bss)
}
/*
- * Align the MTE page to the next 2mb boundary (i.e., the third 2mb chunk
- * starting from 1gb) by setting the address for symbol 'mte_page', which
is
- * used in boot.S to setup the PTE and in the mte.S test as the address
that
- * the MTE instructions operate on.
+ * Align the MTE page to the next 2 MiB boundary (i.e., the third 2 MiB
+ * chunk starting from 1 GiB) by setting the address for symbol 'mte_page',
+ * which is used in boot.S to setup the PTE and in the mte.S test as the
+ * address that the MTE instructions operate on.
*/
- mte_page = ALIGN(1 << 22);
+ mte_page = ALIGN(2 * 2M);
This does not do what you think it does.
It aligns to the next 4M boundary, not the next 2M boundary.
r~