To branch between Thumb and ARM code, you need to use special instructions that set or clear the least significant bit of the PC, such as BX, BLX, or TBB. Interrupt handlers and exception vectors ...
This must be be called only after an interrupt has already been acknowledged via plat_ic_acknowledge_interrupt. In the case of Arm standard platforms using GIC, the Running Priority Register is read ...
The behavior of a local interrupt controller as well as a local timer is documented in BCM2836 ARM-local peripherals manual. I already mentioned local timer several times. Now you probably wonder why ...