|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 21/35] xen/arm32: head: Don't clobber r14/lr in the macro PRINT
On Mon, 22 Jul 2019, Julien Grall wrote:
> The current implementation of the macro PRINT will clobber r14/lr. This
> means the user should save r14 if it cares about it.
>
> Follow-up patches will introduce more use of PRINT in places where lr
> should be preserved. Rather than requiring all the user to preserve lr,
> the macro PRINT is modified to save and restore it.
>
> While the comment state r3 will be clobbered, this is not the case. So
> PRINT will use r3 to preserve lr.
>
> Lastly, take the opportunity to move the comment on top of PRINT and use
> PRINT in init_uart. Both changes will be helpful in a follow-up patch.
>
> Signed-off-by: Julien Grall <julien.grall@xxxxxxx>
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> ---
> Changes in v2:
> - Patch added
> ---
> xen/arch/arm/arm32/head.S | 27 +++++++++++++++------------
> 1 file changed, 15 insertions(+), 12 deletions(-)
>
> diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S
> index 8b4c8a4714..b54331c19d 100644
> --- a/xen/arch/arm/arm32/head.S
> +++ b/xen/arch/arm/arm32/head.S
> @@ -64,15 +64,20 @@
> * r14 - LR
> * r15 - PC
> */
> -/* Macro to print a string to the UART, if there is one.
> - * Clobbers r0-r3. */
> #ifdef CONFIG_EARLY_PRINTK
> -#define PRINT(_s) \
> - adr r0, 98f ; \
> - bl puts ; \
> - b 99f ; \
> -98: .asciz _s ; \
> - .align 2 ; \
> +/*
> + * Macro to print a string to the UART, if there is one.
> + *
> + * Clobbers r0 - r3
> + */
> +#define PRINT(_s) \
> + mov r3, lr ;\
> + adr r0, 98f ;\
> + bl puts ;\
> + mov lr, r3 ;\
> + b 99f ;\
> +98: .asciz _s ;\
> + .align 2 ;\
> 99:
> #else /* CONFIG_EARLY_PRINTK */
> #define PRINT(s)
> @@ -500,10 +505,8 @@ init_uart:
> #ifdef EARLY_PRINTK_INIT_UART
> early_uart_init r11, r1, r2
> #endif
> - adr r0, 1f
> - b puts /* Jump to puts */
> -1: .asciz "- UART enabled -\r\n"
> - .align 4
> + PRINT("- UART enabled -\r\n")
> + mov pc, lr
>
> /*
> * Print early debug messages.
> --
> 2.11.0
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |