qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PULL 17/33] target-i386: simplify SMAP handling in MMU_KSM


From: Paolo Bonzini
Subject: [Qemu-devel] [PULL 17/33] target-i386: simplify SMAP handling in MMU_KSMAP_IDX
Date: Thu, 5 Jun 2014 16:22:07 +0200

Do not use this MMU index at all if CR4.SMAP is false, and drop
the SMAP check from x86_cpu_handle_mmu_fault.

Signed-off-by: Paolo Bonzini <address@hidden>
---
 target-i386/cpu.h    |  2 +-
 target-i386/helper.c | 12 ++++--------
 2 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/target-i386/cpu.h b/target-i386/cpu.h
index b80df66..f2d5b19 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -1162,7 +1162,7 @@ static inline CPUX86State *cpu_init(const char *cpu_model)
 static inline int cpu_mmu_index(CPUX86State *env)
 {
     return (env->hflags & HF_CPL_MASK) == 3 ? MMU_USER_IDX :
-        ((env->hflags & HF_SMAP_MASK) && (env->eflags & AC_MASK))
+        (!(env->hflags & HF_SMAP_MASK) || (env->eflags & AC_MASK))
         ? MMU_KNOSMAP_IDX : MMU_KSMAP_IDX;
 }
 
diff --git a/target-i386/helper.c b/target-i386/helper.c
index 6d8e350..d10de26 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -649,8 +649,7 @@ int x86_cpu_handle_mmu_fault(CPUState *cs, vaddr addr,
                 break;
 
             case MMU_KSMAP_IDX:
-                if (is_write1 != 2 && (env->cr[4] & CR4_SMAP_MASK) &&
-                    (ptep & PG_USER_MASK)) {
+                if (is_write1 != 2 && (ptep & PG_USER_MASK)) {
                     goto do_fault_protect;
                 }
                 /* fall through */
@@ -711,8 +710,7 @@ int x86_cpu_handle_mmu_fault(CPUState *cs, vaddr addr,
                 break;
 
             case MMU_KSMAP_IDX:
-                if (is_write1 != 2 && (env->cr[4] & CR4_SMAP_MASK) &&
-                    (ptep & PG_USER_MASK)) {
+                if (is_write1 != 2 && (ptep & PG_USER_MASK)) {
                     goto do_fault_protect;
                 }
                 /* fall through */
@@ -766,8 +764,7 @@ int x86_cpu_handle_mmu_fault(CPUState *cs, vaddr addr,
                 break;
 
             case MMU_KSMAP_IDX:
-                if (is_write1 != 2 && (env->cr[4] & CR4_SMAP_MASK) &&
-                    (pde & PG_USER_MASK)) {
+                if (is_write1 != 2 && (pde & PG_USER_MASK)) {
                     goto do_fault_protect;
                 }
                 /* fall through */
@@ -823,8 +820,7 @@ int x86_cpu_handle_mmu_fault(CPUState *cs, vaddr addr,
                 break;
 
             case MMU_KSMAP_IDX:
-                if (is_write1 != 2 && (env->cr[4] & CR4_SMAP_MASK) &&
-                    (ptep & PG_USER_MASK)) {
+                if (is_write1 != 2 && (ptep & PG_USER_MASK)) {
                     goto do_fault_protect;
                 }
                 /* fall through */
-- 
1.8.3.1





reply via email to

[Prev in Thread] Current Thread [Next in Thread]