Changes

Jump to navigation Jump to search
65 bytes added ,  02:08, 15 November 2016
no edit summary
Line 282: Line 282:  
|-
 
|-
 
| 0x0
 
| 0x0
| u32
+
| InterruptEvent *
| Pointer to interrupt data object for interrupt number
+
| Pointer to the InterruptEvent object for that interrupt  
 
|-
 
|-
 
| 0x4
 
| 0x4
 
| u8
 
| u8
| Interrupt is pending
+
| Interrupt will be masked by the IRQ handler as soon as it is acknowledged
 
|-
 
|-
 
| 0x5
 
| 0x5
 
| u8
 
| u8
| Interrupt is enabled, about to execute
+
| Interrupt is masked
 
|-
 
|-
 
| 0x6
 
| 0x6
Line 301: Line 301:  
| Unused, alignment
 
| Unused, alignment
 
|}
 
|}
  −
The interrupt data pointer is a pointer to the object that handles that interrupt.  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.
      
= Interrupt Table (New3DS) =
 
= Interrupt Table (New3DS) =
Line 313: Line 311:  
|-
 
|-
 
| 0x0
 
| 0x0
| InterruptEvent[224]
+
| InterruptData[224]
| Table of interrupt event objects for all hardware and software interrupts
+
| Data for all hardware and software interrupts
 
|-
 
|-
 
| 0x700
 
| 0x700
Line 331: Line 329:     
= InterruptEvent =
 
= InterruptEvent =
{| class="wikitable" border="1"
+
 
|-
+
Base class for interrupt events.
!  Offset
+
 
!  Type
+
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).
!  Description
+
 
|-
+
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.
| 0x0
  −
| u32
  −
| Pointer to interrupt event object  
  −
|-
  −
| 0x4
  −
| u32
  −
| Interrupt flags
  −
|}
 

Navigation menu