SPRUIE9D May 2017 – May 2024 DRA74P , DRA75P , DRA76P , DRA77P
The ARP32 CPU supports various types of interrupts that include: reset, a non-maskable interrupt (NMI), 12 maskable interrupts (INT15-INT4), an undefined instruction interrupt (UNDEF), and a software interrupt (SWI). The following registers control the CPU behavior on receipt of an interrupt:
The SWI and UNDEF interrupts are special cases that do not have an associated input pin. The SWI interrupt mechanism is activated by decoding of the SWI instruction. The UNDEF interrupt is activated by detection of an undefined instruction.
On acknowledge of an enabled interrupt, the ARP32 CPU loads the contents of the interrupt service table entry associated with the interrupt into the PC.
Each interrupt type is discussed in the following sections; Table 8-342 summarizes the ARP32 CPU interrupts.
Interrupt Name | Vector Address (byte) | Input Pin | Enable Control | Interrupt Return Pointer Register | Interrupt Return Instruction to be Used | Context Save and Restore Actions | |
---|---|---|---|---|---|---|---|
By Hardware | By Software | ||||||
Reset | 00h | cpu_reset_i | Always Enabled | NA | NA | NA | NA |
NMI | 04h | cpu_nmi_i | IER:NMIE | NRP | BNRP | CSR to NMISCSR | R0-R7 to Stack, LSAn to Stack, LEAn to Stack, LCNTn to Stack |
SWI | 08h | None | Always Enabled | IRP | BIRP | CSR to SCSR, R0-R7 to SR0-SR7, LSAn to SLSAn, LEAn to SLEAn, LCNTn to SLCNTn | None |
UNDEF | 0Ch | None | Always Enabled | IRP | BIRP | CSR to SCSR, R0-R7 to SR0-SR7, LSAn to SLSAn, LEAn to SLEAn, LCNTn to SLCNTn | None |
INT4 | 10h | cpu_int4_i | CSR:GIE; IER:NMIE; IER:IE4 | IRP | BIRP | CSR to SCSR, R0-R7 to SR0-SR7, LSAn to SLSAn, LEAn to SLEAn, LCNTn to SLCNTn | None |
INT5 | 14h | cpu_int5_i | CSR:GIE; IER:NMIE; IER:IE5 | IRP | BIRP | CSR to SCSR, R0-R7 to SR0-SR7, LSAn to SLSAn, LEAn to SLEAn, LCNTn to SLCNTn | None |
INT6 | 18h | cpu_int6_i | CSR:GIE; IER:NMIE; IER:IE6 | IRP | BIRP | CSR to SCSR, R0-R7 to SR0-SR7, LSAn to SLSAn, LEAn to SLEAn, LCNTn to SLCNTn | None |
INT7 | 1Ch | cpu_int7_i | CSR:GIE; IER:NMIE; IER:IE7 | IRP | BIRP | CSR to SCSR, R0-R7 to SR0-SR7, LSAn to SLSAn, LEAn to SLEAn, LCNTn to SLCNTn | None |
INT8 | 20h | cpu_int8_i | CSR:GIE; IER:NMIE; IER:IE8 | IRP | BIRP | CSR to SCSR, R0-R7 to SR0-SR7, LSAn to SLSAn, LEAn to SLEAn, LCNTn to SLCNTn | None |
INT9 | 24h | cpu_int9_i | CSR:GIE; IER:NMIE; IER:IE9 | IRP | BIRP | CSR to SCSR, R0-R7 to SR0-SR7, LSAn to SLSAn, LEAn to SLEAn, LCNTn to SLCNTn | None |
INT10 | 28h | cpu_int10_i | CSR:GIE; IER:NMIE; IER:IE10 | IRP | BIRP | CSR to SCSR, R0-R7 to SR0-SR7, LSAn to SLSAn, LEAn to SLEAn, LCNTn to SLCNTn | None |
INT11 | 2Ch | cpu_int11_i | CSR:GIE; IER:NMIE; IER:IE11 | IRP | BIRP | CSR to SCSR, R0-R7 to SR0-SR7, LSAn to SLSAn, LEAn to SLEAn, LCNTn to SLCNTn | None |
INT12 | 30h | cpu_int12_i | CSR:GIE; IER:NMIE; IER:IE12 | IRP | BIRP | CSR to SCSR, R0-R7 to SR0-SR7, LSAn to SLSAn, LEAn to SLEAn, LCNTn to SLCNTn | None |
INT13 | 34h | cpu_int13_i | CSR:GIE; IER:NMIE; IER:IE13 | IRP | BIRP | CSR to SCSR, R0-R7 to SR0-SR7, LSAn to SLSAn, LEAn to SLEAn, LCNTn to SLCNTn | None |
INT14 | 38h | cpu_int14_i | CSR:GIE; IER:NMIE; IER:IE14 | IRP | BIRP | CSR to SCSR, R0-R7 to SR0-SR7, LSAn to SLSAn, LEAn to SLEAn, LCNTn to SLCNTn | None |
INT15 | 3Ch | cpu_int15_i | CSR:GIE; IER:NMIE; IER:IE15 | IRP | BIRP | CSR to SCSR, R0-R7 to SR0-SR7, LSAn to SLSAn, LEAn to SLEAn, LCNTn to SLCNTn | None |