[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 33/35] xen/arm32: 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 using conditional instruction and make the call > 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: > - Patch added > --- > xen/arch/arm/arm32/head.S | 34 ++++++++++++++++++++++++---------- > 1 file changed, 24 insertions(+), 10 deletions(-) > > diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S > index e0f8c2e0cb..6d55a2119a 100644 > --- a/xen/arch/arm/arm32/head.S > +++ b/xen/arch/arm/arm32/head.S > @@ -170,6 +170,11 @@ primary_switched: > /* Use a virtual address to access the UART. */ > mov_w r11, EARLY_UART_VIRTUAL_ADDRESS > #endif > + PRINT("- Ready -\r\n") > + /* Setup the arguments for start_xen and jump to C world */ > + mov r0, r10 /* r0 := Physical offset */ > + mov r1, r8 /* r1 := paddr(FDT) */ > + ldr r2, =start_xen > b launch > ENDPROC(start) > > @@ -234,6 +239,9 @@ secondary_switched: > /* Use a virtual address to access the UART. */ > mov_w r11, EARLY_UART_VIRTUAL_ADDRESS > #endif > + PRINT("- Ready -\r\n") > + /* Jump to C world */ > + ldr r2, =start_secondary > b launch > ENDPROC(init_secondary) > > @@ -578,19 +586,25 @@ setup_fixmap: > mov pc, lr > ENDPROC(setup_fixmap) > > +/* > + * Setup the initial stack and jump to the C world > + * > + * Inputs: > + * r0 : Argument 0 of the C function to call > + * r1 : Argument 1 of the C function to call > + * r2 : C entry point > + * > + * Clobbers r3 > + */ > launch: > - PRINT("- Ready -\r\n") > - > - ldr r0, =init_data > - add r0, #INITINFO_stack /* Find the boot-time stack */ > - ldr sp, [r0] > + ldr r3, =init_data > + add r3, #INITINFO_stack /* Find the boot-time stack */ > + ldr sp, [r3] > add sp, #STACK_SIZE /* (which grows down from the top). */ > sub sp, #CPUINFO_sizeof /* Make room for CPU save record */ > - teq r12, #0 > - moveq r0, r10 /* Marshal args: - phys_offset */ > - moveq r1, r8 /* - DTB address */ > - beq start_xen /* and disappear into the land of C */ > - b start_secondary /* (to the appropriate entry point) */ > + > + /* Jump to C world */ > + bx r2 Why bx? > 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 |