summaryrefslogtreecommitdiffstats
path: root/target-i386/helper.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2014-03-28 11:43:45 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2014-06-05 16:10:34 +0200
commit8a201bd47e4724c5783033aedbdd126a5df7a251 (patch)
tree1f4d90bf910f1eea3544286c076a0f5deddcaf86 /target-i386/helper.c
parent81cf8d8adc64203567e03326c13ea4abec9fe5df (diff)
downloadhqemu-8a201bd47e4724c5783033aedbdd126a5df7a251.zip
hqemu-8a201bd47e4724c5783033aedbdd126a5df7a251.tar.gz
target-i386: fix kernel accesses with SMAP and CPL = 3
With SMAP, implicit kernel accesses from user mode always behave as if AC=0. To do this, kernel mode is not anymore a separate MMU mode. Instead, KERNEL_IDX is renamed to KSMAP_IDX and the kernel mode accessors wrap KSMAP_IDX and KNOSMAP_IDX. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'target-i386/helper.c')
-rw-r--r--target-i386/helper.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/target-i386/helper.c b/target-i386/helper.c
index 88bbe65..6d8e350 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -648,7 +648,7 @@ int x86_cpu_handle_mmu_fault(CPUState *cs, vaddr addr,
}
break;
- case MMU_KERNEL_IDX:
+ case MMU_KSMAP_IDX:
if (is_write1 != 2 && (env->cr[4] & CR4_SMAP_MASK) &&
(ptep & PG_USER_MASK)) {
goto do_fault_protect;
@@ -710,7 +710,7 @@ int x86_cpu_handle_mmu_fault(CPUState *cs, vaddr addr,
}
break;
- case MMU_KERNEL_IDX:
+ case MMU_KSMAP_IDX:
if (is_write1 != 2 && (env->cr[4] & CR4_SMAP_MASK) &&
(ptep & PG_USER_MASK)) {
goto do_fault_protect;
@@ -765,7 +765,7 @@ int x86_cpu_handle_mmu_fault(CPUState *cs, vaddr addr,
}
break;
- case MMU_KERNEL_IDX:
+ case MMU_KSMAP_IDX:
if (is_write1 != 2 && (env->cr[4] & CR4_SMAP_MASK) &&
(pde & PG_USER_MASK)) {
goto do_fault_protect;
@@ -822,7 +822,7 @@ int x86_cpu_handle_mmu_fault(CPUState *cs, vaddr addr,
}
break;
- case MMU_KERNEL_IDX:
+ case MMU_KSMAP_IDX:
if (is_write1 != 2 && (env->cr[4] & CR4_SMAP_MASK) &&
(ptep & PG_USER_MASK)) {
goto do_fault_protect;
OpenPOWER on IntegriCloud