1

fix paging bugs in writeprotection

This commit is contained in:
2022-07-04 16:04:55 +02:00
parent 2c8a7524b9
commit 586fe3bb80
3 changed files with 38 additions and 10 deletions

View File

@ -92,7 +92,7 @@ unsigned int* pg_alloc_page() {
// pruefe ob Page frei
if (((*p_page) & PAGE_RESERVED) == 0) {
*p_page = (*p_page | PAGE_RESERVED);
return (unsigned int*)(i << 12);
return (unsigned int*)(i << 12); // Address without flags (Offset 0)
}
}
return 0;
@ -108,8 +108,10 @@ void pg_write_protect_page(unsigned int* p_page) {
/* hier muss Code eingefügt werden */
unsigned int* page = (unsigned int*)PAGE_TABLE + ((unsigned int)p_page >> 12); // Pagetable entry
unsigned int mask = PAGE_WRITEABLE; // fill to 32bit
*p_page = *p_page & ~mask; // set writable to 0
*page = *page & ~mask; // set writable to 0
}
/*****************************************************************************
@ -121,8 +123,10 @@ void pg_notpresent_page(unsigned int* p_page) {
/* hier muss Code eingefügt werden */
unsigned int* page = (unsigned int*)PAGE_TABLE + ((unsigned int)p_page >> 12); // Pagetable entry
unsigned int mask = PAGE_PRESENT;
*p_page = *p_page & ~mask; // set present to 0
*page = *page & ~mask; // set present to 0
}
/*****************************************************************************