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 --- |