iew_impl.hh (3126:756092c6383c) iew_impl.hh (3221:669a04468c0d)
1/*
2 * Copyright (c) 2004-2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 586 unchanged lines hidden (view full) ---

595{
596 instQueue.replayMemInst(inst);
597}
598
599template<class Impl>
600void
601DefaultIEW<Impl>::instToCommit(DynInstPtr &inst)
602{
1/*
2 * Copyright (c) 2004-2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 586 unchanged lines hidden (view full) ---

595{
596 instQueue.replayMemInst(inst);
597}
598
599template<class Impl>
600void
601DefaultIEW<Impl>::instToCommit(DynInstPtr &inst)
602{
603 // This function should not be called after writebackInsts in a
604 // single cycle. That will cause problems with an instruction
605 // being added to the queue to commit without being processed by
606 // writebackInsts prior to being sent to commit.
607
603 // First check the time slot that this instruction will write
604 // to. If there are free write ports at the time, then go ahead
605 // and write the instruction to that time. If there are not,
606 // keep looking back to see where's the first time there's a
607 // free slot.
608 while ((*iewQueue)[wbCycle].insts[wbNumInst]) {
609 ++wbNumInst;
610 if (wbNumInst == wbWidth) {

--- 670 unchanged lines hidden (view full) ---

1281 // If the store had a fault then it may not have a mem req
1282 if (!inst->isStoreConditional() && fault == NoFault) {
1283 inst->setExecuted();
1284
1285 instToCommit(inst);
1286 } else if (fault != NoFault) {
1287 // If the instruction faulted, then we need to send it along to commit
1288 // without the instruction completing.
608 // First check the time slot that this instruction will write
609 // to. If there are free write ports at the time, then go ahead
610 // and write the instruction to that time. If there are not,
611 // keep looking back to see where's the first time there's a
612 // free slot.
613 while ((*iewQueue)[wbCycle].insts[wbNumInst]) {
614 ++wbNumInst;
615 if (wbNumInst == wbWidth) {

--- 670 unchanged lines hidden (view full) ---

1286 // If the store had a fault then it may not have a mem req
1287 if (!inst->isStoreConditional() && fault == NoFault) {
1288 inst->setExecuted();
1289
1290 instToCommit(inst);
1291 } else if (fault != NoFault) {
1292 // If the instruction faulted, then we need to send it along to commit
1293 // without the instruction completing.
1294 DPRINTF(IEW, "Store has fault! [sn:%lli]\n", inst->seqNum);
1289
1290 // Send this instruction to commit, also make sure iew stage
1291 // realizes there is activity.
1292 inst->setExecuted();
1293
1294 instToCommit(inst);
1295 activityThisCycle();
1296 }

--- 301 unchanged lines hidden ---
1295
1296 // Send this instruction to commit, also make sure iew stage
1297 // realizes there is activity.
1298 inst->setExecuted();
1299
1300 instToCommit(inst);
1301 activityThisCycle();
1302 }

--- 301 unchanged lines hidden ---