arm64/kvm: use alternative auto-nop
authorMark Rutland <mark.rutland@arm.com>
Wed, 7 Sep 2016 10:07:10 +0000 (11:07 +0100)
committerWill Deacon <will.deacon@arm.com>
Mon, 12 Sep 2016 09:46:07 +0000 (10:46 +0100)
Make use of the new alternative_if and alternative_else_nop_endif and
get rid of our open-coded NOP sleds, making the code simpler to read.

Note that for __kvm_call_hyp the branch to __vhe_hyp_call has been moved
out of the alternative sequence, and in the default case there will be
four additional NOPs executed.

Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: kvmarm@lists.cs.columbia.edu
Acked-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/include/asm/kvm_mmu.h
arch/arm64/kvm/hyp.S

index b6bb834..dff1098 100644 (file)
 .macro kern_hyp_va     reg
 alternative_if_not ARM64_HAS_VIRT_HOST_EXTN
        and     \reg, \reg, #HYP_PAGE_OFFSET_HIGH_MASK
-alternative_else
-       nop
-alternative_endif
-alternative_if_not ARM64_HYP_OFFSET_LOW
-       nop
-alternative_else
+alternative_else_nop_endif
+alternative_if ARM64_HYP_OFFSET_LOW
        and     \reg, \reg, #HYP_PAGE_OFFSET_LOW_MASK
-alternative_endif
+alternative_else_nop_endif
 .endm
 
 #else
index 7ce9315..2726635 100644 (file)
@@ -46,10 +46,6 @@ alternative_if_not ARM64_HAS_VIRT_HOST_EXTN
        hvc     #0
        ldr     lr, [sp], #16
        ret
-alternative_else
+alternative_else_nop_endif
        b       __vhe_hyp_call
-       nop
-       nop
-       nop
-alternative_endif
 ENDPROC(__kvm_call_hyp)