atomic.cc (6227:a17798f2a52c) | atomic.cc (6623:f7abbfd5a79f) |
---|---|
1/* 2 * Copyright (c) 2002-2005 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 310 unchanged lines hidden (view full) --- 319 320 while(1) { 321 req->setVirt(0, addr, dataSize, flags, thread->readPC()); 322 323 // translate to physical address 324 Fault fault = thread->dtb->translateAtomic(req, tc, BaseTLB::Read); 325 326 // Now do the access. | 1/* 2 * Copyright (c) 2002-2005 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 310 unchanged lines hidden (view full) --- 319 320 while(1) { 321 req->setVirt(0, addr, dataSize, flags, thread->readPC()); 322 323 // translate to physical address 324 Fault fault = thread->dtb->translateAtomic(req, tc, BaseTLB::Read); 325 326 // Now do the access. |
327 if (fault == NoFault) { | 327 if (fault == NoFault && !req->getFlags().isSet(Request::NO_ACCESS)) { |
328 Packet pkt = Packet(req, 329 req->isLLSC() ? MemCmd::LoadLockedReq : MemCmd::ReadReq, 330 Packet::Broadcast); 331 pkt.dataStatic(dataPtr); 332 333 if (req->isMmapedIpr()) 334 dcache_latency += TheISA::handleIprRead(thread->getTC(), &pkt); 335 else { --- 140 unchanged lines hidden (view full) --- 476 } else if (req->isSwap()) { 477 cmd = MemCmd::SwapReq; 478 if (req->isCondSwap()) { 479 assert(res); 480 req->setExtraData(*res); 481 } 482 } 483 | 328 Packet pkt = Packet(req, 329 req->isLLSC() ? MemCmd::LoadLockedReq : MemCmd::ReadReq, 330 Packet::Broadcast); 331 pkt.dataStatic(dataPtr); 332 333 if (req->isMmapedIpr()) 334 dcache_latency += TheISA::handleIprRead(thread->getTC(), &pkt); 335 else { --- 140 unchanged lines hidden (view full) --- 476 } else if (req->isSwap()) { 477 cmd = MemCmd::SwapReq; 478 if (req->isCondSwap()) { 479 assert(res); 480 req->setExtraData(*res); 481 } 482 } 483 |
484 if (do_access) { | 484 if (do_access && !req->getFlags().isSet(Request::NO_ACCESS)) { |
485 Packet pkt = Packet(req, cmd, Packet::Broadcast); 486 pkt.dataStatic(dataPtr); 487 488 if (req->isMmapedIpr()) { 489 dcache_latency += 490 TheISA::handleIprWrite(thread->getTC(), &pkt); 491 } else { 492 //XXX This needs to be outside of the loop in order to --- 242 unchanged lines hidden --- | 485 Packet pkt = Packet(req, cmd, Packet::Broadcast); 486 pkt.dataStatic(dataPtr); 487 488 if (req->isMmapedIpr()) { 489 dcache_latency += 490 TheISA::handleIprWrite(thread->getTC(), &pkt); 491 } else { 492 //XXX This needs to be outside of the loop in order to --- 242 unchanged lines hidden --- |