提交 054167b3 编写于 作者: M Mario Smarduch 提交者: Marc Zyngier

arm: KVM: keep arm vfp/simd exit handling consistent with arm64

After enhancing arm64 FP/SIMD exit handling, ARMv7 VFP exit branch is moved
to guest trap handling. This allows us to keep exit handling flow between both
architectures consistent.
Signed-off-by: NMario Smarduch <m.smarduch@samsung.com>
Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
上级 33c76a0b
...@@ -361,10 +361,6 @@ hyp_hvc: ...@@ -361,10 +361,6 @@ hyp_hvc:
@ Check syndrome register @ Check syndrome register
mrc p15, 4, r1, c5, c2, 0 @ HSR mrc p15, 4, r1, c5, c2, 0 @ HSR
lsr r0, r1, #HSR_EC_SHIFT lsr r0, r1, #HSR_EC_SHIFT
#ifdef CONFIG_VFPv3
cmp r0, #HSR_EC_CP_0_13
beq switch_to_guest_vfp
#endif
cmp r0, #HSR_EC_HVC cmp r0, #HSR_EC_HVC
bne guest_trap @ Not HVC instr. bne guest_trap @ Not HVC instr.
...@@ -378,7 +374,10 @@ hyp_hvc: ...@@ -378,7 +374,10 @@ hyp_hvc:
cmp r2, #0 cmp r2, #0
bne guest_trap @ Guest called HVC bne guest_trap @ Guest called HVC
host_switch_to_hyp: /*
* Getting here means host called HVC, we shift parameters and branch
* to Hyp function.
*/
pop {r0, r1, r2} pop {r0, r1, r2}
/* Check for __hyp_get_vectors */ /* Check for __hyp_get_vectors */
...@@ -409,6 +408,10 @@ guest_trap: ...@@ -409,6 +408,10 @@ guest_trap:
@ Check if we need the fault information @ Check if we need the fault information
lsr r1, r1, #HSR_EC_SHIFT lsr r1, r1, #HSR_EC_SHIFT
#ifdef CONFIG_VFPv3
cmp r1, #HSR_EC_CP_0_13
beq switch_to_guest_vfp
#endif
cmp r1, #HSR_EC_IABT cmp r1, #HSR_EC_IABT
mrceq p15, 4, r2, c6, c0, 2 @ HIFAR mrceq p15, 4, r2, c6, c0, 2 @ HIFAR
beq 2f beq 2f
...@@ -477,7 +480,6 @@ guest_trap: ...@@ -477,7 +480,6 @@ guest_trap:
*/ */
#ifdef CONFIG_VFPv3 #ifdef CONFIG_VFPv3
switch_to_guest_vfp: switch_to_guest_vfp:
load_vcpu @ Load VCPU pointer to r0
push {r3-r7} push {r3-r7}
@ NEON/VFP used. Turn on VFP access. @ NEON/VFP used. Turn on VFP access.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册