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?
| |
− | | ?
| |
| |} | | |} |