3c3
< * Copyright (c) 2010-2012 ARM Limited
---
> * Copyright (c) 2010-2013 ARM Limited
435a436
> DPRINTF(LSQUnit, "Got snoop for address %#x\n", pkt->getAddr());
441c442
< for (int x = 0; x < cpu->numActiveThreads(); x++) {
---
> for (int x = 0; x < cpu->numContexts(); x++) {
448a450,460
> Addr invalidate_addr = pkt->getAddr() & cacheBlockMask;
>
> DynInstPtr ld_inst = loadQueue[load_idx];
> if (ld_inst) {
> Addr load_addr = ld_inst->physEffAddr & cacheBlockMask;
> // Check that this snoop didn't just invalidate our lock flag
> if (ld_inst->effAddrValid() && load_addr == invalidate_addr &&
> ld_inst->memReqFlags & Request::LLSC)
> TheISA::handleLockedSnoopHit(ld_inst.get());
> }
>
451a464
>
454,455d466
< DPRINTF(LSQUnit, "Got snoop for address %#x\n", pkt->getAddr());
< Addr invalidate_addr = pkt->getAddr() & cacheBlockMask;
471c482
< ld_inst->physEffAddr, pkt->getAddr(), ld_inst->seqNum);
---
> pkt->getAddr(), ld_inst->seqNum);
475a487,495
> DPRINTF(LSQUnit, "HitExternal Snoop for addr %#x [sn:%lli]\n",
> pkt->getAddr(), ld_inst->seqNum);
>
> // Make sure that we don't lose a snoop hitting a LOCKED
> // address since the LOCK* flags don't get updated until
> // commit.
> if (ld_inst->memReqFlags & Request::LLSC)
> TheISA::handleLockedSnoopHit(ld_inst.get());
>
852c872
< bool success = TheISA::handleLockedWrite(inst.get(), req);
---
> bool success = TheISA::handleLockedWrite(inst.get(), req, cacheBlockMask);