瀏覽代碼

Add missing TLB flushes.

Andreas Kling 6 年之前
父節點
當前提交
d133a2845f
共有 1 個文件被更改,包括 3 次插入0 次删除
  1. 3 0
      Kernel/MemoryManager.cpp

+ 3 - 0
Kernel/MemoryManager.cpp

@@ -93,6 +93,7 @@ void MemoryManager::protectMap(LinearAddress linearAddress, size_t length)
         pte.setPresent(false);
         pte.setPresent(false);
         pte.setWritable(false);
         pte.setWritable(false);
     }
     }
+    flushTLB();
 }
 }
 
 
 void MemoryManager::identityMap(LinearAddress linearAddress, size_t length)
 void MemoryManager::identityMap(LinearAddress linearAddress, size_t length)
@@ -106,6 +107,7 @@ void MemoryManager::identityMap(LinearAddress linearAddress, size_t length)
         pte.setPresent(true);
         pte.setPresent(true);
         pte.setWritable(true);
         pte.setWritable(true);
     }
     }
+    flushTLB();
 }
 }
 
 
 void MemoryManager::initialize()
 void MemoryManager::initialize()
@@ -153,6 +155,7 @@ byte* MemoryManager::quickMapOnePage(PhysicalAddress physicalAddress)
     pte.setPhysicalPageBase(physicalAddress.pageBase());
     pte.setPhysicalPageBase(physicalAddress.pageBase());
     pte.setPresent(true);
     pte.setPresent(true);
     pte.setWritable(true);
     pte.setWritable(true);
+    flushTLB();
     return (byte*)(4 * MB);
     return (byte*)(4 * MB);
 }
 }