diff --git a/c_os/kernel/Paging.cc b/c_os/kernel/Paging.cc index fdbd319..a998377 100644 --- a/c_os/kernel/Paging.cc +++ b/c_os/kernel/Paging.cc @@ -107,6 +107,8 @@ void pg_write_protect_page(const unsigned int* p_page) { unsigned int mask = PAGE_WRITEABLE; // fill to 32bit *page = *page & ~mask; // set writable to 0 + + invalidate_tlb_entry(p_page); } /***************************************************************************** @@ -122,6 +124,8 @@ void pg_notpresent_page(const unsigned int* p_page) { unsigned int mask = PAGE_PRESENT; *page = *page & ~mask; // set present to 0 + + invalidate_tlb_entry(p_page); } /***************************************************************************** @@ -206,4 +210,4 @@ void pg_init() { // Paging aktivieren (in startup.asm) paging_on(reinterpret_cast(PAGE_DIRECTORY)); -} +} \ No newline at end of file diff --git a/c_os/kernel/Paging.h b/c_os/kernel/Paging.h index 826a4c3..335e908 100644 --- a/c_os/kernel/Paging.h +++ b/c_os/kernel/Paging.h @@ -55,7 +55,7 @@ // Externe Funktionen in startup.asm extern "C" { void paging_on(unsigned int* p_pdir); // Paging einschalten - void invalidate_tlb_entry(unsigned int* ptr); // Page in TLB invalid. + void invalidate_tlb_entry(const unsigned int* ptr); // Page in TLB invalid. } // ativiert paging