Skip to content

Interrupts and Exceptions

Cupertino Miranda edited this page Nov 18, 2020 · 1 revision

Interrupts and exception support

All the exceptions are handled by CPU in a similar way, and it is fully supported.

Status exceptions

Exception Idx Exception Observations
0 RESET Not supported.
1 MEMORY_ERROR See MMU/MPU
2 INST_ERROR Generated by decoder, MMU, MPU, SR, LR.
3 MACHINE_CHECK Fully supported
4 TLB_MISS_I See MMU/MPU
5 TLB_MISS_D See MMU/MPU
6 PROTV See MMU/MPU
7 PRIVILEGEV See MMU/MPU
8 SWI Fully supported
9 TRAP Fully supported
10 EXTENSION Not supported
11 DIVZERO Not supported
12 DCERROR Not supported
13 MALIGNED See MMU/MPU

Exceptions/Interrupts related auxiliary registers

AUX register Observations
IRQ_PRIORITY Fully supported
AUX_IRQ_ACT Fully supported
AUX_IRQ_HINT Fully supported
IRQ_PENDING Fully supported
AUX_IRQ_CTRL.NR No support for RF16 configuration.
AUX_IRQ_CTRL.B Fully supported
AUX_IRQ_CTRL.L Fully supported
AUX_IRQ_CTRL.U Fully supported
AUX_IRQ_CTRL.LP Dummy support
AUX_USER_SP Fully supported
ICAUSE Fully supported
IRQ_SELECT Fully supported
IRQ_ENABLE Fully supported
IRQ_TRIGGER Dummy register.
IRQ_PULSE_CANCEL Implemented, not tested
IRQ_STATUS Fully supported
INT_VECTOR_BASE Fully supported

Exceptions/Interrupts related build configuration register(s)

AUX register Observations QEMU properties
IRQ_BUILD.VERSION Always set to 1
IRQ_BUILD.IRQS Fully supported --global cpu.num-irq=XXX
IRQ_BUILD.EXTS Fully supported --global cpu.ext-irq=XXX
IRQ_BUILD.P Fully supported --global cpu.num-irqlevels=XXX
IRQ_BUILD.F Fully supported --global cpu.firq=true/false
IRQ_BUILD.N Not supported
VECBASE_AC_BUILD Fully supported --global cpu.intv-base=XXXX