NPDM: Difference between revisions

Line 152: Line 152:


= Kernel Access Control =
= Kernel Access Control =
Like the 3DS, the switch has a number of kernel capability descriptors. Unlike 3ds, where descriptors were identified by pattern 11..10 in high bits, on switch descriptors are identified by pattern 01..11 in low bits.
On Switch, descriptors are identified by pattern 01..11 in low bits.


{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Pattern of bits 20-31
! Pattern of bits 15-0
! Type
! Type
! Fields
! Fields
|-
|-
| <code>0bxxxxxxxx0111?</code>
| <code>0bxxxxxxxxxxxx0111</code>
| Interrupt info?
| Kernel flags
| ?
| ?
|-
|-
| <code>0bxxxxxxx01111</code>
| <code>0bxxxxxxxxxxx01111</code>
| System call mask
| Syscall mask
| Bits 29-31: System call mask table index; Bits 5-28: mask
| Bits 29-31: Syscall mask table index; Bits 5-28: mask
|-
|-
| <code>0bxxxxx0111111?</code>
| <code>0bxxxxxxxxx0111111</code>
| Kernel release version?
| Map IO page
| ?
| Bits 7-31: page
|-
| <code>0bxxxx01111111?</code>
| Handle table size?
| ?
|-
|-
| <code>0bxxx011111111?</code>
| <code>0bxxxxxxxx01111111</code>
| Kernel flags?
| Map IO range
| ?
| Bits 7-31: page then size alternating
|-
|-
| <code>0bx0111111111?</code>
| <code>0bxxxxx11111111111</code>
| Map address range?
| Interrupt pair
| ?
| Bits 12-21: irq0, bits 20-31: irq1, 0x3FF means empty. 
|-
| <code>0b011111111111?</code>
| Map memory page?
| ?
|}
|}