[PATCH u-boot v4 20/36] ARM: global_data: make set_gd() work for armv5 and armv6
Marek Behún
marek.behun at nic.cz
Thu May 20 13:24:09 CEST 2021
The Thumb instruction `ldr` is able to move high registers only from
armv7. For armv5 and armv6 we have to use `mov`.
Signed-off-by: Marek Behún <marek.behun at nic.cz>
---
arch/arm/include/asm/global_data.h | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/arch/arm/include/asm/global_data.h b/arch/arm/include/asm/global_data.h
index fba655f3b9..bb82efafa6 100644
--- a/arch/arm/include/asm/global_data.h
+++ b/arch/arm/include/asm/global_data.h
@@ -122,8 +122,10 @@ static inline void set_gd(volatile gd_t *gd_ptr)
{
#ifdef CONFIG_ARM64
__asm__ volatile("ldr x18, %0\n" : : "m"(gd_ptr));
-#else
+#elif __ARM_ARCH >= 7
__asm__ volatile("ldr r9, %0\n" : : "m"(gd_ptr));
+#else
+ __asm__ volatile("mov r9, %0\n" : : "r"(gd_ptr));
#endif
}
--
2.26.3
More information about the U-Boot
mailing list