stride.cc (10052:5bb8e054456b) stride.cc (10053:b0b69dbafc08)
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

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

61
62 Addr data_addr = pkt->getAddr();
63 bool is_secure = pkt->isSecure();
64 MasterID master_id = useMasterId ? pkt->req->masterId() : 0;
65 Addr pc = pkt->req->getPC();
66 assert(master_id < Max_Contexts);
67 std::list<StrideEntry*> &tab = table[master_id];
68
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

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

61
62 Addr data_addr = pkt->getAddr();
63 bool is_secure = pkt->isSecure();
64 MasterID master_id = useMasterId ? pkt->req->masterId() : 0;
65 Addr pc = pkt->req->getPC();
66 assert(master_id < Max_Contexts);
67 std::list<StrideEntry*> &tab = table[master_id];
68
69 // Revert to simple N-block ahead prefetch for instruction fetches
70 if (instTagged && pkt->req->isInstFetch()) {
71 for (int d = 1; d <= degree; d++) {
72 Addr new_addr = data_addr + d * blkSize;
73 if (pageStop && !samePage(data_addr, new_addr)) {
74 // Spanned the page, so now stop
75 pfSpanPage += degree - d + 1;
76 return;
77 }
78 DPRINTF(HWPrefetch, "queuing prefetch to %x @ %d\n",
79 new_addr, latency);
80 addresses.push_back(new_addr);
81 delays.push_back(latency);
82 }
83 return;
84 }
85
69 /* Scan Table for instAddr Match */
70 std::list<StrideEntry*>::iterator iter;
71 for (iter = tab.begin(); iter != tab.end(); iter++) {
72 // Entries have to match on the security state as well
73 if ((*iter)->instAddr == pc && (*iter)->isSecure == is_secure)
74 break;
75 }
76

--- 79 unchanged lines hidden ---
86 /* Scan Table for instAddr Match */
87 std::list<StrideEntry*>::iterator iter;
88 for (iter = tab.begin(); iter != tab.end(); iter++) {
89 // Entries have to match on the security state as well
90 if ((*iter)->instAddr == pc && (*iter)->isSecure == is_secure)
91 break;
92 }
93

--- 79 unchanged lines hidden ---