mshr_queue.cc (10766:b2071d0eb5f1) mshr_queue.cc (10768:9a34e28cd2c2)
1/*
2 * Copyright (c) 2012-2013, 2015 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

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

64 freeList.push_back(&registers[i]);
65 }
66}
67
68MSHR *
69MSHRQueue::findMatch(Addr blk_addr, bool is_secure) const
70{
71 for (const auto& mshr : allocatedList) {
1/*
2 * Copyright (c) 2012-2013, 2015 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

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

64 freeList.push_back(&registers[i]);
65 }
66}
67
68MSHR *
69MSHRQueue::findMatch(Addr blk_addr, bool is_secure) const
70{
71 for (const auto& mshr : allocatedList) {
72 if (mshr->blkAddr == blk_addr && mshr->isSecure == is_secure) {
72 // we ignore any MSHRs allocated for uncacheable accesses and
73 // simply ignore them when matching, in the cache we never
74 // check for matches when adding new uncacheable entries, and
75 // we do not want normal cacheable accesses being added to an
76 // MSHR serving an uncacheable access
77 if (!mshr->isUncacheable() && mshr->blkAddr == blk_addr &&
78 mshr->isSecure == is_secure) {
73 return mshr;
74 }
75 }
76 return NULL;
77}
78
79bool
80MSHRQueue::findMatches(Addr blk_addr, bool is_secure,
81 vector<MSHR*>& matches) const
82{
83 // Need an empty vector
84 assert(matches.empty());
85 bool retval = false;
86 for (const auto& mshr : allocatedList) {
79 return mshr;
80 }
81 }
82 return NULL;
83}
84
85bool
86MSHRQueue::findMatches(Addr blk_addr, bool is_secure,
87 vector<MSHR*>& matches) const
88{
89 // Need an empty vector
90 assert(matches.empty());
91 bool retval = false;
92 for (const auto& mshr : allocatedList) {
87 if (mshr->blkAddr == blk_addr && mshr->isSecure == is_secure) {
93 if (!mshr->isUncacheable() && mshr->blkAddr == blk_addr &&
94 mshr->isSecure == is_secure) {
88 retval = true;
89 matches.push_back(mshr);
90 }
91 }
92 return retval;
93}
94
95

--- 177 unchanged lines hidden ---
95 retval = true;
96 matches.push_back(mshr);
97 }
98 }
99 return retval;
100}
101
102

--- 177 unchanged lines hidden ---