I am booting up a custom kernel on QEMU ARM64, upon completion of its
initial boot up it looks like it enters the arch_idle() state

I enabled the -d int logging to understand what is going on, I see the
following repeated many times continuosly here after

Taking exception 5 [IRQ]
...from EL1 to EL1
...with ESR 0x15/0x56000000
...with ELR 0xffffffff0000349c
...to EL1 PC 0xffffffff00008280 PSTATE 0x3c5

Here's the dissassembly for the relevant piece of code:

 ffffffff00003498 <arch_idle>:
 arch_idle():
 ../../kernel/arch/arm64/arch.cpp:182
 ffffffff00003498:       d503207f        wfi
 ffffffff0000349c:       d65f03c0        ret

I am trying to understand what exceptions are occurring exactly when kernel
is idle (timer?). According to above ELR is pointing to arch_idle(), but I
believe "wfi" instruction would not be an IRQ but a sync abort which is
handle differently right?

Also from ESR, it looks like a SVC instruction but if I am not wrong for
IRQs ESRs are not updated (considered)

One more thing, is there a way in QEMU I could find out what exception 5 is
corresponding to?

Reply via email to