From: Ali Saidi Date: Fri, 15 Feb 2013 22:40:08 +0000 (-0500) Subject: cpu: fix case with o3 cpu blocking and unblocking decode in cycle X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7ae06a3b3bb6c5438cd9cac7f1fe5f8cdb65e07d;p=gem5.git 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. --- diff --git a/src/cpu/o3/decode_impl.hh b/src/cpu/o3/decode_impl.hh index cd226017f..f87ec0bfa 100644 --- a/src/cpu/o3/decode_impl.hh +++ b/src/cpu/o3/decode_impl.hh @@ -241,7 +241,9 @@ DefaultDecode::block(ThreadID tid) // Set the status to Blocked. decodeStatus[tid] = Blocked; - if (decodeStatus[tid] != Unblocking) { + if (toFetch->decodeUnblock[tid]) { + toFetch->decodeUnblock[tid] = false; + } else { toFetch->decodeBlock[tid] = true; wroteToTimeBuffer = true; }