ARM11 Interrupts: Difference between revisions
No edit summary |
No edit summary |
||
Line 282: | Line 282: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | InterruptEvent * | ||
| Pointer to | | Pointer to the InterruptEvent object for that interrupt | ||
|- | |- | ||
| 0x4 | | 0x4 | ||
| u8 | | u8 | ||
| Interrupt is | | Interrupt will be masked by the IRQ handler as soon as it is acknowledged | ||
|- | |- | ||
| 0x5 | | 0x5 | ||
| u8 | | u8 | ||
| Interrupt is | | Interrupt is masked | ||
|- | |- | ||
| 0x6 | | 0x6 | ||
Line 301: | Line 301: | ||
| Unused, alignment | | Unused, alignment | ||
|} | |} | ||
= Interrupt Table (New3DS) = | = Interrupt Table (New3DS) = | ||
Line 313: | Line 311: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | InterruptData[224] | ||
| | | Data for all hardware and software interrupts | ||
|- | |- | ||
| 0x700 | | 0x700 | ||
Line 331: | Line 329: | ||
= InterruptEvent = | = InterruptEvent = | ||
Base class for interrupt events. | |||
The kernel uses the [[KInterruptEvent|KInterruptEvent]] field of a [[KEvent|KEvent]] when binding public interrupts per svcBindInterrupt request, whereas it internally uses a static object of another subclass to bind interrupt 0x0F (FIQ abstraction). | |||
| | The first first word in the object is a pointer to the object's vtable and the first function in the vtable is the interrupt handler for that interrupt number. When an interrupt runs, the function is passed its object in r0 and the interrupt number in r1. | ||
| | |||