|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 02/17] xen/arm64: head: Don't clobber x30/lr in the macro PRINT
On Mon, 10 Jun 2019, Julien Grall wrote:
>> The current implementation of the macro PRINT will clobber x30/lr. This
> means the user should save lr if it cares about it.
By x30/lr, do you mean x0-x3 and lr? I would prefer a clearer
expression.
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> Follow-up patches will introduce more use of PRINT in place where lr
> should be preserved. Rather than requiring all the users to preserve lr,
> the macro PRINT is modified to save and restore it.
>
> While the comment state x3 will be clobbered, this is not the case. So
> PRINT will use x3 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>
> ---
> xen/arch/arm/arm64/head.S | 14 +++++++++-----
> 1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
> index c8bbdf05a6..a5147c8d80 100644
> --- a/xen/arch/arm/arm64/head.S
> +++ b/xen/arch/arm/arm64/head.S
> @@ -78,12 +78,17 @@
> * x30 - lr
> */
>
> -/* Macro to print a string to the UART, if there is one.
> - * Clobbers x0-x3. */
> #ifdef CONFIG_EARLY_PRINTK
> +/*
> + * Macro to print a string to the UART, if there is one.
> + *
> + * Clobbers x0 - x3
> + */
> #define PRINT(_s) \
> + mov x3, lr ; \
> adr x0, 98f ; \
> bl puts ; \
> + mov lr, x3 ; \
> RODATA_STR(98, _s)
> #else /* CONFIG_EARLY_PRINTK */
> #define PRINT(s)
> @@ -630,9 +635,8 @@ init_uart:
> #ifdef EARLY_PRINTK_INIT_UART
> early_uart_init x23, 0
> #endif
> - adr x0, 1f
> - b puts
> -RODATA_STR(1, "- UART enabled -\r\n")
> + PRINT("- UART enabled -\r\n")
> + ret
>
> /* Print early debug messages.
> * x0: Nul-terminated string to print.
> --
> 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 |