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 --- |