ARMCC: ARM7/9 and Cortex-R4 Interrupt Routines
Information in this knowledgebase article applies to:
After updating to MDK V5.16 and rebuilding a project using an ARM7, ARM9 or Cortex-R4-based CPU, the C/C++ interrupt routines no longer work properly.
In the compiler libraries shipped with MDK V5.16 (ARMCC V5.06, Build 20), the __irq keyword does not always preserve corruptible registers.
In previous versions, functions using the __irq keyword would preserve registers by pushing them onto the stack before entering the exception. ARM7, ARM9 and ARM Cortex-R4 based MCUs do this pushing of registers onto the stack in libraries. Cortex-M based devices do this pushing automatically, so those devices are not affected by the change in __irq behavior.
Until an update to MDK 5.16 is available, please use the following procedure to select the ARMCC V5.05, Update 2, Build 169 released with MDK V5.15:
This will be corrected in MDK V5.16a
Request the files attached to this knowledgebase article.
Last Reviewed: Friday, October 13, 2017
of your data.