From 5e9de2cae26a5e82ec1c345a32d7d8d8223526d3 Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Thu, 31 Dec 2020 12:27:24 +0000 Subject: [PATCH] ARM: efistub: replace adrl pseudo-op with adr_l macro invocation mainline inclusion from mainline-5.11-rc1 commit 67e3f828bd4bf5e4eb4214dc4eb227d8f1c8a877 category: bugfix bugzilla: 46882 CVE: NA ------------------------------------------------- The ARM 'adrl' pseudo instruction is a bit problematic, as it does not exist in Thumb mode, and it is not implemented by Clang either. Since the Thumb variant has a slightly bigger range, it is sometimes necessary to emit the 'adrl' variant in ARM mode where Thumb mode can use adr just fine. However, that still leaves the Clang issue, which does not appear to be supporting this any time soon. So let's switch to the adr_l macro, which works for both ARM and Thumb, and has unlimited range. Reviewed-by: Nicolas Pitre Signed-off-by: Ard Biesheuvel (cherry picked from commit 67e3f828bd4bf5e4eb4214dc4eb227d8f1c8a877) Signed-off-by: Zhao Hongjiang Acked-by: Xie XiuQi --- arch/arm/boot/compressed/head.S | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 3a392983ac07..6ac91e05e2ae 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -1440,8 +1440,7 @@ ENTRY(efi_enter_kernel) mov r4, r0 @ preserve image base mov r8, r1 @ preserve DT pointer - ARM( adrl r0, call_cache_fn ) - THUMB( adr r0, call_cache_fn ) + adr_l r0, call_cache_fn adr r1, 0f @ clean the region of code we bl cache_clean_flush @ may run with the MMU off -- GitLab