fetch_impl.hh (8821:bba1a976c293) | fetch_impl.hh (8822:e7ae13867098) |
---|---|
1/* 2 * Copyright (c) 2010-2011 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 --- 1175 unchanged lines hidden (view full) --- 1184 // Keep issuing while fetchWidth is available and branch is not 1185 // predicted taken 1186 while (numInst < fetchWidth && !predictedBranch) { 1187 1188 // We need to process more memory if we aren't going to get a 1189 // StaticInst from the rom, the current macroop, or what's already 1190 // in the predecoder. 1191 bool needMem = !inRom && !curMacroop && !predecoder.extMachInstReady(); | 1/* 2 * Copyright (c) 2010-2011 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 --- 1175 unchanged lines hidden (view full) --- 1184 // Keep issuing while fetchWidth is available and branch is not 1185 // predicted taken 1186 while (numInst < fetchWidth && !predictedBranch) { 1187 1188 // We need to process more memory if we aren't going to get a 1189 // StaticInst from the rom, the current macroop, or what's already 1190 // in the predecoder. 1191 bool needMem = !inRom && !curMacroop && !predecoder.extMachInstReady(); |
1192 fetchAddr = (thisPC.instAddr() + pcOffset) & BaseCPU::PCMask; 1193 Addr block_PC = icacheBlockAlignPC(fetchAddr); |
|
1192 1193 if (needMem) { | 1194 1195 if (needMem) { |
1196 // If buffer is no longer valid or fetchAddr has moved to point 1197 // to the next cache block then start fetch from icache. 1198 if (!cacheDataValid[tid] || block_PC != cacheDataPC[tid]) 1199 break; 1200 |
|
1194 if (blkOffset >= numInsts) { 1195 // We need to process more memory, but we've run out of the 1196 // current block. 1197 break; 1198 } 1199 1200 if (ISA_HAS_DELAY_SLOT && pcOffset == 0) { 1201 // Walk past any annulled delay slot instructions. --- 393 unchanged lines hidden --- | 1201 if (blkOffset >= numInsts) { 1202 // We need to process more memory, but we've run out of the 1203 // current block. 1204 break; 1205 } 1206 1207 if (ISA_HAS_DELAY_SLOT && pcOffset == 0) { 1208 // Walk past any annulled delay slot instructions. --- 393 unchanged lines hidden --- |