Line 9:
Line 9:
All values are little endian unless otherwise specified.
All values are little endian unless otherwise specified.
β
See also: [https://github.com/profi200/Project_CTR/blob/master/ctrtool/exheader.h]
+
See also: [https://github.com/3DSGuy/Project_CTR/blob/20f708450b9c6e7f64eafa6c2a8eeb25a630c69a/ctrtool/exheader.h]
{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 494:
Line 494:
|-
|-
| <code>0b11111111100x</code>
| <code>0b11111111100x</code>
β
| Map address range
+
| Map IO/static address range
β
| Describes a memory mapping like the 0b111111111110 descriptor, but an entire range rather than a single page is mapped. Usually, another 0b11111111100x descriptor follows this one to denote the (exclusive) end of the address range to map, but it has been observed that sometimes the range is not explicitly closed, which presumably indicates a single-page mapping.
+
| Describes a memory mapping like the 0b111111111110 descriptor, but an entire range rather than a single page is mapped. Another 0b11111111100x descriptor must follow this one to denote the (exclusive) end of the address range to map. Bit20 on the first descriptor: map read-only (otherwise RW), bit20 on the second descriptor: map static (cacheable, otherwise IO if the bit is not set)
|-
|-
| <code>0b111111111110</code>
| <code>0b111111111110</code>
β
| Map memory page
+
| Map IO memory page
| Bits 0-19: page index to map (virtual address >> 12; the physical address is determined per-page according to [[Memory layout]]); Bit 20: Map read-only (otherwise read-write)
| Bits 0-19: page index to map (virtual address >> 12; the physical address is determined per-page according to [[Memory layout]]); Bit 20: Map read-only (otherwise read-write)
|}
|}