diff -r 5b2c41112e62 -r b0201499d299 src/arch/arm/isa/insts/misc.isa --- a/src/arch/arm/isa/insts/misc.isa Fri Aug 13 11:52:37 2010 -0500 +++ b/src/arch/arm/isa/insts/misc.isa Fri Aug 13 11:53:01 2010 -0500 @@ -63,7 +63,8 @@ mrsCpsrCode = "Dest = (Cpsr | CondCodes) & 0xF8FF03DF" mrsCpsrIop = InstObjParams("mrs", "MrsCpsr", "MrsOp", { "code": mrsCpsrCode, - "predicate_test": condPredicateTest }, []) + "predicate_test": condPredicateTest }, + ["IsSerializeAfter"]) header_output += MrsDeclare.subst(mrsCpsrIop) decoder_output += MrsConstructor.subst(mrsCpsrIop) exec_output += PredOpExecute.subst(mrsCpsrIop) @@ -71,7 +72,8 @@ mrsSpsrCode = "Dest = Spsr" mrsSpsrIop = InstObjParams("mrs", "MrsSpsr", "MrsOp", { "code": mrsSpsrCode, - "predicate_test": predicateTest }, []) + "predicate_test": predicateTest }, + ["IsSerializeAfter"]) header_output += MrsDeclare.subst(mrsSpsrIop) decoder_output += MrsConstructor.subst(mrsSpsrIop) exec_output += PredOpExecute.subst(mrsSpsrIop) @@ -85,7 +87,8 @@ ''' msrCpsrRegIop = InstObjParams("msr", "MsrCpsrReg", "MsrRegOp", { "code": msrCpsrRegCode, - "predicate_test": condPredicateTest }, []) + "predicate_test": condPredicateTest }, + ["IsSerializeAfter"]) header_output += MsrRegDeclare.subst(msrCpsrRegIop) decoder_output += MsrRegConstructor.subst(msrCpsrRegIop) exec_output += PredOpExecute.subst(msrCpsrRegIop) @@ -93,7 +96,8 @@ msrSpsrRegCode = "Spsr = spsrWriteByInstr(Spsr, Op1, byteMask, false);" msrSpsrRegIop = InstObjParams("msr", "MsrSpsrReg", "MsrRegOp", { "code": msrSpsrRegCode, - "predicate_test": predicateTest }, []) + "predicate_test": predicateTest }, + ["IsSerializeAfter"]) header_output += MsrRegDeclare.subst(msrSpsrRegIop) decoder_output += MsrRegConstructor.subst(msrSpsrRegIop) exec_output += PredOpExecute.subst(msrSpsrRegIop) @@ -107,7 +111,8 @@ ''' msrCpsrImmIop = InstObjParams("msr", "MsrCpsrImm", "MsrImmOp", { "code": msrCpsrImmCode, - "predicate_test": condPredicateTest }, []) + "predicate_test": condPredicateTest }, + ["IsSerializeAfter"]) header_output += MsrImmDeclare.subst(msrCpsrImmIop) decoder_output += MsrImmConstructor.subst(msrCpsrImmIop) exec_output += PredOpExecute.subst(msrCpsrImmIop) @@ -115,7 +120,8 @@ msrSpsrImmCode = "Spsr = spsrWriteByInstr(Spsr, imm, byteMask, false);" msrSpsrImmIop = InstObjParams("msr", "MsrSpsrImm", "MsrImmOp", { "code": msrSpsrImmCode, - "predicate_test": predicateTest }, []) + "predicate_test": predicateTest }, + ["IsSerializeAfter"]) header_output += MsrImmDeclare.subst(msrSpsrImmIop) decoder_output += MsrImmConstructor.subst(msrSpsrImmIop) exec_output += PredOpExecute.subst(msrSpsrImmIop) diff -r 5b2c41112e62 -r b0201499d299 src/cpu/base_dyn_inst_impl.hh --- a/src/cpu/base_dyn_inst_impl.hh Fri Aug 13 11:52:37 2010 -0500 +++ b/src/cpu/base_dyn_inst_impl.hh Fri Aug 13 11:53:01 2010 -0500 @@ -321,6 +321,8 @@ void BaseDynInst::markSrcRegReady() { + DPRINTF(IQ, "[sn:%lli] has %d ready out of %d sources. RTI %d)\n", + seqNum, readyRegs+1, numSrcRegs(), readyToIssue()); if (++readyRegs == numSrcRegs()) { setCanIssue(); } diff -r 5b2c41112e62 -r b0201499d299 src/cpu/o3/iew_impl.hh --- a/src/cpu/o3/iew_impl.hh Fri Aug 13 11:52:37 2010 -0500 +++ b/src/cpu/o3/iew_impl.hh Fri Aug 13 11:53:01 2010 -0500 @@ -1192,6 +1192,7 @@ } // Uncomment this if you want to see all available instructions. + // FIXME: doesn't work // printAvailableInsts(); // Execute/writeback any instructions that are available. diff -r 5b2c41112e62 -r b0201499d299 src/cpu/o3/inst_queue_impl.hh --- a/src/cpu/o3/inst_queue_impl.hh Fri Aug 13 11:52:37 2010 -0500 +++ b/src/cpu/o3/inst_queue_impl.hh Fri Aug 13 11:53:01 2010 -0500 @@ -896,6 +896,8 @@ // handled by the IQ and thus have no dependency graph entry. // @todo Figure out a cleaner way to handle this. if (dest_reg >= numPhysRegs) { + DPRINTF(IQ, "dest_reg :%d, numPhysRegs: %d\n", dest_reg, + numPhysRegs); continue; } @@ -907,8 +909,8 @@ DynInstPtr dep_inst = dependGraph.pop(dest_reg); while (dep_inst) { - DPRINTF(IQ, "Waking up a dependent instruction, PC%#x.\n", - dep_inst->readPC()); + DPRINTF(IQ, "Waking up a dependent instruction, [sn:%lli] " + "PC%#x.\n", dep_inst->seqNum, dep_inst->readPC()); // Might want to give more information to the instruction // so that it knows which of its source registers is