diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2013-11-05 12:33:59 +0100 |
---|---|---|
committer | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2013-11-05 12:33:59 +0100 |
commit | 3ad50f5d874eccd4aeaac95c9d6ac3b05739363e (patch) | |
tree | 045d457dd864929cba3c56d68fd4f7634439839b | |
parent | 02f53cc56943bc2aafdd191c8d0a47b36004c702 (diff) | |
download | OSELAS.BSP-EnergyMicro-Gecko-3ad50f5d874eccd4aeaac95c9d6ac3b05739363e.tar.gz OSELAS.BSP-EnergyMicro-Gecko-3ad50f5d874eccd4aeaac95c9d6ac3b05739363e.tar.xz |
OSELAS.BSP-EnergyMicro-Gecko: geckoboot: fix logic for conditional output
printch corrupts the flags in APSR, so that register must be preserved on
the stack.
-rw-r--r-- | local_src/geckoboot-2013.01.0/geckoboot.S | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/local_src/geckoboot-2013.01.0/geckoboot.S b/local_src/geckoboot-2013.01.0/geckoboot.S index 6146b9f..3e7ae76 100644 --- a/local_src/geckoboot-2013.01.0/geckoboot.S +++ b/local_src/geckoboot-2013.01.0/geckoboot.S @@ -69,10 +69,12 @@ printch: b 1b .macro putc, val, cond=al - push\cond {r0-r3} - mov\cond r0, \val + push {r0-r4} + mrs r4, APSR /* save cond flags */ + mov r0, \val bl\cond printch - pop\cond {r0-r3} + msr APSR_nzcvq, r4 /* restore cond flags */ + pop {r0-r4} .endm reset: |