panic("NX violation!\n");
entry.noExec = pte.nx;
if (!pte.p)
- panic("Page not present!\n");
+ panic("Page at %#x not present!\n", entry.vaddr);
nextState = LongPDP;
break;
case LongPDP:
if (badNX)
panic("NX violation!\n");
if (!pte.p)
- panic("Page not present!\n");
+ panic("Page at %#x not present!\n", entry.vaddr);
nextState = LongPD;
break;
case LongPD:
if (badNX)
panic("NX violation!\n");
if (!pte.p)
- panic("Page not present!\n");
+ panic("Page at %#x not present!\n", entry.vaddr);
if (!pte.ps) {
// 4 KB page
entry.size = 4 * (1 << 10);
if (badNX)
panic("NX violation!\n");
if (!pte.p)
- panic("Page not present!\n");
+ panic("Page at %#x not present!\n", entry.vaddr);
entry.paddr = (uint64_t)pte & (mask(40) << 12);
entry.uncacheable = uncacheable;
entry.global = pte.g;
case PAEPDP:
nextRead = ((uint64_t)pte & (mask(40) << 12)) + vaddr.pael2 * size;
if (!pte.p)
- panic("Page not present!\n");
+ panic("Page at %#x not present!\n", entry.vaddr);
nextState = PAEPD;
break;
case PAEPD:
if (badNX)
panic("NX violation!\n");
if (!pte.p)
- panic("Page not present!\n");
+ panic("Page at %#x not present!\n", entry.vaddr);
if (!pte.ps) {
// 4 KB page
entry.size = 4 * (1 << 10);
if (badNX)
panic("NX violation!\n");
if (!pte.p)
- panic("Page not present!\n");
+ panic("Page at %#x not present!\n", entry.vaddr);
entry.paddr = (uint64_t)pte & (mask(40) << 12);
entry.uncacheable = uncacheable;
entry.global = pte.g;
entry.writable = pte.w;
entry.user = pte.u;
if (!pte.p)
- panic("Page not present!\n");
+ panic("Page at %#x not present!\n", entry.vaddr);
if (!pte.ps) {
// 4 KB page
entry.size = 4 * (1 << 10);
entry.writable = pte.w;
entry.user = pte.u;
if (!pte.p)
- panic("Page not present!\n");
+ panic("Page at %#x not present!\n", entry.vaddr);
// 4 KB page
entry.size = 4 * (1 << 10);
nextRead = ((uint64_t)pte & (mask(20) << 12)) + vaddr.norml2 * size;
entry.writable = pte.w;
entry.user = pte.u;
if (!pte.p)
- panic("Page not present!\n");
+ panic("Page at %#x not present!\n", entry.vaddr);
entry.paddr = (uint64_t)pte & (mask(20) << 12);
entry.uncacheable = uncacheable;
entry.global = pte.g;
}
PacketPtr oldRead = read;
//If we didn't return, we're setting up another read.
- uint32_t flags = oldRead->req->getFlags();
- if (uncacheable)
- flags |= UNCACHEABLE;
- else
- flags &= ~UNCACHEABLE;
+ Request::Flags flags = oldRead->req->getFlags();
+ flags.set(Request::UNCACHEABLE, uncacheable);
RequestPtr request =
new Request(nextRead, oldRead->getSize(), flags);
read = new Packet(request, MemCmd::ReadExReq, Packet::Broadcast);
enableNX = efer.nxe;
- RequestPtr request =
- new Request(top, size, PHYSICAL | cr3.pcd ? UNCACHEABLE : 0);
+ Request::Flags flags = Request::PHYSICAL;
+ if (cr3.pcd)
+ flags.set(Request::UNCACHEABLE);
+ RequestPtr request = new Request(top, size, flags);
read = new Packet(request, MemCmd::ReadExReq, Packet::Broadcast);
read->allocate();
Enums::MemoryMode memMode = sys->getMemoryMode();