Interrupt

ARM Interrupt Structure

https://www.geeksforgeeks.org/arm-interrupt-structure/

GIC

https://wiki.osdev.org/Generic_Interrupt_Controller_versions_3_and_4

Interrupt Types

Interrupt Trigger Types

Link to original

Exception Levels

Exception Levels

Exception Levels

  • EL3
    • Highest privilege level is typically used for so called Secure Monitor
    • EL3 firmware typically implements the Power State Coordination Interface (PSCI) for the lower ELs to use
    • EL3 firmware typically involved into trusted boot
  • EL2
    • Targets the virtualization use-case
    • EL at which hypervisors normally use for virtualization purposes.
  • EL1
    • Privileged parts of the OS kernels use
  • EL0
    • Most unprivileged level
    • Runs most unprivileged codes (userspace application, userspace drivers, etc).

Reference

Link to original

Exception Handling

https://developer.arm.com/documentation/dui0471/m/handling-processor-exceptions/exception-handling-process https://developer.arm.com/documentation/100933/0100/Exception-handling https://developer.arm.com/documentation/den0024/a/AArch64-Exception-Handling/Interrupt-handling

Exception Vector

Exception Vector Table

AArch64 Exception Vector Table

ARMv7 Exception Vector Table

OffsetVectorMode
0x00ResetSupervisor
0x04Undefined InstructionUndefined
0x08Supervisor CallSupervisor
0x0CPrefetch AbortAbort
0x10Data AbortAbort
0x14Not UsedNA
0x18IRQ InterruptIRQ
0x1CFIQ InterruptFIQ

ARMv8 Exception Vector Table

AddressException TypeDescription
VBAR_ELn +0x000SynchronousCurrent EL with SP0
+0x080IRQ/vIRQ^
+0x100FIQ/vFIQ^
+0x180SError/vSError^
+0x200SynchronousCurrent EL with SPx
+0x280IRQ/vIRQ^
+0x300FIQ/vFIQ^
+0x380SError/vSError^
+0x400SynchronousLower EL using AArch64
+0x480IRQ/vIRQ^
+0x500FIQ/vFIQ^
+0x580SError/vSError^
+0x600SynchronousLower EL using AArch32
+0x680IRQ/vIRQ^
+0x700FIQ/vFIQ^
+0x780SError/vSError^
Link to original

Reference

4 items under this folder.