inorder: fetch thread bug

dont check total # of threads but instead all
active threads
This commit is contained in:
Korey Sewell 2010-01-31 18:26:54 -05:00
parent 96b493d315
commit 4ea296e296
2 changed files with 9 additions and 7 deletions

View file

@ -611,7 +611,7 @@ class InOrderCPU : public BaseCPU
if (numActiveThreads() > 0)
return activeThreads.front();
else
return -1;
return InvalidThreadID;
}

View file

@ -205,11 +205,12 @@ FirstStage::processInsts(ThreadID tid)
ThreadID
FirstStage::getFetchingThread(FetchPriority &fetch_priority)
{
if (numThreads > 1) {
switch (fetch_priority) {
ThreadID num_active_threads = cpu->numActiveThreads();
if (num_active_threads > 1) {
switch (fetch_priority) {
case SingleThread:
return 0;
return cpu->activeThreadId();
case RoundRobin:
return roundRobin();
@ -217,7 +218,7 @@ FirstStage::getFetchingThread(FetchPriority &fetch_priority)
default:
return InvalidThreadID;
}
} else {
} else if (num_active_threads == 1) {
ThreadID tid = *activeThreads->begin();
if (stageStatus[tid] == Running ||
@ -226,8 +227,9 @@ FirstStage::getFetchingThread(FetchPriority &fetch_priority)
} else {
return InvalidThreadID;
}
}
} else {
return InvalidThreadID;
}
}
ThreadID