]> git.proxmox.com Git - mirror_edk2.git/blame - ArmVirtPkg/Library/ArmPlatformLibQemu/IdMap.S
ArmVirtPkg/ArmVirtQemu: enlarge initial flash mapping
[mirror_edk2.git] / ArmVirtPkg / Library / ArmPlatformLibQemu / IdMap.S
CommitLineData
2eff4ddc
AB
1// SPDX-License-Identifier: BSD-2-Clause-Patent\r
2// Copyright 2022 Google LLC\r
3// Author: Ard Biesheuvel <ardb@google.com>\r
4\r
5 .set TT_TYPE_BLOCK, 0x1\r
6 .set TT_TYPE_PAGE, 0x3\r
7 .set TT_TYPE_TABLE, 0x3\r
8\r
9 .set TT_AF, 0x1 << 10\r
10 .set TT_NG, 0x1 << 11\r
11 .set TT_RO, 0x2 << 6\r
12 .set TT_XN, 0x3 << 53\r
13\r
14 .set TT_MT_DEV, 0x0 << 2 // MAIR #0\r
15 .set TT_MT_MEM, (0x3 << 2) | (0x3 << 8) // MAIR #3\r
16\r
17 .set PAGE_XIP, TT_TYPE_PAGE | TT_MT_MEM | TT_AF | TT_RO | TT_NG\r
619f0772 18 .set BLOCK_XIP, TT_TYPE_BLOCK | TT_MT_MEM | TT_AF | TT_RO | TT_NG\r
2eff4ddc
AB
19 .set BLOCK_DEV, TT_TYPE_BLOCK | TT_MT_DEV | TT_AF | TT_XN | TT_NG\r
20 .set BLOCK_MEM, TT_TYPE_BLOCK | TT_MT_MEM | TT_AF | TT_XN | TT_NG\r
21\r
22 .globl idmap\r
23 .section ".rodata.idmap", "a", %progbits\r
24 .align 12\r
25\r
26idmap: /* level 0 */\r
27 .quad 1f + TT_TYPE_TABLE\r
28 .fill 511, 8, 0x0\r
29\r
301: /* level 1 */\r
31 .quad 20f + TT_TYPE_TABLE // 1 GB of flash and device mappings\r
32 .quad 21f + TT_TYPE_TABLE // up to 1 GB of DRAM\r
33 .fill 510, 8, 0x0 // 510 GB of remaining VA space\r
34\r
3520: /* level 2 */\r
36 .quad 3f + TT_TYPE_TABLE // up to 2 MB of flash\r
619f0772
AB
37 .quad BLOCK_XIP | (0x1 << 21) // another 2 MB of flash\r
38 .fill 62, 8, 0x0 // 124 MB of unused flash\r
2eff4ddc
AB
39 .set idx, 64\r
40 .rept 448\r
41 .quad BLOCK_DEV | (idx << 21) // 896 MB of RW- device mappings\r
42 .set idx, idx + 1\r
43 .endr\r
44\r
4521: /* level 2 */\r
46 .set idx, 0x40000000 >> 21\r
47 .rept 64\r
48 .quad BLOCK_MEM | (idx << 21) // 128 MB of RW- memory mappings\r
49 .set idx, idx + 1\r
50 .endr\r
51 .fill 448, 8, 0x0\r
52\r
533: /* level 3 */\r
54 .quad 0x0 // omit first 4k page\r
55 .set idx, 1\r
56 .rept 511\r
57 .quad PAGE_XIP | (idx << 12) // 2044 KiB of R-X flash mappings\r
58 .set idx, idx + 1\r
59 .endr\r