fix paging: invalidate tlb
This commit is contained in:
@ -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<unsigned int*>(PAGE_DIRECTORY));
|
||||
}
|
||||
}
|
@ -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
|
||||
|
Reference in New Issue
Block a user