|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 16/35] xen/arm64: head: Rework and document launch()
On Mon, 22 Jul 2019, Julien Grall wrote:
> Boot CPU and secondary CPUs will use different entry point to C code. At
> the moment, the decision on which entry to use is taken within launch().
>
> In order to avoid a branch for the decision and make the code clearer,
> launch() is reworked to take in parameters the entry point and its
> arguments.
>
> Lastly, document the behavior and the main registers usage within the
> function.
>
> Signed-off-by: Julien Grall <julien.grall@xxxxxxx>
>
> ---
> Changes in v2:
> - Use x3 instead of x4
> - Add a clobbers section
> ---
> xen/arch/arm/arm64/head.S | 43 +++++++++++++++++++++++++++----------------
> 1 file changed, 27 insertions(+), 16 deletions(-)
>
> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
> index f165dd61ca..7541635102 100644
> --- a/xen/arch/arm/arm64/head.S
> +++ b/xen/arch/arm/arm64/head.S
> @@ -312,6 +312,11 @@ primary_switched:
> /* Use a virtual address to access the UART. */
> ldr x23, =EARLY_UART_VIRTUAL_ADDRESS
> #endif
> + PRINT("- Ready -\r\n")
> + /* Setup the arguments for start_xen and jump to C world */
> + mov x0, x20 /* x0 := Physical offset */
> + mov x1, x21 /* x1 := paddr(FDT) */
> + ldr x2, =start_xen
> b launch
> ENDPROC(real_start)
>
> @@ -374,6 +379,9 @@ secondary_switched:
> /* Use a virtual address to access the UART. */
> ldr x23, =EARLY_UART_VIRTUAL_ADDRESS
> #endif
> + PRINT("- Ready -\r\n")
> + /* Jump to C world */
> + ldr x2, =start_secondary
> b launch
> ENDPROC(init_secondary)
>
> @@ -732,23 +740,26 @@ setup_fixmap:
> ret
> ENDPROC(setup_fixmap)
>
> +/*
> + * Setup the initial stack and jump to the C world
> + *
> + * Inputs:
> + * x0 : Argument 0 of the C function to call
> + * x1 : Argument 1 of the C function to call
> + * x2 : C entry point
> + *
> + * Clobbers x3
> + */
> launch:
> - PRINT("- Ready -\r\n")
> -
> - ldr x0, =init_data
> - add x0, x0, #INITINFO_stack /* Find the boot-time stack */
> - ldr x0, [x0]
> - add x0, x0, #STACK_SIZE /* (which grows down from the top). */
> - sub x0, x0, #CPUINFO_sizeof /* Make room for CPU save record */
> - mov sp, x0
> -
> - cbnz x22, 1f
> -
> - mov x0, x20 /* Marshal args: - phys_offset */
> - mov x1, x21 /* - FDT */
> - b start_xen /* and disappear into the land of C */
> -1:
> - b start_secondary /* (to the appropriate entry point) */
> + ldr x3, =init_data
> + add x3, x3, #INITINFO_stack /* Find the boot-time stack */
> + ldr x3, [x3]
> + add x3, x3, #STACK_SIZE /* (which grows down from the top). */
^ please move 1 space to the
right
Aside from this minor code style thing
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> + sub x3, x3, #CPUINFO_sizeof /* Make room for CPU save record */
> + mov sp, x3
> +
> + /* Jump to C world */
> + br x2
> ENDPROC(launch)
>
> /* Fail-stop */
> --
> 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 |