Hello experts,
I am trying to enable MMU on LS1046ARDB Board and have generated MMU translation table . I am able to write entries into translation table . I am running my code from flash memory and translation table base address is in DRAM . As soon as MMU bit is enabled in sctlr register I am getting Translation at level 1 error. Please can anyone help me where/what can be the mistake?
Any help would be appreciated.
Below is the assembly code .
Thanks.
/* * This file was automatically generated using arm64-pgtable-tool. * See: https://github.com/ashwio/arm64-pgtable-tool * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * This code programs the following translation table structure: * * level 1 table @ 0x80000000 * [# 1]---------------------------\ * level 2 table @ 0x80001000 * [# 0]---------------------------\ * level 3 table @ 0x80002000 * [# 256] 0x000040100000-0x000040100fff, Code, CODE * [# 257] 0x000040101000-0x000040101fff, Code, CODE * [# 258] 0x000040102000-0x000040102fff, Code, CODE * [# 259] 0x000040103000-0x000040103fff, Code, CODE * [# 260] 0x000040104000-0x000040104fff, Code, CODE * [# 261] 0x000040105000-0x000040105fff, Code, CODE * [# 262] 0x000040106000-0x000040106fff, Code, CODE * [# 263] 0x000040107000-0x000040107fff, Code, CODE * [# 264] 0x000040108000-0x000040108fff, Code, CODE * [# 265] 0x000040109000-0x000040109fff, Code, CODE * [# 266] 0x00004010a000-0x00004010afff, Code, CODE * [# 267] 0x00004010b000-0x00004010bfff, Code, CODE * [# 268] 0x00004010c000-0x00004010cfff, Code, CODE * [# 269] 0x00004010d000-0x00004010dfff, Code, CODE * [# 270] 0x00004010e000-0x00004010efff, Code, CODE * [# 271] 0x00004010f000-0x00004010ffff, Code, CODE * [# 272] 0x000040110000-0x000040110fff, Code, CODE * [# 273] 0x000040111000-0x000040111fff, Code, CODE * [# 274] 0x000040112000-0x000040112fff, Code, CODE * [# 275] 0x000040113000-0x000040113fff, Code, CODE * [# 276] 0x000040114000-0x000040114fff, Code, CODE * [# 277] 0x000040115000-0x000040115fff, Code, CODE * [# 278] 0x000040116000-0x000040116fff, Code, CODE * [# 279] 0x000040117000-0x000040117fff, Code, CODE * [# 280] 0x000040118000-0x000040118fff, Code, CODE * [# 281] 0x000040119000-0x000040119fff, Code, CODE * [# 282] 0x00004011a000-0x00004011afff, Code, CODE * [# 283] 0x00004011b000-0x00004011bfff, Code, CODE * [# 284] 0x00004011c000-0x00004011cfff, Code, CODE * [# 285] 0x00004011d000-0x00004011dfff, Code, CODE * [# 286] 0x00004011e000-0x00004011efff, Code, CODE * [# 287] 0x00004011f000-0x00004011ffff, Code, CODE * [# 288] 0x000040120000-0x000040120fff, Code, CODE * [# 289] 0x000040121000-0x000040121fff, Code, CODE * [# 290] 0x000040122000-0x000040122fff, Code, CODE * [# 291] 0x000040123000-0x000040123fff, Code, CODE * [# 292] 0x000040124000-0x000040124fff, Code, CODE * [# 293] 0x000040125000-0x000040125fff, Code, CODE * [# 294] 0x000040126000-0x000040126fff, Code, CODE * [# 295] 0x000040127000-0x000040127fff, Code, CODE * [# 296] 0x000040128000-0x000040128fff, Code, CODE * [# 297] 0x000040129000-0x000040129fff, Code, CODE * [# 298] 0x00004012a000-0x00004012afff, Code, CODE * [# 299] 0x00004012b000-0x00004012bfff, Code, CODE * [# 300] 0x00004012c000-0x00004012cfff, Code, CODE * [# 301] 0x00004012d000-0x00004012dfff, Code, CODE * [# 302] 0x00004012e000-0x00004012efff, Code, CODE * [# 303] 0x00004012f000-0x00004012ffff, Code, CODE * [# 304] 0x000040130000-0x000040130fff, Code, CODE * [# 305] 0x000040131000-0x000040131fff, Code, CODE * [# 306] 0x000040132000-0x000040132fff, Code, CODE * [# 307] 0x000040133000-0x000040133fff, Code, CODE * [# 308] 0x000040134000-0x000040134fff, Code, CODE * [# 309] 0x000040135000-0x000040135fff, Code, CODE * [# 310] 0x000040136000-0x000040136fff, Code, CODE * [# 311] 0x000040137000-0x000040137fff, Code, CODE * [# 312] 0x000040138000-0x000040138fff, Code, CODE * [# 313] 0x000040139000-0x000040139fff, Code, CODE * [# 314] 0x00004013a000-0x00004013afff, Code, CODE * [# 315] 0x00004013b000-0x00004013bfff, Code, CODE * [# 316] 0x00004013c000-0x00004013cfff, Code, CODE * [# 317] 0x00004013d000-0x00004013dfff, Code, CODE * [# 318] 0x00004013e000-0x00004013efff, Code, CODE * [# 319] 0x00004013f000-0x00004013ffff, Code, CODE * [# 320] 0x000040140000-0x000040140fff, Code, CODE * [# 321] 0x000040141000-0x000040141fff, Code, CODE * [# 322] 0x000040142000-0x000040142fff, Code, CODE * [# 323] 0x000040143000-0x000040143fff, Code, CODE * [# 324] 0x000040144000-0x000040144fff, Code, CODE * [# 325] 0x000040145000-0x000040145fff, Code, CODE * [# 326] 0x000040146000-0x000040146fff, Code, CODE * [# 327] 0x000040147000-0x000040147fff, Code, CODE * [# 328] 0x000040148000-0x000040148fff, Code, CODE * [# 329] 0x000040149000-0x000040149fff, Code, CODE * [# 330] 0x00004014a000-0x00004014afff, Code, CODE * [# 331] 0x00004014b000-0x00004014bfff, Code, CODE * [# 332] 0x00004014c000-0x00004014cfff, Code, CODE * [# 333] 0x00004014d000-0x00004014dfff, Code, CODE * [# 334] 0x00004014e000-0x00004014efff, Code, CODE * [# 335] 0x00004014f000-0x00004014ffff, Code, CODE * [# 336] 0x000040150000-0x000040150fff, Code, CODE * [# 337] 0x000040151000-0x000040151fff, Code, CODE * [# 338] 0x000040152000-0x000040152fff, Code, CODE * [# 339] 0x000040153000-0x000040153fff, Code, CODE * [# 340] 0x000040154000-0x000040154fff, Code, CODE * [# 341] 0x000040155000-0x000040155fff, Code, CODE * [# 342] 0x000040156000-0x000040156fff, Code, CODE * [# 343] 0x000040157000-0x000040157fff, Code, CODE * [# 344] 0x000040158000-0x000040158fff, Code, CODE * [# 345] 0x000040159000-0x000040159fff, Code, CODE * [# 346] 0x00004015a000-0x00004015afff, Code, CODE * [# 347] 0x00004015b000-0x00004015bfff, Code, CODE * [# 348] 0x00004015c000-0x00004015cfff, Code, CODE * [# 349] 0x00004015d000-0x00004015dfff, Code, CODE * [# 350] 0x00004015e000-0x00004015efff, Code, CODE * [# 351] 0x00004015f000-0x00004015ffff, Code, CODE * [# 352] 0x000040160000-0x000040160fff, Code, CODE * [# 353] 0x000040161000-0x000040161fff, Code, CODE * [# 354] 0x000040162000-0x000040162fff, Code, CODE * [# 2]---------------------------\ * level 2 table @ 0x80003000 * [# 128] 0x000090000000-0x0000901fffff, RW_Data, DRAM * [# 129] 0x000090200000-0x0000903fffff, RW_Data, DRAM * [# 130] 0x000090400000-0x0000905fffff, RW_Data, DRAM * [# 131] 0x000090600000-0x0000907fffff, RW_Data, DRAM * [# 132] 0x000090800000-0x0000909fffff, RW_Data, DRAM * [# 133] 0x000090a00000-0x000090bfffff, RW_Data, DRAM * [# 134] 0x000090c00000-0x000090dfffff, RW_Data, DRAM * [# 135] 0x000090e00000-0x000090ffffff, RW_Data, DRAM * [# 136] 0x000091000000-0x0000911fffff, RW_Data, DRAM * [# 137] 0x000091200000-0x0000913fffff, RW_Data, DRAM * [# 138] 0x000091400000-0x0000915fffff, RW_Data, DRAM * [# 139] 0x000091600000-0x0000917fffff, RW_Data, DRAM * [# 140] 0x000091800000-0x0000919fffff, RW_Data, DRAM * [# 141] 0x000091a00000-0x000091bfffff, RW_Data, DRAM * [# 142] 0x000091c00000-0x000091dfffff, RW_Data, DRAM * [# 143] 0x000091e00000-0x000091ffffff, RW_Data, DRAM * [# 144] 0x000092000000-0x0000921fffff, RW_Data, DRAM * [# 145] 0x000092200000-0x0000923fffff, RW_Data, DRAM * [# 146] 0x000092400000-0x0000925fffff, RW_Data, DRAM * [# 147] 0x000092600000-0x0000927fffff, RW_Data, DRAM * [# 148] 0x000092800000-0x0000929fffff, RW_Data, DRAM * [# 149] 0x000092a00000-0x000092bfffff, RW_Data, DRAM * [# 150] 0x000092c00000-0x000092dfffff, RW_Data, DRAM * [# 151] 0x000092e00000-0x000092ffffff, RW_Data, DRAM * [# 152] 0x000093000000-0x0000931fffff, RW_Data, DRAM * [# 153] 0x000093200000-0x0000933fffff, RW_Data, DRAM * [# 154] 0x000093400000-0x0000935fffff, RW_Data, DRAM * [# 155] 0x000093600000-0x0000937fffff, RW_Data, DRAM * [# 156] 0x000093800000-0x0000939fffff, RW_Data, DRAM * [# 157] 0x000093a00000-0x000093bfffff, RW_Data, DRAM * [# 158] 0x000093c00000-0x000093dfffff, RW_Data, DRAM * [# 159] 0x000093e00000-0x000093ffffff, RW_Data, DRAM * [# 160] 0x000094000000-0x0000941fffff, RW_Data, DRAM * [# 161] 0x000094200000-0x0000943fffff, RW_Data, DRAM * [# 162] 0x000094400000-0x0000945fffff, RW_Data, DRAM * [# 163] 0x000094600000-0x0000947fffff, RW_Data, DRAM * [# 164] 0x000094800000-0x0000949fffff, RW_Data, DRAM * [# 165] 0x000094a00000-0x000094bfffff, RW_Data, DRAM * [# 166] 0x000094c00000-0x000094dfffff, RW_Data, DRAM * [# 167] 0x000094e00000-0x000094ffffff, RW_Data, DRAM * [# 168] 0x000095000000-0x0000951fffff, RW_Data, DRAM * [# 169] 0x000095200000-0x0000953fffff, RW_Data, DRAM * [# 170] 0x000095400000-0x0000955fffff, RW_Data, DRAM * [# 171] 0x000095600000-0x0000957fffff, RW_Data, DRAM * [# 172] 0x000095800000-0x0000959fffff, RW_Data, DRAM * [# 173] 0x000095a00000-0x000095bfffff, RW_Data, DRAM * [# 174] 0x000095c00000-0x000095dfffff, RW_Data, DRAM * [# 175] 0x000095e00000-0x000095ffffff, RW_Data, DRAM * [# 176] 0x000096000000-0x0000961fffff, RW_Data, DRAM * [# 177] 0x000096200000-0x0000963fffff, RW_Data, DRAM * [# 178] 0x000096400000-0x0000965fffff, RW_Data, DRAM * [# 179] 0x000096600000-0x0000967fffff, RW_Data, DRAM * [# 180] 0x000096800000-0x0000969fffff, RW_Data, DRAM * [# 181] 0x000096a00000-0x000096bfffff, RW_Data, DRAM * [# 182] 0x000096c00000-0x000096dfffff, RW_Data, DRAM * [# 183] 0x000096e00000-0x000096ffffff, RW_Data, DRAM * [# 184] 0x000097000000-0x0000971fffff, RW_Data, DRAM * [# 185] 0x000097200000-0x0000973fffff, RW_Data, DRAM * [# 186] 0x000097400000-0x0000975fffff, RW_Data, DRAM * [# 187] 0x000097600000-0x0000977fffff, RW_Data, DRAM * [# 188] 0x000097800000-0x0000979fffff, RW_Data, DRAM * [# 189] 0x000097a00000-0x000097bfffff, RW_Data, DRAM * [# 190] 0x000097c00000-0x000097dfffff, RW_Data, DRAM * [# 191] 0x000097e00000-0x000097ffffff, RW_Data, DRAM * [# 192] 0x000098000000-0x0000981fffff, RW_Data, DRAM * [# 193] 0x000098200000-0x0000983fffff, RW_Data, DRAM * [# 194] 0x000098400000-0x0000985fffff, RW_Data, DRAM * [# 195] 0x000098600000-0x0000987fffff, RW_Data, DRAM * [# 196] 0x000098800000-0x0000989fffff, RW_Data, DRAM * [# 197] 0x000098a00000-0x000098bfffff, RW_Data, DRAM * [# 198] 0x000098c00000-0x000098dfffff, RW_Data, DRAM * [# 199] 0x000098e00000-0x000098ffffff, RW_Data, DRAM * [# 200] 0x000099000000-0x0000991fffff, RW_Data, DRAM * [# 201] 0x000099200000-0x0000993fffff, RW_Data, DRAM * [# 202] 0x000099400000-0x0000995fffff, RW_Data, DRAM * [# 203] 0x000099600000-0x0000997fffff, RW_Data, DRAM * [# 204] 0x000099800000-0x0000999fffff, RW_Data, DRAM * [# 205] 0x000099a00000-0x000099bfffff, RW_Data, DRAM * [# 206] 0x000099c00000-0x000099dfffff, RW_Data, DRAM * [# 207] 0x000099e00000-0x000099ffffff, RW_Data, DRAM * [# 208] 0x00009a000000-0x00009a1fffff, RW_Data, DRAM * [# 209] 0x00009a200000-0x00009a3fffff, RW_Data, DRAM * [# 210] 0x00009a400000-0x00009a5fffff, RW_Data, DRAM * [# 211] 0x00009a600000-0x00009a7fffff, RW_Data, DRAM * [# 212] 0x00009a800000-0x00009a9fffff, RW_Data, DRAM * [# 213] 0x00009aa00000-0x00009abfffff, RW_Data, DRAM * [# 214] 0x00009ac00000-0x00009adfffff, RW_Data, DRAM * [# 215] 0x00009ae00000-0x00009affffff, RW_Data, DRAM * [# 216] 0x00009b000000-0x00009b1fffff, RW_Data, DRAM * [# 217] 0x00009b200000-0x00009b3fffff, RW_Data, DRAM * [# 218] 0x00009b400000-0x00009b5fffff, RW_Data, DRAM * [# 219] 0x00009b600000-0x00009b7fffff, RW_Data, DRAM * [# 220] 0x00009b800000-0x00009b9fffff, RW_Data, DRAM * [# 221] 0x00009ba00000-0x00009bbfffff, RW_Data, DRAM * [# 222] 0x00009bc00000-0x00009bdfffff, RW_Data, DRAM * [# 223] 0x00009be00000-0x00009bffffff, RW_Data, DRAM * [# 224] 0x00009c000000-0x00009c1fffff, RW_Data, DRAM * [# 225] 0x00009c200000-0x00009c3fffff, RW_Data, DRAM * [# 226] 0x00009c400000-0x00009c5fffff, RW_Data, DRAM * [# 227] 0x00009c600000-0x00009c7fffff, RW_Data, DRAM * [# 228] 0x00009c800000-0x00009c9fffff, RW_Data, DRAM * [# 229] 0x00009ca00000-0x00009cbfffff, RW_Data, DRAM * [# 230] 0x00009cc00000-0x00009cdfffff, RW_Data, DRAM * [# 231] 0x00009ce00000-0x00009cffffff, RW_Data, DRAM * [# 232] 0x00009d000000-0x00009d1fffff, RW_Data, DRAM * [# 233] 0x00009d200000-0x00009d3fffff, RW_Data, DRAM * [# 234] 0x00009d400000-0x00009d5fffff, RW_Data, DRAM * [# 235] 0x00009d600000-0x00009d7fffff, RW_Data, DRAM * [# 236] 0x00009d800000-0x00009d9fffff, RW_Data, DRAM * [# 237] 0x00009da00000-0x00009dbfffff, RW_Data, DRAM * [# 238] 0x00009dc00000-0x00009ddfffff, RW_Data, DRAM * [# 239] 0x00009de00000-0x00009dffffff, RW_Data, DRAM * [# 240] 0x00009e000000-0x00009e1fffff, RW_Data, DRAM * [# 241] 0x00009e200000-0x00009e3fffff, RW_Data, DRAM * [# 242] 0x00009e400000-0x00009e5fffff, RW_Data, DRAM * [# 243] 0x00009e600000-0x00009e7fffff, RW_Data, DRAM * [# 244] 0x00009e800000-0x00009e9fffff, RW_Data, DRAM * [# 245] 0x00009ea00000-0x00009ebfffff, RW_Data, DRAM * [# 246] 0x00009ec00000-0x00009edfffff, RW_Data, DRAM * [# 247] 0x00009ee00000-0x00009effffff, RW_Data, DRAM * [# 248] 0x00009f000000-0x00009f1fffff, RW_Data, DRAM * [# 249] 0x00009f200000-0x00009f3fffff, RW_Data, DRAM * [# 250] 0x00009f400000-0x00009f5fffff, RW_Data, DRAM * [# 251] 0x00009f600000-0x00009f7fffff, RW_Data, DRAM * [# 252] 0x00009f800000-0x00009f9fffff, RW_Data, DRAM * [# 253] 0x00009fa00000-0x00009fbfffff, RW_Data, DRAM * [# 254] 0x00009fc00000-0x00009fdfffff, RW_Data, DRAM * [# 255] 0x00009fe00000-0x00009fffffff, RW_Data, DRAM * [# 256] 0x0000a0000000-0x0000a01fffff, RW_Data, DRAM * [# 257] 0x0000a0200000-0x0000a03fffff, RW_Data, DRAM * [# 258] 0x0000a0400000-0x0000a05fffff, RW_Data, DRAM * [# 259] 0x0000a0600000-0x0000a07fffff, RW_Data, DRAM * [# 260] 0x0000a0800000-0x0000a09fffff, RW_Data, DRAM * [# 261] 0x0000a0a00000-0x0000a0bfffff, RW_Data, DRAM * [# 262] 0x0000a0c00000-0x0000a0dfffff, RW_Data, DRAM * [# 263] 0x0000a0e00000-0x0000a0ffffff, RW_Data, DRAM * [# 264] 0x0000a1000000-0x0000a11fffff, RW_Data, DRAM * [# 265] 0x0000a1200000-0x0000a13fffff, RW_Data, DRAM * [# 266] 0x0000a1400000-0x0000a15fffff, RW_Data, DRAM * [# 267] 0x0000a1600000-0x0000a17fffff, RW_Data, DRAM * [# 268] 0x0000a1800000-0x0000a19fffff, RW_Data, DRAM * [# 269] 0x0000a1a00000-0x0000a1bfffff, RW_Data, DRAM * [# 270] 0x0000a1c00000-0x0000a1dfffff, RW_Data, DRAM * [# 271] 0x0000a1e00000-0x0000a1ffffff, RW_Data, DRAM * [# 272] 0x0000a2000000-0x0000a21fffff, RW_Data, DRAM * [# 273] 0x0000a2200000-0x0000a23fffff, RW_Data, DRAM * [# 274] 0x0000a2400000-0x0000a25fffff, RW_Data, DRAM * [# 275] 0x0000a2600000-0x0000a27fffff, RW_Data, DRAM * [# 276] 0x0000a2800000-0x0000a29fffff, RW_Data, DRAM * [# 277] 0x0000a2a00000-0x0000a2bfffff, RW_Data, DRAM * [# 278] 0x0000a2c00000-0x0000a2dfffff, RW_Data, DRAM * [# 279] 0x0000a2e00000-0x0000a2ffffff, RW_Data, DRAM * [# 280] 0x0000a3000000-0x0000a31fffff, RW_Data, DRAM * [# 281] 0x0000a3200000-0x0000a33fffff, RW_Data, DRAM * [# 282] 0x0000a3400000-0x0000a35fffff, RW_Data, DRAM * [# 283] 0x0000a3600000-0x0000a37fffff, RW_Data, DRAM * [# 284] 0x0000a3800000-0x0000a39fffff, RW_Data, DRAM * [# 285] 0x0000a3a00000-0x0000a3bfffff, RW_Data, DRAM * [# 286] 0x0000a3c00000-0x0000a3dfffff, RW_Data, DRAM * [# 287] 0x0000a3e00000-0x0000a3ffffff, RW_Data, DRAM * [# 288] 0x0000a4000000-0x0000a41fffff, RW_Data, DRAM * [# 289] 0x0000a4200000-0x0000a43fffff, RW_Data, DRAM * [# 290] 0x0000a4400000-0x0000a45fffff, RW_Data, DRAM * [# 291] 0x0000a4600000-0x0000a47fffff, RW_Data, DRAM * [# 292] 0x0000a4800000-0x0000a49fffff, RW_Data, DRAM * [# 293] 0x0000a4a00000-0x0000a4bfffff, RW_Data, DRAM * [# 294] 0x0000a4c00000-0x0000a4dfffff, RW_Data, DRAM * [# 295] 0x0000a4e00000-0x0000a4ffffff, RW_Data, DRAM * [# 296] 0x0000a5000000-0x0000a51fffff, RW_Data, DRAM * [# 297] 0x0000a5200000-0x0000a53fffff, RW_Data, DRAM * [# 298] 0x0000a5400000-0x0000a55fffff, RW_Data, DRAM * [# 299] 0x0000a5600000-0x0000a57fffff, RW_Data, DRAM * [# 300] 0x0000a5800000-0x0000a59fffff, RW_Data, DRAM * [# 301] 0x0000a5a00000-0x0000a5bfffff, RW_Data, DRAM * [# 302] 0x0000a5c00000-0x0000a5dfffff, RW_Data, DRAM * [# 303] 0x0000a5e00000-0x0000a5ffffff, RW_Data, DRAM * [# 304] 0x0000a6000000-0x0000a61fffff, RW_Data, DRAM * [# 305] 0x0000a6200000-0x0000a63fffff, RW_Data, DRAM * [# 306] 0x0000a6400000-0x0000a65fffff, RW_Data, DRAM * [# 307] 0x0000a6600000-0x0000a67fffff, RW_Data, DRAM * [# 308] 0x0000a6800000-0x0000a69fffff, RW_Data, DRAM * [# 309] 0x0000a6a00000-0x0000a6bfffff, RW_Data, DRAM * [# 310] 0x0000a6c00000-0x0000a6dfffff, RW_Data, DRAM * [# 311] 0x0000a6e00000-0x0000a6ffffff, RW_Data, DRAM * [# 312] 0x0000a7000000-0x0000a71fffff, RW_Data, DRAM * [# 313] 0x0000a7200000-0x0000a73fffff, RW_Data, DRAM * [# 314] 0x0000a7400000-0x0000a75fffff, RW_Data, DRAM * [# 315] 0x0000a7600000-0x0000a77fffff, RW_Data, DRAM * [# 316] 0x0000a7800000-0x0000a79fffff, RW_Data, DRAM * [# 317] 0x0000a7a00000-0x0000a7bfffff, RW_Data, DRAM * [# 318] 0x0000a7c00000-0x0000a7dfffff, RW_Data, DRAM * [# 319] 0x0000a7e00000-0x0000a7ffffff, RW_Data, DRAM * [# 320] 0x0000a8000000-0x0000a81fffff, RW_Data, DRAM * [# 321] 0x0000a8200000-0x0000a83fffff, RW_Data, DRAM * [# 322] 0x0000a8400000-0x0000a85fffff, RW_Data, DRAM * [# 323] 0x0000a8600000-0x0000a87fffff, RW_Data, DRAM * [# 324] 0x0000a8800000-0x0000a89fffff, RW_Data, DRAM * [# 325] 0x0000a8a00000-0x0000a8bfffff, RW_Data, DRAM * [# 326] 0x0000a8c00000-0x0000a8dfffff, RW_Data, DRAM * [# 327] 0x0000a8e00000-0x0000a8ffffff, RW_Data, DRAM * [# 328] 0x0000a9000000-0x0000a91fffff, RW_Data, DRAM * [# 329] 0x0000a9200000-0x0000a93fffff, RW_Data, DRAM * [# 330] 0x0000a9400000-0x0000a95fffff, RW_Data, DRAM * [# 331] 0x0000a9600000-0x0000a97fffff, RW_Data, DRAM * [# 332] 0x0000a9800000-0x0000a99fffff, RW_Data, DRAM * [# 333] 0x0000a9a00000-0x0000a9bfffff, RW_Data, DRAM * [# 334] 0x0000a9c00000-0x0000a9dfffff, RW_Data, DRAM * [# 335] 0x0000a9e00000-0x0000a9ffffff, RW_Data, DRAM * [# 336] 0x0000aa000000-0x0000aa1fffff, RW_Data, DRAM * [# 337] 0x0000aa200000-0x0000aa3fffff, RW_Data, DRAM * [# 338] 0x0000aa400000-0x0000aa5fffff, RW_Data, DRAM * [# 339] 0x0000aa600000-0x0000aa7fffff, RW_Data, DRAM * [# 340] 0x0000aa800000-0x0000aa9fffff, RW_Data, DRAM * [# 341] 0x0000aaa00000-0x0000aabfffff, RW_Data, DRAM * [# 342] 0x0000aac00000-0x0000aadfffff, RW_Data, DRAM * [# 343] 0x0000aae00000-0x0000aaffffff, RW_Data, DRAM * [# 344] 0x0000ab000000-0x0000ab1fffff, RW_Data, DRAM * [# 345] 0x0000ab200000-0x0000ab3fffff, RW_Data, DRAM * [# 346] 0x0000ab400000-0x0000ab5fffff, RW_Data, DRAM * [# 347] 0x0000ab600000-0x0000ab7fffff, RW_Data, DRAM * [# 348] 0x0000ab800000-0x0000ab9fffff, RW_Data, DRAM * [# 349] 0x0000aba00000-0x0000abbfffff, RW_Data, DRAM * [# 350] 0x0000abc00000-0x0000abdfffff, RW_Data, DRAM * [# 351] 0x0000abe00000-0x0000abffffff, RW_Data, DRAM * [# 352] 0x0000ac000000-0x0000ac1fffff, RW_Data, DRAM * [# 353] 0x0000ac200000-0x0000ac3fffff, RW_Data, DRAM * [# 354] 0x0000ac400000-0x0000ac5fffff, RW_Data, DRAM * [# 355] 0x0000ac600000-0x0000ac7fffff, RW_Data, DRAM * [# 356] 0x0000ac800000-0x0000ac9fffff, RW_Data, DRAM * [# 357] 0x0000aca00000-0x0000acbfffff, RW_Data, DRAM * [# 358] 0x0000acc00000-0x0000acdfffff, RW_Data, DRAM * [# 359] 0x0000ace00000-0x0000acffffff, RW_Data, DRAM * [# 360] 0x0000ad000000-0x0000ad1fffff, RW_Data, DRAM * [# 361] 0x0000ad200000-0x0000ad3fffff, RW_Data, DRAM * [# 362] 0x0000ad400000-0x0000ad5fffff, RW_Data, DRAM * [# 363] 0x0000ad600000-0x0000ad7fffff, RW_Data, DRAM * [# 364] 0x0000ad800000-0x0000ad9fffff, RW_Data, DRAM * [# 365] 0x0000ada00000-0x0000adbfffff, RW_Data, DRAM * [# 366] 0x0000adc00000-0x0000addfffff, RW_Data, DRAM * [# 367] 0x0000ade00000-0x0000adffffff, RW_Data, DRAM * [# 368] 0x0000ae000000-0x0000ae1fffff, RW_Data, DRAM * [# 369] 0x0000ae200000-0x0000ae3fffff, RW_Data, DRAM * [# 370] 0x0000ae400000-0x0000ae5fffff, RW_Data, DRAM * [# 371] 0x0000ae600000-0x0000ae7fffff, RW_Data, DRAM * [# 372] 0x0000ae800000-0x0000ae9fffff, RW_Data, DRAM * [# 373] 0x0000aea00000-0x0000aebfffff, RW_Data, DRAM * [# 374] 0x0000aec00000-0x0000aedfffff, RW_Data, DRAM * [# 375] 0x0000aee00000-0x0000aeffffff, RW_Data, DRAM * [# 376] 0x0000af000000-0x0000af1fffff, RW_Data, DRAM * [# 377] 0x0000af200000-0x0000af3fffff, RW_Data, DRAM * [# 378] 0x0000af400000-0x0000af5fffff, RW_Data, DRAM * [# 379] 0x0000af600000-0x0000af7fffff, RW_Data, DRAM * [# 380] 0x0000af800000-0x0000af9fffff, RW_Data, DRAM * [# 381] 0x0000afa00000-0x0000afbfffff, RW_Data, DRAM * [# 382] 0x0000afc00000-0x0000afdfffff, RW_Data, DRAM * [# 383] 0x0000afe00000-0x0000afffffff, RW_Data, DRAM * [# 384] 0x0000b0000000-0x0000b01fffff, RW_Data, DRAM * [# 385] 0x0000b0200000-0x0000b03fffff, RW_Data, DRAM * [# 386] 0x0000b0400000-0x0000b05fffff, RW_Data, DRAM * [# 387] 0x0000b0600000-0x0000b07fffff, RW_Data, DRAM * [# 388] 0x0000b0800000-0x0000b09fffff, RW_Data, DRAM * [# 389] 0x0000b0a00000-0x0000b0bfffff, RW_Data, DRAM * [# 390] 0x0000b0c00000-0x0000b0dfffff, RW_Data, DRAM * [# 391] 0x0000b0e00000-0x0000b0ffffff, RW_Data, DRAM * [# 392] 0x0000b1000000-0x0000b11fffff, RW_Data, DRAM * [# 393] 0x0000b1200000-0x0000b13fffff, RW_Data, DRAM * [# 394] 0x0000b1400000-0x0000b15fffff, RW_Data, DRAM * [# 395] 0x0000b1600000-0x0000b17fffff, RW_Data, DRAM * [# 396] 0x0000b1800000-0x0000b19fffff, RW_Data, DRAM * [# 397] 0x0000b1a00000-0x0000b1bfffff, RW_Data, DRAM * [# 398] 0x0000b1c00000-0x0000b1dfffff, RW_Data, DRAM * [# 399] 0x0000b1e00000-0x0000b1ffffff, RW_Data, DRAM * [# 400] 0x0000b2000000-0x0000b21fffff, RW_Data, DRAM * [# 401] 0x0000b2200000-0x0000b23fffff, RW_Data, DRAM * [# 402] 0x0000b2400000-0x0000b25fffff, RW_Data, DRAM * [# 403] 0x0000b2600000-0x0000b27fffff, RW_Data, DRAM * [# 404] 0x0000b2800000-0x0000b29fffff, RW_Data, DRAM * [# 405] 0x0000b2a00000-0x0000b2bfffff, RW_Data, DRAM * [# 406] 0x0000b2c00000-0x0000b2dfffff, RW_Data, DRAM * [# 407] 0x0000b2e00000-0x0000b2ffffff, RW_Data, DRAM * [# 408] 0x0000b3000000-0x0000b31fffff, RW_Data, DRAM * [# 409] 0x0000b3200000-0x0000b33fffff, RW_Data, DRAM * [# 410] 0x0000b3400000-0x0000b35fffff, RW_Data, DRAM * [# 411] 0x0000b3600000-0x0000b37fffff, RW_Data, DRAM * [# 412] 0x0000b3800000-0x0000b39fffff, RW_Data, DRAM * [# 413] 0x0000b3a00000-0x0000b3bfffff, RW_Data, DRAM * [# 414] 0x0000b3c00000-0x0000b3dfffff, RW_Data, DRAM * [# 415] 0x0000b3e00000-0x0000b3ffffff, RW_Data, DRAM * [# 416] 0x0000b4000000-0x0000b41fffff, RW_Data, DRAM * [# 417] 0x0000b4200000-0x0000b43fffff, RW_Data, DRAM * [# 418] 0x0000b4400000-0x0000b45fffff, RW_Data, DRAM * [# 419] 0x0000b4600000-0x0000b47fffff, RW_Data, DRAM * [# 420] 0x0000b4800000-0x0000b49fffff, RW_Data, DRAM * [# 421] 0x0000b4a00000-0x0000b4bfffff, RW_Data, DRAM * [# 422] 0x0000b4c00000-0x0000b4dfffff, RW_Data, DRAM * [# 423] 0x0000b4e00000-0x0000b4ffffff, RW_Data, DRAM * [# 424] 0x0000b5000000-0x0000b51fffff, RW_Data, DRAM * [# 425] 0x0000b5200000-0x0000b53fffff, RW_Data, DRAM * [# 426] 0x0000b5400000-0x0000b55fffff, RW_Data, DRAM * [# 427] 0x0000b5600000-0x0000b57fffff, RW_Data, DRAM * [# 428] 0x0000b5800000-0x0000b59fffff, RW_Data, DRAM * [# 429] 0x0000b5a00000-0x0000b5bfffff, RW_Data, DRAM * [# 430] 0x0000b5c00000-0x0000b5dfffff, RW_Data, DRAM * [# 431] 0x0000b5e00000-0x0000b5ffffff, RW_Data, DRAM * [# 432] 0x0000b6000000-0x0000b61fffff, RW_Data, DRAM * [# 433] 0x0000b6200000-0x0000b63fffff, RW_Data, DRAM * [# 434] 0x0000b6400000-0x0000b65fffff, RW_Data, DRAM * [# 435] 0x0000b6600000-0x0000b67fffff, RW_Data, DRAM * [# 436] 0x0000b6800000-0x0000b69fffff, RW_Data, DRAM * [# 437] 0x0000b6a00000-0x0000b6bfffff, RW_Data, DRAM * [# 438] 0x0000b6c00000-0x0000b6dfffff, RW_Data, DRAM * [# 439] 0x0000b6e00000-0x0000b6ffffff, RW_Data, DRAM * [# 440] 0x0000b7000000-0x0000b71fffff, RW_Data, DRAM * [# 441] 0x0000b7200000-0x0000b73fffff, RW_Data, DRAM * [# 442] 0x0000b7400000-0x0000b75fffff, RW_Data, DRAM * [# 443] 0x0000b7600000-0x0000b77fffff, RW_Data, DRAM * [# 444] 0x0000b7800000-0x0000b79fffff, RW_Data, DRAM * [# 445] 0x0000b7a00000-0x0000b7bfffff, RW_Data, DRAM * [# 446] 0x0000b7c00000-0x0000b7dfffff, RW_Data, DRAM * [# 447] 0x0000b7e00000-0x0000b7ffffff, RW_Data, DRAM * [# 448] 0x0000b8000000-0x0000b81fffff, RW_Data, DRAM * [# 449] 0x0000b8200000-0x0000b83fffff, RW_Data, DRAM * [# 450] 0x0000b8400000-0x0000b85fffff, RW_Data, DRAM * [# 451] 0x0000b8600000-0x0000b87fffff, RW_Data, DRAM * [# 452] 0x0000b8800000-0x0000b89fffff, RW_Data, DRAM * [# 453] 0x0000b8a00000-0x0000b8bfffff, RW_Data, DRAM * [# 454] 0x0000b8c00000-0x0000b8dfffff, RW_Data, DRAM * [# 455] 0x0000b8e00000-0x0000b8ffffff, RW_Data, DRAM * [# 456] 0x0000b9000000-0x0000b91fffff, RW_Data, DRAM * [# 457] 0x0000b9200000-0x0000b93fffff, RW_Data, DRAM * [# 458] 0x0000b9400000-0x0000b95fffff, RW_Data, DRAM * [# 459] 0x0000b9600000-0x0000b97fffff, RW_Data, DRAM * [# 460] 0x0000b9800000-0x0000b99fffff, RW_Data, DRAM * [# 461] 0x0000b9a00000-0x0000b9bfffff, RW_Data, DRAM * [# 462] 0x0000b9c00000-0x0000b9dfffff, RW_Data, DRAM * [# 463] 0x0000b9e00000-0x0000b9ffffff, RW_Data, DRAM * [# 464] 0x0000ba000000-0x0000ba1fffff, RW_Data, DRAM * [# 465] 0x0000ba200000-0x0000ba3fffff, RW_Data, DRAM * [# 466] 0x0000ba400000-0x0000ba5fffff, RW_Data, DRAM * [# 467] 0x0000ba600000-0x0000ba7fffff, RW_Data, DRAM * [# 468] 0x0000ba800000-0x0000ba9fffff, RW_Data, DRAM * [# 469] 0x0000baa00000-0x0000babfffff, RW_Data, DRAM * [# 470] 0x0000bac00000-0x0000badfffff, RW_Data, DRAM * [# 471] 0x0000bae00000-0x0000baffffff, RW_Data, DRAM * [# 472] 0x0000bb000000-0x0000bb1fffff, RW_Data, DRAM * [# 473] 0x0000bb200000-0x0000bb3fffff, RW_Data, DRAM * [# 474] 0x0000bb400000-0x0000bb5fffff, RW_Data, DRAM * [# 475] 0x0000bb600000-0x0000bb7fffff, RW_Data, DRAM * [# 476] 0x0000bb800000-0x0000bb9fffff, RW_Data, DRAM * [# 477] 0x0000bba00000-0x0000bbbfffff, RW_Data, DRAM * [# 478] 0x0000bbc00000-0x0000bbdfffff, RW_Data, DRAM * [# 479] 0x0000bbe00000-0x0000bbffffff, RW_Data, DRAM * [# 480] 0x0000bc000000-0x0000bc1fffff, RW_Data, DRAM * [# 481] 0x0000bc200000-0x0000bc3fffff, RW_Data, DRAM * [# 482] 0x0000bc400000-0x0000bc5fffff, RW_Data, DRAM * [# 483] 0x0000bc600000-0x0000bc7fffff, RW_Data, DRAM * [# 484] 0x0000bc800000-0x0000bc9fffff, RW_Data, DRAM * [# 485] 0x0000bca00000-0x0000bcbfffff, RW_Data, DRAM * [# 486] 0x0000bcc00000-0x0000bcdfffff, RW_Data, DRAM * [# 487] 0x0000bce00000-0x0000bcffffff, RW_Data, DRAM * [# 488] 0x0000bd000000-0x0000bd1fffff, RW_Data, DRAM * [# 489] 0x0000bd200000-0x0000bd3fffff, RW_Data, DRAM * [# 490] 0x0000bd400000-0x0000bd5fffff, RW_Data, DRAM * [# 491] 0x0000bd600000-0x0000bd7fffff, RW_Data, DRAM * [# 492] 0x0000bd800000-0x0000bd9fffff, RW_Data, DRAM * [# 493] 0x0000bda00000-0x0000bdbfffff, RW_Data, DRAM * [# 494] 0x0000bdc00000-0x0000bddfffff, RW_Data, DRAM * [# 495] 0x0000bde00000-0x0000bdffffff, RW_Data, DRAM * [# 496] 0x0000be000000-0x0000be1fffff, RW_Data, DRAM * [# 497] 0x0000be200000-0x0000be3fffff, RW_Data, DRAM * [# 498] 0x0000be400000-0x0000be5fffff, RW_Data, DRAM * [# 499] 0x0000be600000-0x0000be7fffff, RW_Data, DRAM * [# 500] 0x0000be800000-0x0000be9fffff, RW_Data, DRAM * [# 501] 0x0000bea00000-0x0000bebfffff, RW_Data, DRAM * [# 502] 0x0000bec00000-0x0000bedfffff, RW_Data, DRAM * [# 503] 0x0000bee00000-0x0000beffffff, RW_Data, DRAM * [# 504] 0x0000bf000000-0x0000bf1fffff, RW_Data, DRAM * [# 505] 0x0000bf200000-0x0000bf3fffff, RW_Data, DRAM * [# 506] 0x0000bf400000-0x0000bf5fffff, RW_Data, DRAM * [# 507] 0x0000bf600000-0x0000bf7fffff, RW_Data, DRAM * [# 508] 0x0000bf800000-0x0000bf9fffff, RW_Data, DRAM * [# 509] 0x0000bfa00000-0x0000bfbfffff, RW_Data, DRAM * [# 510] 0x0000bfc00000-0x0000bfdfffff, RW_Data, DRAM * [# 511] 0x0000bfe00000-0x0000bfffffff, RW_Data, DRAM * [# 3] 0x0000c0000000-0x0000ffffffff, RW_Data, DRAM * * The following command line arguments were passed to arm64-pgtable-tool: * * -i examples/dram.txt * -ttb 0x80000000 * -el 3 * -tg 4K * -tsz 32 * * This memory map requires a total of 5 translation tables. * Each table occupies 4K of memory (0x1000 bytes). * The buffer pointed to by 0x80000000 must therefore be 5x 4K = 0x5000 bytes long. * It is the programmer's responsibility to guarantee this. * * The programmer must also ensure that the virtual memory region containing the * translation tables is itself marked as NORMAL in the memory map file. */ .section .data.mmu .balign 2 mmu_lock: .4byte 0 // lock to ensure only 1 CPU runs init #define LOCKED 1 mmu_init: .4byte 0 // whether init has been run #define INITIALISED 1 .section .text.mmu_on .balign 2 .global mmu_on .type mmu_on, @function mmu_on: ADRP x0, mmu_lock // get 4KB page containing mmu_lock ADD x0, x0, :lo12:mmu_lock // restore low 12 bits lost by ADRP MOV w1, #LOCKED SEVL // first pass won't sleep 1: WFE // sleep on retry LDAXR w2, [x0] // read mmu_lock CBNZ w2, 1b // not available, go back to sleep STXR w3, w1, [x0] // try to acquire mmu_lock CBNZ w3, 1b // failed, go back to sleep check_already_initialised: ADRP x1, mmu_init // get 4KB page containing mmu_init ADD x1, x1, :lo12:mmu_init // restore low 12 bits lost by ADRP LDR w2, [x1] // read mmu_init CBNZ w2, end // init already done, skip to the end zero_out_tables: LDR x2, =0x80000000 // address of first table LDR x3, =0x5000 // combined length of all tables LSR x3, x3, #5 // number of required STP instructions FMOV d0, xzr // clear q0 1: STP q0, q0, [x2], #32 // zero out 4 table entries at a time SUBS x3, x3, #1 B.NE 1b load_descriptor_templates: LDR x2, =0x40000000000705 // Device block LDR x3, =0x40000000000707 // Device page LDR x4, =0x40000000000701 // RW data block LDR x5, =0x40000000000703 // RW data page LDR x20, =0x781 // code block LDR x21, =0x783 // code page program_table_0: LDR x8, =0x80000000 // base address of this table LDR x9, =0x40000000 // chunk size program_table_0_entry_1: LDR x10, =1 // idx LDR x11, =0x80001000 // next-level table address ORR x11, x11, #0x3 // next-level table descriptor STR x11, [x8, x10, lsl #3] // write entry into table program_table_0_entry_2: LDR x10, =2 // idx LDR x11, =0x80003000 // next-level table address ORR x11, x11, #0x3 // next-level table descriptor STR x11, [x8, x10, lsl #3] // write entry into table program_table_0_entry_3: LDR x10, =3 // idx LDR x11, =1 // number of contiguous entries LDR x12, =0xc0000000 // output address of entry[idx] 1: ORR x12, x12, x4 // merge output address with template STR X12, [x8, x10, lsl #3] // write entry into table ADD x10, x10, #1 // prepare for next entry idx+1 ADD x12, x12, x9 // add chunk to address SUBS x11, x11, #1 // loop as required B.NE 1b program_table_1: LDR x8, =0x80001000 // base address of this table LDR x9, =0x200000 // chunk size program_table_1_entry_0: LDR x10, =0 // idx LDR x11, =0x80002000 // next-level table address ORR x11, x11, #0x3 // next-level table descriptor STR x11, [x8, x10, lsl #3] // write entry into table program_table_2: LDR x8, =0x80002000 // base address of this table LDR x9, =0x1000 // chunk size program_table_2_entry_256_to_354: LDR x10, =256 // idx LDR x11, =99 // number of contiguous entries LDR x12, =0x40100000 // output address of entry[idx] 1: ORR x12, x12, x21 // merge output address with template STR X12, [x8, x10, lsl #3] // write entry into table ADD x10, x10, #1 // prepare for next entry idx+1 ADD x12, x12, x9 // add chunk to address SUBS x11, x11, #1 // loop as required B.NE 1b program_table_3: LDR x8, =0x80003000 // base address of this table LDR x9, =0x200000 // chunk size program_table_3_entry_128_to_511: LDR x10, =128 // idx LDR x11, =384 // number of contiguous entries LDR x12, =0x90000000 // output address of entry[idx] 1: ORR x12, x12, x4 // merge output address with template STR X12, [x8, x10, lsl #3] // write entry into table ADD x10, x10, #1 // prepare for next entry idx+1 ADD x12, x12, x9 // add chunk to address SUBS x11, x11, #1 // loop as required B.NE 1b program_table_4: LDR x8, =0x80004000 // base address of this table LDR x9, =0x200000 // chunk size program_table_4_entry_0_to_127: LDR x10, =0 // idx LDR x11, =128 // number of contiguous entries LDR x12, =0xc0000000 // output address of entry[idx] 1: ORR x12, x12, x4 // merge output address with template STR X12, [x8, x10, lsl #3] // write entry into table ADD x10, x10, #1 // prepare for next entry idx+1 ADD x12, x12, x9 // add chunk to address SUBS x11, x11, #1 // loop as required B.NE 1b init_done: MOV w2, #INITIALISED STR w2, [x1] end: LDR x1, =0x80000000 // program ttbr0 on this CPU MSR ttbr0_el3, x1 LDR x1, =0xff // program mair on this CPU MSR mair_el3, x1 LDR x1, =0x80803520 // program tcr on this CPU MSR tcr_el3, x1 ISB MRS x2, tcr_el3 // verify CPU supports desired config CMP x2, x1 B.NE . LDR x1, =0x1005 // program sctlr on this CPU MSR sctlr_el3, x1 ISB // synchronize context on this CPU STLR wzr, [x0] // release mmu_lock RET // done!
All exception classes except the Instruction Abort are architecturally defined in the ARM Architecture Reference Manual ARMv8. The SError Interrupt exception classes are architecturally defined in the ARM Generic Interrupt Controller Architecture Specification, GICv3 with the exception of four bits.
myloweslife.com
And how is this related to the OP's question?