[PATCH 2/2] ARM: cpu: setupc: implement 32-bit relocate_to_adr_full

Ahmad Fatoum a.fatoum at barebox.org
Mon Jan 12 00:56:40 PST 2026


To move barebox out of QEMU's NOR flash and into RAM, implement
relocate_to_adr_full(), like we already do for ARM64.

Signed-off-by: Ahmad Fatoum <a.fatoum at barebox.org>
---
The series adding support for ARM Qemu Virt -bios will make use of this,
but this is already useful for other boards, so sending it out now.
---
 arch/arm/cpu/setupc_32.S | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/arch/arm/cpu/setupc_32.S b/arch/arm/cpu/setupc_32.S
index d3449d9646b9..0134637f6296 100644
--- a/arch/arm/cpu/setupc_32.S
+++ b/arch/arm/cpu/setupc_32.S
@@ -43,12 +43,21 @@ ENDPROC(setup_c)
  * executing at new address.
  */
 .section .text.relocate_to_adr
+#ifdef __PBL__
+ENTRY(relocate_to_adr_full)
+	ldr	r2, =__image_end
+	b	1f
+#endif
+
 ENTRY(relocate_to_adr)
-					/* r0: target address */
+	ldr	r2, =__bss_start
+	b	1f
+
+1:
 	push	{r3, r4, r5, r6, r7, r8}
 	mov	r7, lr
 
-	mov	r6, r0
+	mov	r6, r0			/* r0: target address */
 
 	bl	get_runtime_offset
 
@@ -61,8 +70,6 @@ ENTRY(relocate_to_adr)
 	cmp	r1, r6			/* already at correct address? */
 	beq	1f			/* yes, skip copy to new address */
 
-	ldr	r2, =__bss_start
-
 	sub	r2, r2, r8		/* r2: size */
 	mov	r0, r6			/* r0: target */
 
-- 
2.47.3




More information about the barebox mailing list