Memory layout: Difference between revisions
Line 146: | Line 146: | ||
For the below instruction permissions: RO = memory is executable, while None = not-executable. | For the below instruction permissions: RO = memory is executable, while None = not-executable. | ||
===NATIVE_FIRM ARM9 kernel=== | ===NATIVE_FIRM/SAFE_MODE_FIRM ARM9 kernel=== | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 273: | Line 273: | ||
MPU regions 4-7 are disabled. Note that the entire ARM9-loader runs in SVC-mode. | MPU regions 4-7 are disabled. Note that the entire ARM9-loader runs in SVC-mode. | ||
===TWL_FIRM/AGB_FIRM ARM9 kernel=== | |||
{| 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. New3DS: 2MB/0x200000. | |||
| RW | |||
| RW | |||
| RO | |||
| RO | |||
|- | |||
| 3 | |||
| 0x10000000 | |||
| 2MB/0x200000. | |||
| RW | |||
| RW | |||
| None | |||
| None | |||
|- | |||
| 4 | |||
| 0x1FF00000 | |||
| 512KB/0x80000 | |||
| RW | |||
| RW | |||
| None | |||
| None | |||
|- | |||
| 5 | |||
| 0x20000000 | |||
| 128MB/0x8000000. New3DS: 256MB/0x10000000. | |||
| RW | |||
| RW | |||
| None | |||
| None | |||
|- | |||
| 6 | |||
| 0x08000000 | |||
| 256KB/0x40000. New3DS: 128KB/0x20000 | |||
| RW | |||
| None | |||
| RO | |||
| None | |||
|- | |||
| 7 | |||
| 0x08080000 | |||
| 128KB/0x20000 | |||
| RW | |||
| RW | |||
| RO | |||
| RO | |||
|} | |||
==ARM9 ITCM== | ==ARM9 ITCM== |