Memory layout: Difference between revisions
Line 142: | Line 142: | ||
| Bootrom, the main region is at +0x8000, which is disabled during system boot. | | Bootrom, the main region is at +0x8000, which is disabled during system boot. | ||
|} | |} | ||
==NATIVE_FIRM ARM9 kernel MPU regions== | |||
{| class="wikitable" border="1" | |||
|- | |||
! Region | |||
! Address | |||
! Size | |||
! Privileged-mode data permissions | |||
! User-mode data permissions | |||
! Privileged-mode instruction permissions | |||
! User-mode instruction permissions | |||
|- | |||
| 0 | |||
| 0xFFFF0000 | |||
| 32KB/0x8000 | |||
| RO | |||
| None | |||
| RO | |||
| None | |||
|- | |||
| 1 | |||
| 0x01FF8000 | |||
| 32KB/0x8000 | |||
| RW | |||
| RW | |||
| RO | |||
| RO | |||
|- | |||
| 2 | |||
| 0x08000000 | |||
| 1MB/0x100000. >=[[8.0.0-18|8.0.0-X]]: 2MB/0x200000. | |||
| RW | |||
| RW | |||
| RO | |||
| RO | |||
|- | |||
| 3 | |||
| 0x10000000 | |||
| 128KB/0x20000 | |||
| RW | |||
| RW | |||
| None | |||
| None | |||
|- | |||
| 4 | |||
| 0x10100000 | |||
| 512KB/0x80000 | |||
| RW | |||
| RW | |||
| None | |||
| None | |||
|- | |||
| 5 | |||
| 0x20000000 | |||
| 128MB/0x8000000. >=[[8.0.0-18|8.0.0-X]]: 256MB/0x10000000. | |||
| RW | |||
| RW | |||
| None | |||
| None | |||
|- | |||
| 6 | |||
| 0x08000000 | |||
| 128KB/0x20000 | |||
| RW | |||
| None | |||
| RO | |||
| None | |||
|- | |||
| 7 | |||
| 0x08020000 | |||
| <[[3.0.0-5]]: 64KB/0x10000. >=[[3.0.0-5]]: 32KB/0x8000. | |||
| RW | |||
| None | |||
| RO | |||
| None | |||
|} | |||
The above is the MPU region settings setup by the ARM9-kernel in the crt0. | |||
Instruction permissions RO = memory is executable, while None = not-executable. | |||
The New3DS ARM9-kernel MPU region settings are the same as the Old3DS MPU region settings for >=[[8.0.0-18|8.0.0-X]]. | |||
==ARM9 ITCM== | ==ARM9 ITCM== |