Add pte_clear_dirty()
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 29 Mar 2018 21:32:40 +0000 (17:32 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 30 Apr 2018 18:36:28 +0000 (14:36 -0400)
Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/arch/riscv/pmap_ops.h
kern/arch/x86/kpt.h
kern/arch/x86/pmap_ops.h
kern/arch/x86/vmm/ept.h

index 9fd78ef..0cc2963 100644 (file)
@@ -80,6 +80,11 @@ static inline void pte_clear_present(pte_t pte)
        *(kpte_t*)pte &= ~PTE_P;
 }
 
+static inline void pte_clear_dirty(pte_t pte)
+{
+       *(kpte_t*)pte &= ~PTE_D;
+}
+
 static inline void pte_clear(pte_t pte)
 {
        *(kpte_t*)pte = 0;
index 1af3d6e..7821496 100644 (file)
@@ -66,6 +66,11 @@ static inline void kpte_clear_present(kpte_t *kpte)
        *kpte &= ~PTE_P;
 }
 
+static inline void kpte_clear_dirty(kpte_t *kpte)
+{
+       *kpte &= ~PTE_D;
+}
+
 static inline void kpte_clear(kpte_t *kpte)
 {
        *kpte = 0;
index a38bebd..1e16a3f 100644 (file)
@@ -101,6 +101,12 @@ static inline void pte_clear_present(pte_t pte)
        epte_clear_present(kpte_to_epte(pte));
 }
 
+static inline void pte_clear_dirty(pte_t pte)
+{
+       kpte_clear_dirty(pte);
+       epte_clear_dirty(kpte_to_epte(pte));
+}
+
 static inline void pte_clear(pte_t pte)
 {
        kpte_clear(pte);
index bca55e1..9bc5706 100644 (file)
@@ -118,6 +118,11 @@ static inline void epte_clear_present(epte_t *epte)
        *epte &= ~EPTE_P;
 }
 
+static inline void epte_clear_dirty(epte_t *epte)
+{
+       *epte &= ~EPTE_D;
+}
+
 static inline void epte_clear(epte_t *epte)
 {
        *epte = 0;