1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Initial page table for Linux kernel under Hexagon VM,
5 * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
9 * These tables are pre-computed and linked into kernel.
12 #include <asm/vm_mmu.h>
13 /* #include <asm/iomap.h> */
16 * Start with mapping PA=0 to both VA=0x0 and VA=0xc000000 as 16MB large pages.
17 * No user mode access, RWX, write-back cache. The entry needs
18 * to be replicated for all 4 virtual segments mapping to the page.
21 /* "Big Kernel Page" */
22 #define BKP(pa) (((pa) & __HVM_PTE_PGMASK_4MB) \
23 | __HVM_PTE_R | __HVM_PTE_W | __HVM_PTE_X \
24 | __HEXAGON_C_WB_L2 << 6 \
27 /* No cache version */
29 #define BKPG_IO(pa) (((pa) & __HVM_PTE_PGMASK_16MB) \
30 | __HVM_PTE_R | __HVM_PTE_W | __HVM_PTE_X \
31 | __HVM_PDE_S_16MB | __HEXAGON_C_DEV << 6 )
33 #define FOURK_IO(pa) (((pa) & __HVM_PTE_PGMASK_4KB) \
34 | __HVM_PTE_R | __HVM_PTE_W | __HVM_PTE_X \
35 | __HEXAGON_C_DEV << 6 )
37 #define L2_PTR(pa) (((pa) & __HVM_PTE_PGMASK_4KB) \
40 #define X __HVM_PDE_S_INVALID
44 .globl _K_init_segtable
51 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
52 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
53 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
54 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
55 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
56 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
57 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
58 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
60 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
61 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
62 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
63 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
64 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
65 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
66 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
67 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
69 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
70 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
71 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
72 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
73 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
75 #ifdef CONFIG_COMET_EARLY_UART_DEBUG
77 /*0xa9*/.word BKPG_IO(0xa9000000),BKPG_IO(0xa9000000),BKPG_IO(0xa9000000),BKPG_IO(0xa9000000)
87 /*0xb0*/.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
88 .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
91 .word BKP(0x00000000), BKP(0x00400000), BKP(0x00800000), BKP(0x00c00000)
92 .word BKP(0x01000000), BKP(0x01400000), BKP(0x01800000), BKP(0x01c00000)
93 .word BKP(0x02000000), BKP(0x02400000), BKP(0x02800000), BKP(0x02c00000)
94 .word BKP(0x03000000), BKP(0x03400000), BKP(0x03800000), BKP(0x03c00000)
95 .word BKP(0x04000000), BKP(0x04400000), BKP(0x04800000), BKP(0x04c00000)
96 .word BKP(0x05000000), BKP(0x05400000), BKP(0x05800000), BKP(0x05c00000)
97 .word BKP(0x06000000), BKP(0x06400000), BKP(0x06800000), BKP(0x06c00000)
98 .word BKP(0x07000000), BKP(0x07400000), BKP(0x07800000), BKP(0x07c00000)
100 .word BKP(0x08000000), BKP(0x08400000), BKP(0x08800000), BKP(0x08c00000)
101 .word BKP(0x09000000), BKP(0x09400000), BKP(0x09800000), BKP(0x09c00000)
102 .word BKP(0x0a000000), BKP(0x0a400000), BKP(0x0a800000), BKP(0x0ac00000)
103 .word BKP(0x0b000000), BKP(0x0b400000), BKP(0x0b800000), BKP(0x0bc00000)
104 .word BKP(0x0c000000), BKP(0x0c400000), BKP(0x0c800000), BKP(0x0cc00000)
105 .word BKP(0x0d000000), BKP(0x0d400000), BKP(0x0d800000), BKP(0x0dc00000)
106 .word BKP(0x0e000000), BKP(0x0e400000), BKP(0x0e800000), BKP(0x0ec00000)
107 .word BKP(0x0f000000), BKP(0x0f400000), BKP(0x0f800000), BKP(0x0fc00000)
109 .word BKP(0x10000000), BKP(0x10400000), BKP(0x10800000), BKP(0x10c00000)
110 .word BKP(0x11000000), BKP(0x11400000), BKP(0x11800000), BKP(0x11c00000)
111 .word BKP(0x12000000), BKP(0x12400000), BKP(0x12800000), BKP(0x12c00000)
112 .word BKP(0x13000000), BKP(0x13400000), BKP(0x13800000), BKP(0x13c00000)
113 .word BKP(0x14000000), BKP(0x14400000), BKP(0x14800000), BKP(0x14c00000)
114 .word BKP(0x15000000), BKP(0x15400000), BKP(0x15800000), BKP(0x15c00000)
115 .word BKP(0x16000000), BKP(0x16400000), BKP(0x16800000), BKP(0x16c00000)
116 .word BKP(0x17000000), BKP(0x17400000), BKP(0x17800000), BKP(0x17c00000)
118 .word BKP(0x18000000), BKP(0x18400000), BKP(0x18800000), BKP(0x18c00000)
119 .word BKP(0x19000000), BKP(0x19400000), BKP(0x19800000), BKP(0x19c00000)
120 .word BKP(0x1a000000), BKP(0x1a400000), BKP(0x1a800000), BKP(0x1ac00000)
121 .word BKP(0x1b000000), BKP(0x1b400000), BKP(0x1b800000), BKP(0x1bc00000)
122 .word BKP(0x1c000000), BKP(0x1c400000), BKP(0x1c800000), BKP(0x1cc00000)
123 .word BKP(0x1d000000), BKP(0x1d400000), BKP(0x1d800000), BKP(0x1dc00000)
124 .word BKP(0x1e000000), BKP(0x1e400000), BKP(0x1e800000), BKP(0x1ec00000)
125 .word BKP(0x1f000000), BKP(0x1f400000), BKP(0x1f800000), BKP(0x1fc00000)
127 .word BKP(0x20000000), BKP(0x20400000), BKP(0x20800000), BKP(0x20c00000)
128 .word BKP(0x21000000), BKP(0x21400000), BKP(0x21800000), BKP(0x21c00000)
129 .word BKP(0x22000000), BKP(0x22400000), BKP(0x22800000), BKP(0x22c00000)
130 .word BKP(0x23000000), BKP(0x23400000), BKP(0x23800000), BKP(0x23c00000)
131 .word BKP(0x24000000), BKP(0x24400000), BKP(0x24800000), BKP(0x24c00000)
132 .word BKP(0x25000000), BKP(0x25400000), BKP(0x25800000), BKP(0x25c00000)
133 .word BKP(0x26000000), BKP(0x26400000), BKP(0x26800000), BKP(0x26c00000)
134 .word BKP(0x27000000), BKP(0x27400000), BKP(0x27800000), BKP(0x27c00000)
136 .word BKP(0x28000000), BKP(0x28400000), BKP(0x28800000), BKP(0x28c00000)
137 .word BKP(0x29000000), BKP(0x29400000), BKP(0x29800000), BKP(0x29c00000)
138 .word BKP(0x2a000000), BKP(0x2a400000), BKP(0x2a800000), BKP(0x2ac00000)
139 .word BKP(0x2b000000), BKP(0x2b400000), BKP(0x2b800000), BKP(0x2bc00000)
140 .word BKP(0x2c000000), BKP(0x2c400000), BKP(0x2c800000), BKP(0x2cc00000)
141 .word BKP(0x2d000000), BKP(0x2d400000), BKP(0x2d800000), BKP(0x2dc00000)
142 .word BKP(0x2e000000), BKP(0x2e400000), BKP(0x2e800000), BKP(0x2ec00000)
143 .word BKP(0x2f000000), BKP(0x2f400000), BKP(0x2f800000), BKP(0x2fc00000)
145 .word BKP(0x30000000), BKP(0x30400000), BKP(0x30800000), BKP(0x30c00000)
146 .word BKP(0x31000000), BKP(0x31400000), BKP(0x31800000), BKP(0x31c00000)
147 .word BKP(0x32000000), BKP(0x32400000), BKP(0x32800000), BKP(0x32c00000)
148 .word BKP(0x33000000), BKP(0x33400000), BKP(0x33800000), BKP(0x33c00000)
149 .word BKP(0x34000000), BKP(0x34400000), BKP(0x34800000), BKP(0x34c00000)
150 .word BKP(0x35000000), BKP(0x35400000), BKP(0x35800000), BKP(0x35c00000)
151 .word BKP(0x36000000), BKP(0x36400000), BKP(0x36800000), BKP(0x36c00000)
152 .word BKP(0x37000000), BKP(0x37400000), BKP(0x37800000), BKP(0x37c00000)
154 .word BKP(0x38000000), BKP(0x38400000), BKP(0x38800000), BKP(0x38c00000)
155 .word BKP(0x39000000), BKP(0x39400000), BKP(0x39800000), BKP(0x39c00000)
156 .word BKP(0x3a000000), BKP(0x3a400000), BKP(0x3a800000), BKP(0x3ac00000)
157 .word BKP(0x3b000000), BKP(0x3b400000), BKP(0x3b800000), BKP(0x3bc00000)
158 .word BKP(0x3c000000), BKP(0x3c400000), BKP(0x3c800000), BKP(0x3cc00000)
159 .word BKP(0x3d000000), BKP(0x3d400000), BKP(0x3d800000), BKP(0x3dc00000)
161 .word X,X,X,X /* 0x3e000000 - device IO early remap */
162 .word X,X,X,X /* 0x3f000000 - hypervisor space*/
166 * This is in here as an example for devices which need to be mapped really
171 .globl _K_init_devicetable
172 _K_init_devicetable: /* Should be 4MB worth of entries */
173 .word FOURK_IO(MSM_GPIO1_PHYS),FOURK_IO(MSM_GPIO2_PHYS),FOURK_IO(MSM_SIRC_PHYS),X
174 .word FOURK_IO(TLMM_GPIO1_PHYS),X,X,X