This stuff isn't limited to IO, but is also e.g. used to map VRAM
Line 494:
Line 494:
|-
|-
| <code>0b11111111100x</code>
| <code>0b11111111100x</code>
−
| Map IO address range
+
| Map address range
−
| Bits 0-19: index of the first IO page to map; Bit 20: Map read-only (otherwise read-write). Another 0b11111111100x must follow this one to denote the (exclusive) end of the IO range to map.
+
| 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.
|-
|-
| <code>0b111111111110</code>
| <code>0b111111111110</code>
−
| Map single IO page
+
| Map memory page
−
| Bits 0-19: IO page index to map; Bit 20: Map read-only (otherwise read-write)
+
| Bits 0-19: page index to map (virtual address >> 12; the physical address is determined by subtracting 0x0EB00000); Bit 20: Map read-only (otherwise read-write)