Remove some #if FULL_SYSTEMs so MP stuff works even in SE mode.
authorKevin Lim <ktlim@umich.edu>
Tue, 26 Dec 2006 06:43:18 +0000 (01:43 -0500)
committerKevin Lim <ktlim@umich.edu>
Tue, 26 Dec 2006 06:43:18 +0000 (01:43 -0500)
--HG--
extra : convert_revision : 5c334ec806305451b3883c7fd0ed9cd695c038bc

src/cpu/o3/commit_impl.hh
src/cpu/o3/iew_impl.hh
src/cpu/o3/lsq_unit.hh

index d8236f077d311f0c6ca2d564de8a10eaaad845ea..c3c4983c53f606ec5615ec7a9ed3a6efe2c1c5c1 100644 (file)
@@ -988,20 +988,19 @@ DefaultCommit<Impl>::commitHead(DynInstPtr &head_inst, unsigned inst_num)
                     "instruction [sn:%lli] at the head of the ROB, PC %#x.\n",
                     head_inst->seqNum, head_inst->readPC());
 
-#if !FULL_SYSTEM
             // Hack to make sure syscalls/memory barriers/quiesces
             // aren't executed until all stores write back their data.
             // This direct communication shouldn't be used for
             // anything other than this.
-            if (inst_num > 0 || iewStage->hasStoresToWB())
-#else
             if ((head_inst->isMemBarrier() || head_inst->isWriteBarrier() ||
                     head_inst->isQuiesce()) &&
                 iewStage->hasStoresToWB())
-#endif
             {
                 DPRINTF(Commit, "Waiting for all stores to writeback.\n");
                 return false;
+            } else if (inst_num > 0) {
+                DPRINTF(Commit, "Waiting to become head of commit.\n");
+                return false;
             }
 
             toIEW->commitInfo[tid].nonSpecSeqNum = head_inst->seqNum;
index d239bd9513b7dc77f0b36f72cd34eefffa52291d..a8962f2f720535513e5c3bf049493e078392fa32 100644 (file)
@@ -1124,13 +1124,11 @@ DefaultIEW<Impl>::dispatchInsts(unsigned tid)
             }
 
             toRename->iewInfo[tid].dispatchedToLSQ++;
-#if FULL_SYSTEM
         } else if (inst->isMemBarrier() || inst->isWriteBarrier()) {
             // Same as non-speculative stores.
             inst->setCanCommit();
             instQueue.insertBarrier(inst);
             add_to_iq = false;
-#endif
         } else if (inst->isNonSpeculative()) {
             DPRINTF(IEW, "[tid:%i]: Issue: Nonspeculative instruction "
                     "encountered, skipping.\n", tid);
index a2e11173e38701ee439bf1abd1f423fcf12651fd..14f9d50313df2bcefa973f45a6dff74ea2d918d9 100644 (file)
@@ -509,7 +509,6 @@ LSQUnit<Impl>::read(Request *req, T &data, int load_idx)
             "storeHead: %i addr: %#x\n",
             load_idx, store_idx, storeHead, req->getPaddr());
 
-#if FULL_SYSTEM
     if (req->isLocked()) {
         // Disable recording the result temporarily.  Writing to misc
         // regs normally updates the result, but this is not the
@@ -518,7 +517,6 @@ LSQUnit<Impl>::read(Request *req, T &data, int load_idx)
         TheISA::handleLockedRead(load_inst.get(), req);
         load_inst->recordResult = true;
     }
-#endif
 
     while (store_idx != -1) {
         // End once we've reached the top of the LSQ