lsq_unit_impl.hh (9527:68154bc0e0ea) lsq_unit_impl.hh (9814:7ad2b0186a32)
1
1/*
2 * Copyright (c) 2010-2012 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

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

185 memDepViolator = NULL;
186
187 blockedLoadSeqNum = 0;
188
189 stalled = false;
190 isLoadBlocked = false;
191 loadBlockedHandled = false;
192
2/*
3 * Copyright (c) 2010-2012 ARM Limited
4 * All rights reserved
5 *
6 * The license below extends only to copyright in the software and shall
7 * not be construed as granting a license to any other intellectual
8 * property including but not limited to intellectual property relating
9 * to a hardware implementation of the functionality of the software

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

186 memDepViolator = NULL;
187
188 blockedLoadSeqNum = 0;
189
190 stalled = false;
191 isLoadBlocked = false;
192 loadBlockedHandled = false;
193
193 cacheBlockMask = 0;
194 cacheBlockMask = ~(cpu->cacheLineSize() - 1);
194}
195
196template<class Impl>
197std::string
198LSQUnit<Impl>::name() const
199{
200 if (Impl::MaxThreads == 1) {
201 return iewStage->name() + ".lsq";

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

414}
415
416template <class Impl>
417void
418LSQUnit<Impl>::checkSnoop(PacketPtr pkt)
419{
420 int load_idx = loadHead;
421
195}
196
197template<class Impl>
198std::string
199LSQUnit<Impl>::name() const
200{
201 if (Impl::MaxThreads == 1) {
202 return iewStage->name() + ".lsq";

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

415}
416
417template <class Impl>
418void
419LSQUnit<Impl>::checkSnoop(PacketPtr pkt)
420{
421 int load_idx = loadHead;
422
422 if (!cacheBlockMask) {
423 assert(dcachePort);
424 Addr bs = dcachePort->peerBlockSize();
425
426 // Make sure we actually got a size
427 assert(bs != 0);
428
429 cacheBlockMask = ~(bs - 1);
430 }
431
432 // Unlock the cpu-local monitor when the CPU sees a snoop to a locked
433 // address. The CPU can speculatively execute a LL operation after a pending
434 // SC operation in the pipeline and that can make the cache monitor the CPU
435 // is connected to valid while it really shouldn't be.
436 for (int x = 0; x < cpu->numActiveThreads(); x++) {
437 ThreadContext *tc = cpu->getContext(x);
438 bool no_squash = cpu->thread[x]->noSquashFromTC;
439 cpu->thread[x]->noSquashFromTC = true;

--- 854 unchanged lines hidden ---
423 // Unlock the cpu-local monitor when the CPU sees a snoop to a locked
424 // address. The CPU can speculatively execute a LL operation after a pending
425 // SC operation in the pipeline and that can make the cache monitor the CPU
426 // is connected to valid while it really shouldn't be.
427 for (int x = 0; x < cpu->numActiveThreads(); x++) {
428 ThreadContext *tc = cpu->getContext(x);
429 bool no_squash = cpu->thread[x]->noSquashFromTC;
430 cpu->thread[x]->noSquashFromTC = true;

--- 854 unchanged lines hidden ---