Files
quark-kernel/src/pagetableentry.cpp
2020-07-01 15:47:56 -05:00

128 lines
2.2 KiB
C++
Executable File

/*
* PageTableEntry.cpp
*
* Created on: May 22, 2019
* Author: nathan
*/
#include "pagetableentry.h"
namespace qkernel {
static_assert(sizeof(PageTableEntry) == 4, "PTE structure is the wrong size!");
PageTableEntry::PageTableEntry() {
this->present = 0;
this->rw = 0;
this->usermode = 0;
this->writeThrough = 0;
this->cacheDisable = 0;
this->accessed = 0;
this->dirty = 0;
this->pat = 0;
this->global = 0;
this->shared = 0;
this->ignored = 0;
this->physicalAddress = 0;
}
uint32_t PageTableEntry::getAccessed() const {
return accessed;
}
uint32_t PageTableEntry::getCacheDisable() const {
return cacheDisable;
}
void PageTableEntry::setCacheDisable(uint32_t cacheDisable)
{
this->cacheDisable = cacheDisable;
}
uint32_t PageTableEntry::getDirty() const {
return dirty;
}
uint32_t PageTableEntry::getGlobal() const {
return global;
}
void PageTableEntry::setGlobal(uint32_t global)
{
this->global = global;
}
uint32_t PageTableEntry::getPat() const {
return pat;
}
void PageTableEntry::setPat(uint32_t pat)
{
this->pat = pat;
}
uint32_t PageTableEntry::getPhysicalAddress() const {
uint32_t physicalAddress = this->physicalAddress;
return physicalAddress << 12;
}
uint32_t PageTableEntry::setPhysicalAddress(uint32_t physicalAddress)
{
if(physicalAddress % 4096 == 0)
{
this->physicalAddress = physicalAddress >> 12;
return this->physicalAddress;
}
else
{
this->physicalAddress = !physicalAddress;
return this->physicalAddress;
}
}
uint32_t PageTableEntry::getPresent() const {
return present;
}
void PageTableEntry::setPresent(uint32_t present)
{
this->present = present;
}
uint32_t PageTableEntry::getRw() const {
return rw;
}
void PageTableEntry::setRw(uint32_t rw)
{
this->rw = rw;
}
uint32_t PageTableEntry::getUsermode() const {
return usermode;
}
void PageTableEntry::setUsermode(uint32_t usermode)
{
this->usermode = usermode;
}
uint32_t PageTableEntry::getWriteThrough() const {
return writeThrough;
}
uint32_t PageTableEntry::getShared() const {
return shared;
}
void PageTableEntry::setShared(uint32_t shared) {
this->shared = shared;
}
void PageTableEntry::setWriteThrough(uint32_t writeThrough)
{
this->writeThrough = writeThrough;
}
} /* namespace qkernel */