| 1 | ENTRY(__start) |
| 2 | |
| 3 | MEMORY { |
| 4 | /* On virt machine RAM starts at 1 GiB. */ |
| 5 | |
| 6 | /* Align text and rodata to the 1st 2 MiB chunk. */ |
| 7 | TXT (rx) : ORIGIN = 1 << 30, LENGTH = 2M |
| 8 | /* Align r/w data to the 2nd 2 MiB chunk. */ |
| 9 | DAT (rw) : ORIGIN = (1 << 30) + 2M, LENGTH = 2M |
| 10 | /* Align the MTE-enabled page to the 3rd 2 MiB chunk. */ |
| 11 | TAG (rw) : ORIGIN = (1 << 30) + 4M, LENGTH = 2M |
| 12 | } |
| 13 | |
| 14 | SECTIONS { |
| 15 | .text : { |
| 16 | *(.text) |
| 17 | *(.rodata) |
| 18 | } >TXT |
| 19 | .data : { |
| 20 | *(.data) |
| 21 | *(.bss) |
| 22 | } >DAT |
| 23 | .tag : { |
| 24 | /* |
| 25 | * Symbol 'mte_page' is used in boot.S to setup the PTE and in the mte.S |
| 26 | * test as the address that the MTE instructions operate on. |
| 27 | */ |
| 28 | mte_page = .; |
| 29 | } >TAG |
| 30 | /DISCARD/ : { |
| 31 | *(.ARM.attributes) |
| 32 | } |
| 33 | } |