This patch implements the final bits of CMSE code generation:
- emit special linker symbols
- restrict parameter passing to no use memory
- emit BXNS and BLXNS instructions for returns from non-secure entry functions, and non-secure function calls, respectively
- emit code to save/restore secure floating-point state around calls to non-secure functions
- emit code to save/restore non-secure floating-pointy state upon entry to non-secure entry function, and return to non-secure state
- emit code to clobber registers not used for arguments and returns when switching to no-secure state
Patch by Momchil Velikov, Bradley Smith, Javed Absar, David Green, possibly others.