The following topics describe how to change between ARM state and Thumb state when writing code for processors that implement the ARM and Thumb instruction sets:
About interworking
When to use interworking
Assembly language interworking
C and C++ interworking
Pointers to functions in Thumb state
Using two versions of the same function
Assembly language interworking example
Interworking using veneers
C and C++ language interworking
C, C++, and assembly language interworking using veneers.
These topics do not apply to ARMv6-M and ARMv7-M.