ARM: Improve printing of uop disassembly.
authorMin Kyu Jeong <minkyu.jeong@arm.com>
Mon, 23 Aug 2010 16:18:42 +0000 (11:18 -0500)
committerMin Kyu Jeong <minkyu.jeong@arm.com>
Mon, 23 Aug 2010 16:18:42 +0000 (11:18 -0500)
src/arch/arm/insts/macromem.cc
src/arch/arm/insts/macromem.hh
src/cpu/o3/fetch_impl.hh

index e47f4c21cf021c27b92bb33adbe3f77b12a2eca1..2a2412912ebb05430b7f1ccdcda6102ca9f43506 100644 (file)
@@ -215,4 +215,31 @@ MacroVFPMemOp::MacroVFPMemOp(const char *mnem, ExtMachInst machInst,
     }
 }
 
+std::string
+MicroIntOp::generateDisassembly(Addr pc, const SymbolTable *symtab) const
+{
+    std::stringstream ss;
+    printMnemonic(ss);
+    printReg(ss, ura);
+    ss << ", ";
+    printReg(ss, urb);
+    ss << ", ";
+    ccprintf(ss, "#%d", imm);
+    return ss.str();
+}
+
+std::string
+MicroMemOp::generateDisassembly(Addr pc, const SymbolTable *symtab) const
+{
+    std::stringstream ss;
+    printMnemonic(ss);
+    printReg(ss, ura);
+    ss << ", [";
+    printReg(ss, urb);
+    ss << ", ";
+    ccprintf(ss, "#%d", imm);
+    ss << "]";
+    return ss.str();
+}
+
 }
index f2d4f9276340fa28c98f342245286b98dab40db5..003f5a3fd0cdae62061bb88631a31aec16b88843 100644 (file)
@@ -94,6 +94,8 @@ class MicroIntOp : public MicroOp
               ura(_ura), urb(_urb), imm(_imm)
     {
     }
+
+    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
 };
 
 /**
@@ -111,6 +113,8 @@ class MicroMemOp : public MicroIntOp
               up(_up), memAccessFlags(TLB::MustBeOne | TLB::AlignWord)
     {
     }
+
+    std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
 };
 
 /**
index e6815ef8aa6085b81d080d46674bfd2ffdf945fb..59149c8c37a4cabb2e2b83a3689c9f9ffe4d94dc 100644 (file)
@@ -1162,7 +1162,8 @@ DefaultFetch<Impl>::fetch(bool &status_change)
 #if TRACING_ON
                 instruction->traceData =
                     cpu->getTracer()->getInstRecord(curTick, cpu->tcBase(tid),
-                            instruction->staticInst, instruction->readPC());
+                            instruction->staticInst, instruction->readPC(),
+                            macroop, instruction->readMicroPC());
 #else
                 instruction->traceData = NULL;
 #endif