mem: Page Table long lines
Trimmed down all the lines greater than 78 characters.
This commit is contained in:
parent
a19cf6943b
commit
e4859fae5b
|
@ -141,7 +141,8 @@ class MultiLevelPageTable : public PageTableBase
|
||||||
bool walk(Addr vaddr, bool allocate, Addr &PTE_addr);
|
bool walk(Addr vaddr, bool allocate, Addr &PTE_addr);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MultiLevelPageTable(const std::string &__name, uint64_t _pid, System *_sys);
|
MultiLevelPageTable(const std::string &__name, uint64_t _pid,
|
||||||
|
System *_sys);
|
||||||
~MultiLevelPageTable();
|
~MultiLevelPageTable();
|
||||||
|
|
||||||
void initState(ThreadContext* tc);
|
void initState(ThreadContext* tc);
|
||||||
|
|
|
@ -49,7 +49,8 @@ using namespace std;
|
||||||
using namespace TheISA;
|
using namespace TheISA;
|
||||||
|
|
||||||
template <class ISAOps>
|
template <class ISAOps>
|
||||||
MultiLevelPageTable<ISAOps>::MultiLevelPageTable(const std::string &__name, uint64_t _pid, System *_sys)
|
MultiLevelPageTable<ISAOps>::MultiLevelPageTable(const std::string &__name,
|
||||||
|
uint64_t _pid, System *_sys)
|
||||||
: PageTableBase(__name, _pid), system(_sys),
|
: PageTableBase(__name, _pid), system(_sys),
|
||||||
logLevelSize(PageTableLayout),
|
logLevelSize(PageTableLayout),
|
||||||
numLevels(logLevelSize.size())
|
numLevels(logLevelSize.size())
|
||||||
|
@ -109,7 +110,8 @@ MultiLevelPageTable<ISAOps>::walk(Addr vaddr, bool allocate, Addr &PTE_addr)
|
||||||
assert(log_req_size >= PageShift);
|
assert(log_req_size >= PageShift);
|
||||||
uint64_t npages = 1 << (log_req_size - PageShift);
|
uint64_t npages = 1 << (log_req_size - PageShift);
|
||||||
|
|
||||||
DPRINTF(MMU, "Allocating %d pages needed for entry in level %d\n", npages, i-1);
|
DPRINTF(MMU, "Allocating %d pages needed for entry in level %d\n",
|
||||||
|
npages, i - 1);
|
||||||
|
|
||||||
/* allocate new entry */
|
/* allocate new entry */
|
||||||
Addr next_entry_paddr = system->allocPhysPages(npages);
|
Addr next_entry_paddr = system->allocPhysPages(npages);
|
||||||
|
@ -121,7 +123,8 @@ MultiLevelPageTable<ISAOps>::walk(Addr vaddr, bool allocate, Addr &PTE_addr)
|
||||||
p.write<PageTableEntry>(entry_addr, entry);
|
p.write<PageTableEntry>(entry_addr, entry);
|
||||||
|
|
||||||
}
|
}
|
||||||
DPRINTF(MMU, "Level %d base: %d offset: %d entry: %d\n", i, level_base, offsets[i], next_entry_pnum);
|
DPRINTF(MMU, "Level %d base: %d offset: %d entry: %d\n",
|
||||||
|
i, level_base, offsets[i], next_entry_pnum);
|
||||||
level_base = next_entry_pnum;
|
level_base = next_entry_pnum;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -133,7 +136,8 @@ MultiLevelPageTable<ISAOps>::walk(Addr vaddr, bool allocate, Addr &PTE_addr)
|
||||||
|
|
||||||
template <class ISAOps>
|
template <class ISAOps>
|
||||||
void
|
void
|
||||||
MultiLevelPageTable<ISAOps>::map(Addr vaddr, Addr paddr, int64_t size, bool clobber)
|
MultiLevelPageTable<ISAOps>::map(Addr vaddr, Addr paddr,
|
||||||
|
int64_t size, bool clobber)
|
||||||
{
|
{
|
||||||
// starting address must be page aligned
|
// starting address must be page aligned
|
||||||
assert(pageOffset(vaddr) == 0);
|
assert(pageOffset(vaddr) == 0);
|
||||||
|
@ -153,7 +157,7 @@ MultiLevelPageTable<ISAOps>::map(Addr vaddr, Addr paddr, int64_t size, bool clob
|
||||||
p.write<PageTableEntry>(PTE_addr, PTE);
|
p.write<PageTableEntry>(PTE_addr, PTE);
|
||||||
DPRINTF(MMU, "New mapping: %#x-%#x\n", vaddr, paddr);
|
DPRINTF(MMU, "New mapping: %#x-%#x\n", vaddr, paddr);
|
||||||
} else {
|
} else {
|
||||||
fatal("address 0x%x already mapped to %x", vaddr, entry_paddr);
|
fatal("addr 0x%x already mapped to %x", vaddr, entry_paddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
eraseCacheEntry(vaddr);
|
eraseCacheEntry(vaddr);
|
||||||
|
@ -175,7 +179,9 @@ MultiLevelPageTable<ISAOps>::remap(Addr vaddr, int64_t size, Addr new_vaddr)
|
||||||
|
|
||||||
PortProxy &p = system->physProxy;
|
PortProxy &p = system->physProxy;
|
||||||
|
|
||||||
for (; size > 0; size -= pageSize, vaddr += pageSize, new_vaddr += pageSize) {
|
for (; size > 0;
|
||||||
|
size -= pageSize, vaddr += pageSize, new_vaddr += pageSize)
|
||||||
|
{
|
||||||
Addr PTE_addr;
|
Addr PTE_addr;
|
||||||
if (walk(vaddr, false, PTE_addr)) {
|
if (walk(vaddr, false, PTE_addr)) {
|
||||||
PageTableEntry PTE = p.read<PageTableEntry>(PTE_addr);
|
PageTableEntry PTE = p.read<PageTableEntry>(PTE_addr);
|
||||||
|
@ -306,7 +312,8 @@ MultiLevelPageTable<ISAOps>::serialize(std::ostream &os)
|
||||||
|
|
||||||
template <class ISAOps>
|
template <class ISAOps>
|
||||||
void
|
void
|
||||||
MultiLevelPageTable<ISAOps>::unserialize(Checkpoint *cp, const std::string §ion)
|
MultiLevelPageTable<ISAOps>::unserialize(Checkpoint *cp,
|
||||||
|
const std::string §ion)
|
||||||
{
|
{
|
||||||
paramIn(cp, section, "ptable.pointer", basePtr);
|
paramIn(cp, section, "ptable.pointer", basePtr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,8 @@
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace TheISA;
|
using namespace TheISA;
|
||||||
|
|
||||||
FuncPageTable::FuncPageTable(const std::string &__name, uint64_t _pid, Addr _pageSize)
|
FuncPageTable::FuncPageTable(const std::string &__name,
|
||||||
|
uint64_t _pid, Addr _pageSize)
|
||||||
: PageTableBase(__name, _pid, _pageSize)
|
: PageTableBase(__name, _pid, _pageSize)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -71,7 +72,7 @@ FuncPageTable::map(Addr vaddr, Addr paddr, int64_t size, bool clobber)
|
||||||
for (; size > 0; size -= pageSize, vaddr += pageSize, paddr += pageSize) {
|
for (; size > 0; size -= pageSize, vaddr += pageSize, paddr += pageSize) {
|
||||||
if (!clobber && (pTable.find(vaddr) != pTable.end())) {
|
if (!clobber && (pTable.find(vaddr) != pTable.end())) {
|
||||||
// already mapped
|
// already mapped
|
||||||
fatal("FuncPageTable::allocate: address 0x%x already mapped", vaddr);
|
fatal("FuncPageTable::allocate: addr 0x%x already mapped", vaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
pTable[vaddr] = TheISA::TlbEntry(pid, vaddr, paddr);
|
pTable[vaddr] = TheISA::TlbEntry(pid, vaddr, paddr);
|
||||||
|
@ -89,7 +90,9 @@ FuncPageTable::remap(Addr vaddr, int64_t size, Addr new_vaddr)
|
||||||
DPRINTF(MMU, "moving pages from vaddr %08p to %08p, size = %d\n", vaddr,
|
DPRINTF(MMU, "moving pages from vaddr %08p to %08p, size = %d\n", vaddr,
|
||||||
new_vaddr, size);
|
new_vaddr, size);
|
||||||
|
|
||||||
for (; size > 0; size -= pageSize, vaddr += pageSize, new_vaddr += pageSize) {
|
for (; size > 0;
|
||||||
|
size -= pageSize, vaddr += pageSize, new_vaddr += pageSize)
|
||||||
|
{
|
||||||
assert(pTable.find(vaddr) != pTable.end());
|
assert(pTable.find(vaddr) != pTable.end());
|
||||||
|
|
||||||
pTable[new_vaddr] = pTable[vaddr];
|
pTable[new_vaddr] = pTable[vaddr];
|
||||||
|
|
|
@ -93,7 +93,8 @@ class PageTableBase
|
||||||
Addr pageAlign(Addr a) { return (a & ~offsetMask); }
|
Addr pageAlign(Addr a) { return (a & ~offsetMask); }
|
||||||
Addr pageOffset(Addr a) { return (a & offsetMask); }
|
Addr pageOffset(Addr a) { return (a & offsetMask); }
|
||||||
|
|
||||||
virtual void map(Addr vaddr, Addr paddr, int64_t size, bool clobber = false) = 0;
|
virtual void map(Addr vaddr, Addr paddr, int64_t size,
|
||||||
|
bool clobber = false) = 0;
|
||||||
virtual void remap(Addr vaddr, int64_t size, Addr new_vaddr) = 0;
|
virtual void remap(Addr vaddr, int64_t size, Addr new_vaddr) = 0;
|
||||||
virtual void unmap(Addr vaddr, int64_t size) = 0;
|
virtual void unmap(Addr vaddr, int64_t size) = 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue