Line 106:
Line 106:
| P3D
| P3D
|-
|-
β
| 0x30
+
| 0x30-0x38
| Kernel
| Kernel
β
| ?
+
| Old CDMA Event 0..8 (9 separate IRQ lines)
|-
|-
| 0x39
| 0x39
| Kernel
| Kernel
β
| DMA
+
| Old CDMA Faulting (eg. CCR=0, or event>15)
|-
|-
| 0x3A
| 0x3A
| Kernel
| Kernel
β
| DMA
+
| New CDMA Event 0..31 (shared IRQ line)
|-
|-
| 0x3B
| 0x3B
| Kernel
| Kernel
β
| DMA
+
| New CDMA Faulting (eg. CCR=0)
|-
|-
| 0x40
| 0x40
Line 128:
Line 128:
| 0x41
| 0x41
| nwm
| nwm
β
| ?
+
| WIFI SDIO Controller IRQ pin @ 0x10122000
|-
|-
| 0x42
| 0x42
| nwm_dev?
| nwm_dev?
β
| WIFI SDIO Controller @ 0x10100000
+
| Debug WIFI SDIO Controller @ 0x10100000 ?
+
|-
+
| 0x43
+
| nwm_dev?
+
| Debug WIFI SDIO Controller @ 0x10100000 ?
+
|-
+
| 0x44
+
| ?
+
| NTRCARD (maybe?)
|-
|-
| 0x45
| 0x45
| mvd (New3DS)
| mvd (New3DS)
β
| ?
+
| L2B_0 (First RGB-to-RGBA Converter)
|-
|-
| 0x46
| 0x46
| mvd (New3DS)
| mvd (New3DS)
β
| ?
+
| L2B_1 (Second RGB-to-RGBA Converter)
|-
|-
| 0x48
| 0x48
| camera
| camera
β
| ?
+
| Camera Bus 0 (DSi cameras)
|-
|-
| 0x49
| 0x49
| camera
| camera
β
| ?
+
| Camera Bus 1 (left-eye)
|-
|-
| 0x4A
| 0x4A
Line 160:
Line 168:
| 0x4C
| 0x4C
| TwlBg
| TwlBg
β
| ?
+
| LGYFB_0 Legacy GBA/NDS Video
|-
|-
| 0x4D
| 0x4D
| TwlBg
| TwlBg
β
| ?
+
| LGYFB_1 Legacy GBA/NDS Video
|-
|-
| 0x4E
| 0x4E
Line 172:
Line 180:
| 0x4F
| 0x4F
| mvd (New3DS)
| mvd (New3DS)
β
| Related to mvd services
+
| MVD general interrupt?
|-
|-
| 0x50
| 0x50
| pxi, TwlBg
| pxi, TwlBg
β
| Sync
+
| Sync (bit 29 from Arm9's PXI_SYNC)
|-
|-
| 0x51
| 0x51
| pxi, TwlBg
| pxi, TwlBg
β
| ?
+
| Sync 2 (bit 30 from Arm9's PXI_SYNC)
|-
|-
| 0x52
| 0x52
Line 208:
Line 216:
| 0x58
| 0x58
| Kernel
| Kernel
β
| PDN
+
| PDN Wake Event
|-
|-
| 0x59
| 0x59
| TwlBg
| TwlBg
β
| ?
+
| PDN "switch to legacy mode" done (?)
|-
|-
| 0x5A
| 0x5A
| mic
| mic
β
| ?
+
| General microphone interrupt (?)
|-
|-
| 0x5C
| 0x5C
| i2c, TwlBg
| i2c, TwlBg
| I2C Bus2 work done
| I2C Bus2 work done
+
|-
+
| 0x5F
+
| mp
+
| DS WiFi registers
|-
|-
| 0x60
| 0x60
Line 232:
Line 244:
| 0x63
| 0x63
| gpio, TwlBg
| gpio, TwlBg
β
| Touchscreen
+
| Touchscreen Pen Down
|-
|-
| 0x64
| 0x64
Line 240:
Line 252:
| 0x66
| 0x66
| gpio, TwlBg
| gpio, TwlBg
β
| ?
+
| GPIO_DATA1.bit1 (sfio = ?)
|-
|-
| 0x68
| 0x68
| gpio, TwlBg
| gpio, TwlBg
β
| IR
+
| C-stick Interrupt
|-
|-
| 0x69
| 0x69
| gpio, TwlBg
| gpio, TwlBg
β
| ?
+
| IrDA Interrupt
|-
|-
| 0x6A
| 0x6A
| gpio, TwlBg
| gpio, TwlBg
β
| ?
+
| Gyro Interrupt
|-
|-
| 0x6B
| 0x6B
| gpio, TwlBg
| gpio, TwlBg
β
| ?
+
| GPIO_DATA3.bit3 (sfio = ?)
|-
|-
| 0x6C
| 0x6C
| gpio, TwlBg
| gpio, TwlBg
β
| ?
+
| GPIO_DATA3.bit4 (sfio = ?)
|-
|-
| 0x6D
| 0x6D
| gpio, TwlBg
| gpio, TwlBg
β
| ?
+
| GPIO_DATA3.bit5 (sfio = ?)
|-
|-
| 0x6E
| 0x6E
| gpio, TwlBg
| gpio, TwlBg
β
| ?
+
| GPIO_DATA3.bit6 (sfio = ?)
|-
|-
| 0x6F
| 0x6F
| gpio, TwlBg
| gpio, TwlBg
β
| ?
+
| GPIO_DATA3.bit7 (sfio = ?)
|-
|-
| 0x70
| 0x70
| gpio, TwlBg
| gpio, TwlBg
β
| ?
+
| GPIO_DATA3.bit8 (sfio = ?)
|-
|-
| 0x71
| 0x71
| gpio, TwlBg
| gpio, TwlBg
β
| MCU (HOME/POWER pressed/released or WiFi switch pressed)
+
| MCU (HOME/POWER pressed/released or WiFi switch pressed, etc.)
|-
|-
| 0x72
| 0x72
| gpio, TwlBg
| gpio, TwlBg
β
| ?
+
| NFC
|-
|-
| 0x73
| 0x73
| TwlBg
| TwlBg
β
| ?
+
| GPIO_DATA3.bit11 (sfio = ?)
|-
|-
| 0x74
| 0x74
Line 297:
Line 309:
| ?
| ?
| Gamecard inserted
| Gamecard inserted
+
|-
+
| 0x76
+
| -
+
| L2C
|-
|-
| 0x78 to 0x7B
| 0x78 to 0x7B
Line 305:
Line 321:
0x7C to 0x84 (bit2 clear)
0x7C to 0x84 (bit2 clear)
| Kernel
| Kernel
β
| ?
+
| Other PMU interrupts (line may not exist at all)
|}
|}
(interrupts from 0x80 and up can't be mapped in available builds of the kernel)
(interrupts from 0x80 and up can't be mapped in available builds of the kernel)
β
There are 2 tables in the ARM11 kernel: the first has 32 * 2(or 32 * 4) 8-byte entries. This table is for the private interrupts that belong to each core. The data for each interrupt can be found by doing table_base + (core_num * 0x100) + (intr_num * 8). The second table is for public hardware interrupts and the data for each interrupt can be retrieved by doing table_base + (intr_num * 8).
+
There are 2 tables in the ARM11 kernel: the first has 32 * 2(or 32 * 4) 8-byte entries. This table is for the private interrupts that belong to each core. The data for each interrupt can be found by doing table_base + (core_num * 0x100) + (intr_num * 8). The second table is for public hardware interrupts and the data for each interrupt can be retrieved by doing table_base + (intr_num * 8).
= InterruptData =
= InterruptData =