arm: Correctly display disassembly of vldmia/vstmia
authorCurtis Dunham <Curtis.Dunham@arm.com>
Wed, 23 Apr 2014 09:18:30 +0000 (05:18 -0400)
committerCurtis Dunham <Curtis.Dunham@arm.com>
Wed, 23 Apr 2014 09:18:30 +0000 (05:18 -0400)
The MicroMemOp class generates the disassembly for both integer
and floating point instructions, but it would always print its
first operand as an integer register without considering that the
op may be a floating instruction in which case a float register
should be displayed instead.

src/arch/arm/insts/macromem.cc

index 42cb98a7ca2b1e20307d2d9cb7805b39652e58b8..cd77d6d5f4d7e047369ac2003dc0d4c64eab44ec 100644 (file)
@@ -1483,7 +1483,10 @@ MicroMemOp::generateDisassembly(Addr pc, const SymbolTable *symtab) const
 {
     std::stringstream ss;
     printMnemonic(ss);
-    printReg(ss, ura);
+    if (isFloating())
+        printReg(ss, ura + FP_Reg_Base);
+    else
+        printReg(ss, ura);
     ss << ", [";
     printReg(ss, urb);
     ss << ", ";