summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2013-11-05 12:33:59 +0100
committerUwe Kleine-König <u.kleine-koenig@pengutronix.de>2013-11-05 12:33:59 +0100
commit3ad50f5d874eccd4aeaac95c9d6ac3b05739363e (patch)
tree045d457dd864929cba3c56d68fd4f7634439839b
parent02f53cc56943bc2aafdd191c8d0a47b36004c702 (diff)
downloadOSELAS.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.S8
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: