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