[PATCH v4 15/32] arm64: KVM: hypervisor initialization code
Catalin Marinas
catalin.marinas at arm.com
Tue May 21 10:40:05 EDT 2013
On Tue, May 14, 2013 at 03:13:43PM +0100, Marc Zyngier wrote:
> --- /dev/null
> +++ b/arch/arm64/kvm/hyp-init.S
...
> + .text
> + .pushsection .hyp.idmap.text, "ax"
> +
> + .align 11
> +
> +__kvm_hyp_init:
> + .global __kvm_hyp_init
> +
> +ENTRY(__kvm_hyp_init_vector)
Why do you need both __kvm_hyp_init and __kvm_hyp_init_vector? You could
drop the former.
> +__do_hyp_init:
> +
> + msr ttbr0_el2, x0
> +
> + mrs x4, tcr_el1
> + ldr x5, =TCR_EL2_MASK
> + and x4, x4, x5
> + ldr x5, =TCR_EL2_FLAGS
> + orr x4, x4, x5
> + msr tcr_el2, x4
> +
> + ldr x4, =VTCR_EL2_FLAGS
> + msr vtcr_el2, x4
> +
> + mrs x4, mair_el1
> + msr mair_el2, x4
> + isb
> +
> + mov x4, #SCTLR_EL2_FLAGS
> + msr sctlr_el2, x4
> + isb
> +
> + /* MMU is now enabled. Get ready for the trampoline dance */
> + ldr x4, =TRAMPOLINE_VA
> + adr x5, target
> + bfi x4, x5, #0, #PAGE_SHIFT
> + br x4
> +
> + nop
What is this nop for?
--
Catalin
More information about the linux-arm-kernel
mailing list