STM32L0 chips use loader_code_stm32lx, but this flash loader is built
for armv7-m and uses instructions that are unsupported on STM32L0 (which
have Cortex M0+ cores implementing armv6-m).
In particular, loader_code_stm32lx uses variants of add-immediate that
do not update the condition flags ( `add r0, r0, #4` ). These are 32bit
instructions in armv7-m and are not available in armv6-m.
Enable loader_code_stm32lx to run on both armv6-m and armv7-m by
building for armv6-m, which requires changing the `add` instructions to
`adds` instructions that do update condition flags (which is ok because
the subs updates the condition flags again before the branch).
All the loaders returns remaining work count in r2, except stm32l0/1.
Make these loaders behaving as the others to simplify run_flash_loader() code.
Signed-off-by: Maxime Coquelin <mcoquelin.stm32@gmail.com>
This patch invert source and destination registers in the stm32l0 and stm32l1
loaders, so that it follows the same ABI as other stm32 loaders.
Doing that, the run_flash_loader() function can be simplified a little.
Signed-off-by: Maxime Coquelin <mcoquelin.stm32@gmail.com>
The indentation of various st-link source files is highly inconsistent.
Reindent all source files to 4 space indentions for consistency.
I went with 4 space indentations, as it was the most common style.