This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Generic Timer IRQ Handling

According to https://developer.arm.com/documentation/102379/0101/The-processor-timers?lang=en

"

The interrupts generated by the timer behave in a level-sensitive manner. This means that, once the timer firing condition is reached, the timer will continue to signal an interrupt until one of the following situations occurs:

  • IMASK is set to one, which masks the interrupt.
  • ENABLE is cleared to 0, which disables the timer.
  • TVAL or CVAL is written, so that firing condition is no longer met.

When writing an interrupt handler for the timers, it is important that software clears the interrupt before deactivating the interrupt in the GIC. Otherwise the GIC will re-signal the same interrupt again.
"

Does it mean we need a synchronization barrier (e.g. isb()) between two points:

P1. TVAL gets updated. The firing confition is no longer met.

-> ISB()

P2. ICC_EOIR, ICC_DIR


Or ISB() is not enough and we need something else there?

Thanks in advance