pagetable_walker.cc (5304:a685ea6cc8b8) pagetable_walker.cc (5736:426510e758ad)
1/*
2 * Copyright (c) 2007 The Hewlett-Packard Development Company
3 * All rights reserved.
4 *
5 * Redistribution and use of this software in source and binary forms,
6 * with or without modification, are permitted provided that the
7 * following conditions are met:
8 *

--- 284 unchanged lines hidden (view full) ---

293 delete read;
294 read = NULL;
295 return;
296 default:
297 panic("Unknown page table walker state %d!\n");
298 }
299 PacketPtr oldRead = read;
300 //If we didn't return, we're setting up another read.
1/*
2 * Copyright (c) 2007 The Hewlett-Packard Development Company
3 * All rights reserved.
4 *
5 * Redistribution and use of this software in source and binary forms,
6 * with or without modification, are permitted provided that the
7 * following conditions are met:
8 *

--- 284 unchanged lines hidden (view full) ---

293 delete read;
294 read = NULL;
295 return;
296 default:
297 panic("Unknown page table walker state %d!\n");
298 }
299 PacketPtr oldRead = read;
300 //If we didn't return, we're setting up another read.
301 uint32_t flags = oldRead->req->getFlags();
302 if (uncacheable)
303 flags |= UNCACHEABLE;
304 else
305 flags &= ~UNCACHEABLE;
301 Request::Flags flags = oldRead->req->getFlags();
302 flags.set(Request::UNCACHEABLE, uncacheable);
306 RequestPtr request =
307 new Request(nextRead, oldRead->getSize(), flags);
308 read = new Packet(request, MemCmd::ReadExReq, Packet::Broadcast);
309 read->allocate();
310 //If we need to write, adjust the read packet to write the modified value
311 //back to memory.
312 if (doWrite) {
313 write = oldRead;

--- 46 unchanged lines hidden (view full) ---

360 }
361 }
362
363 nextState = Ready;
364 entry.vaddr = vaddr;
365
366 enableNX = efer.nxe;
367
303 RequestPtr request =
304 new Request(nextRead, oldRead->getSize(), flags);
305 read = new Packet(request, MemCmd::ReadExReq, Packet::Broadcast);
306 read->allocate();
307 //If we need to write, adjust the read packet to write the modified value
308 //back to memory.
309 if (doWrite) {
310 write = oldRead;

--- 46 unchanged lines hidden (view full) ---

357 }
358 }
359
360 nextState = Ready;
361 entry.vaddr = vaddr;
362
363 enableNX = efer.nxe;
364
368 RequestPtr request =
369 new Request(top, size, PHYSICAL | cr3.pcd ? UNCACHEABLE : 0);
365 Request::Flags flags = Request::PHYSICAL;
366 if (cr3.pcd)
367 flags.set(Request::UNCACHEABLE);
368 RequestPtr request = new Request(top, size, flags);
370 read = new Packet(request, MemCmd::ReadExReq, Packet::Broadcast);
371 read->allocate();
372 Enums::MemoryMode memMode = sys->getMemoryMode();
373 if (memMode == Enums::timing) {
374 tc->suspend();
375 port.sendTiming(read);
376 } else if (memMode == Enums::atomic) {
377 do {

--- 156 unchanged lines hidden ---
369 read = new Packet(request, MemCmd::ReadExReq, Packet::Broadcast);
370 read->allocate();
371 Enums::MemoryMode memMode = sys->getMemoryMode();
372 if (memMode == Enums::timing) {
373 tc->suspend();
374 port.sendTiming(read);
375 } else if (memMode == Enums::atomic) {
376 do {

--- 156 unchanged lines hidden ---