User guide

If LDR, LDM, or POP load to the pc, they set the Thumb bit in the CPSR to bit[0] of the value loaded to the pc.
You can use this to change instruction sets. This is particularly useful for returning from subroutines. The same
return instruction can return to either an ARM or Thumb caller.
For more information, see Assembler Guide
and ARM Architecture Reference Manual.
3.2.5 Labels in Thumb code
The linker distinguishes between labels referring to:
ARM instructions
Thumb instructions
data.
When the linker relocates a value of a label referring to a Thumb instruction, it sets the least significant bit of the
relocated value. This means that a branch to a label can automatically select the appropriate instruction set. This
works if any of the following instructions are used for the branch:
BX in ARM architecture v4T
BX, BLX, or LDR in architecture v5T and above.
In previous releases of ADS and SDT, it was necessary to mark data in Thumb code with the DATA directive. This is
no longer necessary.
Interworking ARM and Thumb
Copyright ?1999 2001 ARM Limited 3-5