45 lines
1.3 KiB
C
45 lines
1.3 KiB
C
#include "pte.h"
|
|
|
|
void pt_entry_add_attrib (pt_entry* entry, unsigned mask) {
|
|
*entry |= mask;
|
|
}
|
|
|
|
void pt_entry_del_attrib (pt_entry* entry, unsigned mask) {
|
|
*entry &= ~mask;
|
|
}
|
|
|
|
void pt_entry_set_frame (pt_entry* entry, unsigned address) {
|
|
*entry = (*entry & ~_I86_PTE_FRAME) | address;
|
|
}
|
|
|
|
unsigned pt_entry_get_frame (pt_entry entry) {
|
|
return (entry & _I86_PTE_FRAME);
|
|
}
|
|
|
|
unsigned char pt_entry_is_present (pt_entry entry) {
|
|
return (entry & _I86_PTE_PRESENT);
|
|
}
|
|
|
|
unsigned char pt_entry_is_writable (pt_entry entry) {
|
|
return (entry & _I86_PTE_WRITABLE);
|
|
}
|
|
|
|
|
|
/*#include <conio.h>
|
|
|
|
void pt_entry_print(pt_entry entry)
|
|
{
|
|
cprintf ("page <FRAME=%u", entry & _I86_PTE_FRAME);
|
|
|
|
if (entry & _I86_PTE_PRESENT) cprintf (" PRESENT");
|
|
if (entry & _I86_PTE_WRITABLE) cprintf (" WRITABLE");
|
|
if (entry & _I86_PTE_USER) cprintf (" USER");
|
|
if (entry & _I86_PTE_WRITETHROUGH) cprintf (" WRITETHROUGH");
|
|
if (entry & _I86_PTE_NOT_CACHEABLE) cprintf (" NOT-CACHEABLE");
|
|
if (entry & _I86_PTE_ACCESSED) cprintf (" ACCESSED");
|
|
if (entry & _I86_PTE_DIRTY) cprintf (" DIRTY");
|
|
if (entry & _I86_PTE_PAT) cprintf (" PAT");
|
|
if (entry & _I86_PTE_CPU_GLOBAL) cprintf (" CPU-GLOBAL");
|
|
if (entry & _I86_PTE_LV4_GLOBAL) cprintf (" LV4-GLOBAL");
|
|
cprintf(">");
|
|
}*/ |