Hi,
I'm somewhat new to ARM architecture and have some esoteric questions. I've done C/C++ programming on ARM for decades, but mostly on Linux or some RTOS, so haven't had to deal with some of the more obscure stuff.
The immediate question I have is on the CPSR. According to some documentation, when an FIQ handler is entered, the I (IRQ) bit is set (to mask out IRQs). But, I'm seeing the F (FIQ) bit still clear. This seems to indicate that FIQs could still happen (stacked interrupt), but I'm pretty sure the FIQ stacking is not happening. Can someone clarify this behavior to me?
The code I have is:
uint32 _mask_IRQ_FIQ()
{
__asm("\tmrs r0, CPSR");
__asm("\tand r0, r0, #0xc0");
__asm("\tlsr r0, r0, #6");
}
In FIQ handler (notification handler)...
uint32 intmask = _mask_IRQ_FIQ();
and intmask is 0x2.
Thanks.

