summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-mvebu
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2021-07-30 09:00:01 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2021-08-09 20:35:28 +0200
commit06210f61118848528080d8102e3d1952d50e72db (patch)
tree75fb746c9011e17f87a6e7bc5e8755cc8f0e6438 /arch/arm/mach-mvebu
parent679659452759811b040c15d3b1d989de21f18ab0 (diff)
downloadbarebox-06210f61118848528080d8102e3d1952d50e72db.tar.gz
barebox-06210f61118848528080d8102e3d1952d50e72db.tar.xz
arm/mvebu: sync barebox-arm-head.h to generic variant
En passant this adds support for PBL_BREAK. While there is no 64 bit support available for mvebu, keeping the difference between arch/arm/mach-mvebu/include/mach/barebox-arm-head.h and arch/arm/include/asm/barebox-arm-head.h minimal is a good thing. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Link: https://lore.barebox.org/20210730070001.1441742-1-u.kleine-koenig@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-mvebu')
-rw-r--r--arch/arm/mach-mvebu/include/mach/barebox-arm-head.h25
1 files changed, 24 insertions, 1 deletions
diff --git a/arch/arm/mach-mvebu/include/mach/barebox-arm-head.h b/arch/arm/mach-mvebu/include/mach/barebox-arm-head.h
index 3035f40ddf..723e2ab4c8 100644
--- a/arch/arm/mach-mvebu/include/mach/barebox-arm-head.h
+++ b/arch/arm/mach-mvebu/include/mach/barebox-arm-head.h
@@ -4,6 +4,7 @@
static inline void __barebox_arm_head(void)
{
__asm__ __volatile__ (
+#ifdef CONFIG_CPU_32
#ifdef CONFIG_THUMB2_BAREBOX
".arm\n"
"adr r9, 1f + 1\n"
@@ -24,10 +25,22 @@ static inline void __barebox_arm_head(void)
"1: b 1b\n"
"1: b 1b\n"
#endif
+#else
+ "b 2f\n"
+ "nop\n"
+ "nop\n"
+ "nop\n"
+ "nop\n"
+ "nop\n"
+#endif
".asciz \"barebox\"\n"
+#ifdef CONFIG_CPU_32
".word _text\n" /* text base. If copied there,
* barebox can skip relocation
*/
+#else
+ ".word 0xffffffff\n"
+#endif
".word _barebox_image_size\n" /* image size to copy */
/*
@@ -42,9 +55,19 @@ static inline void __barebox_arm_head(void)
".word 0x55555555\n"
".endr\n"
"2:\n"
+#ifdef CONFIG_PBL_BREAK
+#ifdef CONFIG_CPU_V8
+ "brk #17\n"
+#else
+ "bkpt #17\n"
+#endif
+ "nop\n"
+#else
+ "nop\n"
+ "nop\n"
+#endif
);
}
-
static inline void barebox_arm_head(void)
{
__barebox_arm_head();