@@ -10,6 +10,11 @@
#include <types/types.h>
#include <types/vector.hpp>
+#define invalidate_tlb(addr) asm("invlpg (%0)" \
+ : \
+ : "r"(addr) \
+ : "memory")
+
constexpr size_t THREAD_KERNEL_STACK_SIZE = 2 * PAGE_SIZE;
struct page {
@@ -419,6 +419,7 @@ int k_map(
if (cow && !page->attr.in.cow) {
page->attr.in.cow = 1;
page->pte->in.rw = 0;
+ invalidate_tlb(addr);
}
++*page->ref_count;