cpu: fix case with o3 cpu blocking and unblocking decode in cycle
Fix a case in the O3 CPU where the decode stage blocks and unblocks in a single cycle sending both signals to fetch which causes an assert or worse. The previous check could never work before since the status was set to Blocked before a test for the status being Unblocking was executed.
This commit is contained in:
parent
b84bd3028c
commit
7ae06a3b3b
1 changed files with 3 additions and 1 deletions
|
@ -241,7 +241,9 @@ DefaultDecode<Impl>::block(ThreadID tid)
|
||||||
// Set the status to Blocked.
|
// Set the status to Blocked.
|
||||||
decodeStatus[tid] = Blocked;
|
decodeStatus[tid] = Blocked;
|
||||||
|
|
||||||
if (decodeStatus[tid] != Unblocking) {
|
if (toFetch->decodeUnblock[tid]) {
|
||||||
|
toFetch->decodeUnblock[tid] = false;
|
||||||
|
} else {
|
||||||
toFetch->decodeBlock[tid] = true;
|
toFetch->decodeBlock[tid] = true;
|
||||||
wroteToTimeBuffer = true;
|
wroteToTimeBuffer = true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue