Hi Julien, > On 12 Aug 2022, at 20:24, Julien Grall <jul...@xen.org> wrote: > > From: Julien Grall <jgr...@amazon.com> > > At the moment, the strings are in text right after each use because > the instruction 'adr' has specific requirement on the location > and the compiler will forbid cross section label. > > The macro 'adr_l' was recently reworked so the caller doesn't need > to know whether the MMU is on. This makes it easier to use where > instructions can be run in both context. > > This also means that the strings don't need to be part of .text > anymore. So move them to .rodata.str. > > Signed-off-by: Julien Grall <jgr...@amazon.com> Reviewed-by: Bertrand Marquis <bertrand.marq...@arm.com>
Tested by enabling early printk on qemu arm32 and it works so: Tested-by: Bertrand Marquis <bertrand.marq...@arm.com> Cheers Bertrand > --- > xen/arch/arm/arm32/head.S | 12 ++++-------- > 1 file changed, 4 insertions(+), 8 deletions(-) > > diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S > index 27d02ac8d68f..a558c2a6876e 100644 > --- a/xen/arch/arm/arm32/head.S > +++ b/xen/arch/arm/arm32/head.S > @@ -93,13 +93,10 @@ > */ > #define PRINT(_s) \ > mov r3, lr ;\ > - adr r0, 98f ;\ > + adr_l r0, 98f ;\ > bl puts ;\ > mov lr, r3 ;\ > - b 99f ;\ > -98: .asciz _s ;\ > - .align 2 ;\ > -99: > + RODATA_STR(98, _s) > > /* > * Macro to print the value of register \rb > @@ -736,7 +733,7 @@ ENDPROC(puts) > * Clobbers r0-r3 > */ > putn: > - adr r1, hex > + adr_l r1, hex > mov r3, #8 > 1: > early_uart_ready r11, r2 > @@ -749,8 +746,7 @@ putn: > mov pc, lr > ENDPROC(putn) > > -hex: .ascii "0123456789abcdef" > - .align 2 > +RODATA_STR(hex, "0123456789abcdef") > > #else /* CONFIG_EARLY_PRINTK */ > > -- > 2.37.1 >