Message ID | 20190610193215.23704-8-julien.grall@arm.com |
---|---|
State | Superseded |
Headers | show |
Series | xen/arm64: Rework head.S to make it more compliant with the Arm Arm | expand |
On Mon, 10 Jun 2019, Julien Grall wrote: > A branch in the success case can be avoided by inverting the branch > condition. At the same time, remove a pointless comment as Xen can only > run at EL2. > > Lastly, document the behavior and the main registers usage within the > function. > > Signed-off-by: Julien Grall <julien.grall@arm.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> > --- > xen/arch/arm/arm64/head.S | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > > diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S > index ccd8a1b0a8..87fcd3be6c 100644 > --- a/xen/arch/arm/arm64/head.S > +++ b/xen/arch/arm/arm64/head.S > @@ -350,6 +350,13 @@ secondary_switched: > b launch > ENDPROC(init_secondary) > > +/* > + * Check if the CPU has been booted in Hypervisor mode. > + * This function will never return when the CPU is booted in another mode > + * than Hypervisor mode. > + * > + * Clobbers x0 - x5 > + */ > check_cpu_mode: > PRINT("- Current EL ") > mrs x5, CurrentEL > @@ -359,15 +366,13 @@ check_cpu_mode: > /* Are we in EL2 */ > cmp x5, #PSR_MODE_EL2t > ccmp x5, #PSR_MODE_EL2h, #0x4, ne > - b.eq el2 /* Yes */ > - > + b.ne 1f /* No */ > + ret > +1: > /* OK, we're boned. */ > PRINT("- Xen must be entered in NS EL2 mode -\r\n") > PRINT("- Please update the bootloader -\r\n") > b fail > - > -el2: PRINT("- Xen starting at EL2 -\r\n") > - ret > ENDPROC(check_cpu_mode) > > zero_bss: > -- > 2.11.0 >
diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S index ccd8a1b0a8..87fcd3be6c 100644 --- a/xen/arch/arm/arm64/head.S +++ b/xen/arch/arm/arm64/head.S @@ -350,6 +350,13 @@ secondary_switched: b launch ENDPROC(init_secondary) +/* + * Check if the CPU has been booted in Hypervisor mode. + * This function will never return when the CPU is booted in another mode + * than Hypervisor mode. + * + * Clobbers x0 - x5 + */ check_cpu_mode: PRINT("- Current EL ") mrs x5, CurrentEL @@ -359,15 +366,13 @@ check_cpu_mode: /* Are we in EL2 */ cmp x5, #PSR_MODE_EL2t ccmp x5, #PSR_MODE_EL2h, #0x4, ne - b.eq el2 /* Yes */ - + b.ne 1f /* No */ + ret +1: /* OK, we're boned. */ PRINT("- Xen must be entered in NS EL2 mode -\r\n") PRINT("- Please update the bootloader -\r\n") b fail - -el2: PRINT("- Xen starting at EL2 -\r\n") - ret ENDPROC(check_cpu_mode) zero_bss:
A branch in the success case can be avoided by inverting the branch condition. At the same time, remove a pointless comment as Xen can only run at EL2. Lastly, document the behavior and the main registers usage within the function. Signed-off-by: Julien Grall <julien.grall@arm.com> --- xen/arch/arm/arm64/head.S | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)