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

Weird interrupt behaviour on Cortex-A8

Note: This was originally posted on 4th April 2012 at http://forums.arm.com

My current configuration is as follows:
Cortex A8 with TrustZone enabled. I have both secure and normal world running. Monitor mode is setup and is working neatly. All exception tables are in place.
FIQs are configured to be trapped in the monitor mode (Bit 2 in Secure Configuration Register - c1, c1, 0, 0 in cp15)

Both IRQ and FIQ are enabled in secure as well as normal world. All interrupts are IRQs except a timer interrupt. Expectation is that, periodically the timer will trigger and trap into the monitor mode.

Now, when I am in the secure world, this works fine. The timer triggers, the hardware is trapped into the monitor mode and the FIQ vector is executed. However, if I am executing in the normal world, the timer interrupt *never* occurs. I haven't done any special setting in the normal world and I don't reckon its required. My expectation was that, irrespective of which world is being executed, the control will go into the monitor mode.

Is my understanding wrong? Shouldn't the hardware trap me into monitor mode from the normal world if the timer interrupt occurs with the above described settings?

Thanks,
Jitesh
Parents
  • Note: This was originally posted on 5th April 2012 at http://forums.arm.com

    Your understandings looks correct. first check the normal world has not masked FIQ interrupts There is a CP15 option to block it doing this if needed.
    I'd check that the interrupt is arriving at the monitor mode, and then that the interrupt is being correctly forwarded to the secure world. Interrupt handler.
Reply
  • Note: This was originally posted on 5th April 2012 at http://forums.arm.com

    Your understandings looks correct. first check the normal world has not masked FIQ interrupts There is a CP15 option to block it doing this if needed.
    I'd check that the interrupt is arriving at the monitor mode, and then that the interrupt is being correctly forwarded to the secure world. Interrupt handler.
Children
No data