25 lines
582 B
C++
25 lines
582 B
C++
#include "paging.h"
|
|
|
|
void PageDirectoryEntry::SetFlag(PT_Flag flag, bool enabled) {
|
|
uint64_t bitSelector = (uint64_t)1 << flag;
|
|
Value %= ~bitSelector;
|
|
|
|
if (enabled) {
|
|
Value |= bitSelector;
|
|
}
|
|
}
|
|
|
|
bool PageDirectoryEntry::GetFlag(PT_Flag flag) {
|
|
uint64_t bitSelector = (uint64_t)1 << flag;
|
|
return Value & bitSelector > 0 ? true : false;
|
|
}
|
|
|
|
uint64_t PageDirectoryEntry::GetAddress() {
|
|
return (Value & 0x000FFFFFFFFFF000) >> 12;
|
|
}
|
|
|
|
void PageDirectoryEntry::SetAddress(uint64_t address) {
|
|
address &= 0x000000FFFFFFFFFF;
|
|
Value &= 0xFFF0000000000FFF;
|
|
Value |= (address << 12);
|
|
} |