[PATCH v2 02/10] ARM: safely switch from HYP to SVC mode if required
Sam Ravnborg
sam at ravnborg.org
Sat Mar 24 03:06:03 PDT 2018
On Sat, Mar 24, 2018 at 12:14:14AM +0100, Lucas Stach wrote:
> This is a port of the Linux safe_svcmode_maskall macro to
> the Barebox lowlevel init.
>
> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
> ---
> arch/arm/cpu/lowlevel.S | 20 ++++++++++++++++----
> arch/arm/include/asm/system.h | 26 ++++++++++++++++++++++++++
> 2 files changed, 42 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/cpu/lowlevel.S b/arch/arm/cpu/lowlevel.S
> index 7696a198e764..194ce0e7c274 100644
> --- a/arch/arm/cpu/lowlevel.S
> +++ b/arch/arm/cpu/lowlevel.S
> @@ -1,16 +1,28 @@
> #include <linux/linkage.h>
> #include <init.h>
> #include <asm/system.h>
> +#include <asm/opcodes-virt.h>
>
> .section ".text_bare_init_","ax"
> ENTRY(arm_cpu_lowlevel_init)
> /* save lr, since it may be banked away with a processor mode change */
> mov r2, lr
> +
> /* set the cpu to SVC32 mode, mask irq and fiq */
> - mrs r12, cpsr
> - bic r12, r12, #0x1f
> - orr r12, r12, #0xd3
> - msr cpsr, r12
> + mrs r12 , cpsr
^ extra space
> + eor r12, r12, #HYP_MODE
> + tst r12, #MODE_MASK
> + bic r12 , r12 , #MODE_MASK
^ extra space
> + orr r12 , r12 , #(PSR_I_BIT | PSR_F_BIT | SVC_MODE)
^extra sapce
> +THUMB( orr r12 , r12 , #PSR_T_BIT )
^ extra space
If there is a "rule" about the extra space then I have missed it
Sam
More information about the barebox
mailing list