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
|
unsigned int mask = PAGE_WRITEABLE; // fill to 32bit
|
||||||
*page = *page & ~mask; // set writable to 0
|
*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;
|
unsigned int mask = PAGE_PRESENT;
|
||||||
*page = *page & ~mask; // set present to 0
|
*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 aktivieren (in startup.asm)
|
||||||
paging_on(reinterpret_cast<unsigned int*>(PAGE_DIRECTORY));
|
paging_on(reinterpret_cast<unsigned int*>(PAGE_DIRECTORY));
|
||||||
}
|
}
|
@ -55,7 +55,7 @@
|
|||||||
// Externe Funktionen in startup.asm
|
// Externe Funktionen in startup.asm
|
||||||
extern "C" {
|
extern "C" {
|
||||||
void paging_on(unsigned int* p_pdir); // Paging einschalten
|
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
|
// ativiert paging
|
||||||
|
Reference in New Issue
Block a user