[libunwind][ARM] Add support for Thumb1 targets
The Thumb1 version of the code for saving and restoring the unwind
context has a few bugs which prevent it from working:
- It uses the STM instruction without writeback, which is not valid for Thumb1 (It was introduced in Thumb2).
- It only saves/restores the low 8 registers, the sp and the lr, so if a program uses r8-r12 they will not be correctly restored when throwing an exception.
There aren't currently any Thumb1 build-bots to test this, but we have
been successfully running the libc++abi and libc++ test suites on
Cortex-M0 models, as well as some other test suites that use C++
exceptions on a downstream version of libunwind with this patch applied.
originally, r0-r7 get loaded from [r0]
now, r8-r12 get loaded from [r0+0x20]
is that expected?