atomic.cc (10464:2a0fe8bca031) atomic.cc (10529:05b5a6cf3521)
1/*
2 * Copyright (c) 2012-2013 ARM Limited
3 * All rights reserved.
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

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

267
268
269Tick
270AtomicSimpleCPU::AtomicCPUDPort::recvAtomicSnoop(PacketPtr pkt)
271{
272 DPRINTF(SimpleCPU, "received snoop pkt for addr:%#x %s\n", pkt->getAddr(),
273 pkt->cmdString());
274
1/*
2 * Copyright (c) 2012-2013 ARM Limited
3 * All rights reserved.
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

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

267
268
269Tick
270AtomicSimpleCPU::AtomicCPUDPort::recvAtomicSnoop(PacketPtr pkt)
271{
272 DPRINTF(SimpleCPU, "received snoop pkt for addr:%#x %s\n", pkt->getAddr(),
273 pkt->cmdString());
274
275 // X86 ISA: Snooping an invalidation for monitor/mwait
276 AtomicSimpleCPU *cpu = (AtomicSimpleCPU *)(&owner);
277 if(cpu->getAddrMonitor()->doMonitor(pkt)) {
278 cpu->wakeup();
279 }
280
275 // if snoop invalidates, release any associated locks
276 if (pkt->isInvalidate()) {
277 DPRINTF(SimpleCPU, "received invalidation for addr:%#x\n",
278 pkt->getAddr());
279 TheISA::handleLockedSnoop(cpu->thread, pkt, cacheBlockMask);
280 }
281
282 return 0;
283}
284
285void
286AtomicSimpleCPU::AtomicCPUDPort::recvFunctionalSnoop(PacketPtr pkt)
287{
288 DPRINTF(SimpleCPU, "received snoop pkt for addr:%#x %s\n", pkt->getAddr(),
289 pkt->cmdString());
290
281 // if snoop invalidates, release any associated locks
282 if (pkt->isInvalidate()) {
283 DPRINTF(SimpleCPU, "received invalidation for addr:%#x\n",
284 pkt->getAddr());
285 TheISA::handleLockedSnoop(cpu->thread, pkt, cacheBlockMask);
286 }
287
288 return 0;
289}
290
291void
292AtomicSimpleCPU::AtomicCPUDPort::recvFunctionalSnoop(PacketPtr pkt)
293{
294 DPRINTF(SimpleCPU, "received snoop pkt for addr:%#x %s\n", pkt->getAddr(),
295 pkt->cmdString());
296
297 // X86 ISA: Snooping an invalidation for monitor/mwait
298 AtomicSimpleCPU *cpu = (AtomicSimpleCPU *)(&owner);
299 if(cpu->getAddrMonitor()->doMonitor(pkt)) {
300 cpu->wakeup();
301 }
302
291 // if snoop invalidates, release any associated locks
292 if (pkt->isInvalidate()) {
293 DPRINTF(SimpleCPU, "received invalidation for addr:%#x\n",
294 pkt->getAddr());
295 TheISA::handleLockedSnoop(cpu->thread, pkt, cacheBlockMask);
296 }
297}
298

--- 345 unchanged lines hidden ---
303 // if snoop invalidates, release any associated locks
304 if (pkt->isInvalidate()) {
305 DPRINTF(SimpleCPU, "received invalidation for addr:%#x\n",
306 pkt->getAddr());
307 TheISA::handleLockedSnoop(cpu->thread, pkt, cacheBlockMask);
308 }
309}
310

--- 345 unchanged lines hidden ---