summaryrefslogtreecommitdiffstats
path: root/arch/arm/include/asm/barebox-arm-head.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/include/asm/barebox-arm-head.h')
-rw-r--r--arch/arm/include/asm/barebox-arm-head.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/include/asm/barebox-arm-head.h b/arch/arm/include/asm/barebox-arm-head.h
index fdbee8cdda..0dc3074a27 100644
--- a/arch/arm/include/asm/barebox-arm-head.h
+++ b/arch/arm/include/asm/barebox-arm-head.h
@@ -4,6 +4,17 @@
static inline void barebox_arm_head(void)
{
__asm__ __volatile__ (
+#ifdef CONFIG_THUMB2_BAREBOX
+ ".arm\n"
+ "adr r9, 1f + 1\n"
+ "bx r9\n"
+ ".thumb\n"
+ "1:\n"
+ "bl reset\n"
+ ".rept 10\n"
+ "1: b 1b\n"
+ ".endr\n"
+#else
"b reset\n"
"1: b 1b\n"
"1: b 1b\n"
@@ -12,6 +23,7 @@ static inline void barebox_arm_head(void)
"1: b 1b\n"
"1: b 1b\n"
"1: b 1b\n"
+#endif
".word 0x65726162\n" /* 'bare' */
".word 0x00786f62\n" /* 'box' */
".word _text\n" /* text base. If copied there,