ENTRY(__start) MEMORY { /* On virt machine RAM starts at 1 GiB. */ /* Align text and rodata to the 1st 2 MiB chunk. */ TXT (rx) : ORIGIN = 1 << 30, LENGTH = 2M /* Align r/w data to the 2nd 2 MiB chunk. */ DAT (rw) : ORIGIN = (1 << 30) + 2M, LENGTH = 2M /* Align the MTE-enabled page to the 3rd 2 MiB chunk. */ TAG (rw) : ORIGIN = (1 << 30) + 4M, LENGTH = 2M } SECTIONS { .text : { *(.text) *(.rodata) } >TXT .data : { *(.data) *(.bss) } >DAT .tag : { /* * Symbol 'mte_page' 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 = .; } >TAG /DISCARD/ : { *(.ARM.attributes) } }