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

Why the Link register in FIQ mode will be instruction address plus 4 in thumb mode instead of instruction address plus 2?

I am going through the Cortex R5 technical reference manual (version: r1p2). And according to the manual the

  • LR_SVC will have IA + 4 in ARM mode and IA+2 in Thumb mode, which I can understand since the size of instructions in Thumb is 2bytes.
  • So I was expecting the same behavior for IRQ mode also. But it states that LR_IRQ will have IA + 4 in both ARM and Thumb modes. Can any one explain me why is this the case with IRQ mode?

I would appreciate if you could also explain me why the LR_DABT will have IA + 8 in ARM/Thumb.

  • From my understanding I am guessing that DABT will happen in load-store unit, and the PC in data processing unit would be IA + 8. (also this sits good in ARM mode, I was not able to understand why it is IA + 8 in thumb mode). Please correct me if I am wrong.

You can refer the below table for LR values in other mode.