Added ability to specify system type/revision in config file. This
authorAli Saidi <saidi@eecs.umich.edu>
Tue, 1 Jun 2004 19:43:27 +0000 (15:43 -0400)
committerAli Saidi <saidi@eecs.umich.edu>
Tue, 1 Jun 2004 19:43:27 +0000 (15:43 -0400)
way a Tru64 system can be either Tlaser (by default) or Tsunami.

Added debugSymbolTable to Tru64 for symbol printing in InstExec Trace

cpu/exetrace.cc:
    Fixed bug if debugSymbolTable doesn't exist, we shouldn't try to
    look something up in it.
kern/tru64/tru64_system.hh:
    Added ability to specify system type/revision in config file. This
    way a Tru64 system can be either Tlaser (by default) or Tsunami.

--HG--
extra : convert_revision : c69a7411f0aa118ca5a766e43b7ceb7a5bb04cdf

cpu/exetrace.cc
kern/tru64/tru64_system.cc
kern/tru64/tru64_system.hh

index 0dd1d74d63f9005195d0bbf652799a0713cb3d8f..a4aaa19db053992d3f7ab7dc0f11fdb08557b644 100644 (file)
@@ -67,7 +67,7 @@ Trace::InstRecord::dump(ostream &outs)
 
 
     std::string str;
-    if (debugSymbolTable->findNearestSymbol(PC, str))
+    if ((debugSymbolTable) && (debugSymbolTable->findNearestSymbol(PC, str)))
         outs << "@" << setw(17) << str << " : ";
     else
         outs << "0x" << hex << PC << " : ";
index 31f9c9878e963bf6e8085977680552c7f97454ae..c02b4f6844aa8a06b585bdf15e56e69a8f516090 100644 (file)
 #include "targetarch/isa_traits.hh"
 #include "targetarch/vtophys.hh"
 
+extern SymbolTable *debugSymbolTable;
+
 using namespace std;
 
 Tru64System::Tru64System(const string _name, const uint64_t _init_param,
                          MemoryController *_memCtrl, PhysicalMemory *_physmem,
                          const string &kernel_path, const string &console_path,
                          const string &palcode, const string &boot_osflags,
-                         const bool _bin, const vector<string> &_binned_fns)
+                         const bool _bin, const vector<string> &_binned_fns,
+                         const uint64_t system_type, const uint64_t system_rev)
     : System(_name, _init_param, _memCtrl, _physmem, _bin,_binned_fns),
       bin(_bin), binned_fns(_binned_fns)
 {
     kernelSymtab = new SymbolTable;
     consoleSymtab = new SymbolTable;
+    debugSymbolTable = kernelSymtab;
 
     ObjectFile *kernel = createObjectFile(kernel_path);
     if (kernel == NULL)
@@ -130,8 +134,8 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param,
         char *hwprb = (char *)physmem->dma_addr(paddr, sizeof(uint64_t));
 
         if (hwprb) {
-            *(uint64_t*)(hwprb+0x50) = 12;      // Tlaser
-            *(uint64_t*)(hwprb+0x58) = (2<<1);
+            *(uint64_t*)(hwprb+0x50) = system_type;
+            *(uint64_t*)(hwprb+0x58) = system_rev;
         }
         else
             panic("could not translate hwprb addr to set system type/variation\n");
@@ -260,6 +264,8 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(Tru64System)
     Param<string> pal_code;
     Param<string> boot_osflags;
     VectorParam<string> binned_fns;
+    Param<uint64_t> system_type;
+    Param<uint64_t> system_rev;
 
 END_DECLARE_SIM_OBJECT_PARAMS(Tru64System)
 
@@ -274,7 +280,10 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(Tru64System)
     INIT_PARAM(pal_code, "file that contains palcode"),
     INIT_PARAM_DFLT(boot_osflags, "flags to pass to the kernel during boot",
                     "a"),
-    INIT_PARAM(binned_fns, "functions to be broken down and binned")
+    INIT_PARAM(binned_fns, "functions to be broken down and binned"),
+    INIT_PARAM_DFLT(system_type, "Type of system we are emulating", 12),
+    INIT_PARAM_DFLT(system_rev, "Revision of system we are emulating", 2<<1)
+
 
 END_INIT_SIM_OBJECT_PARAMS(Tru64System)
 
@@ -283,7 +292,7 @@ CREATE_SIM_OBJECT(Tru64System)
     Tru64System *sys = new Tru64System(getInstanceName(), init_param, mem_ctl,
                                        physmem, kernel_code, console_code,
                                        pal_code, boot_osflags, bin,
-                                       binned_fns);
+                                       binned_fns, system_type, system_rev);
 
     return sys;
 }
index 144febbf9379c724707d826dc0b54bac9f68372f..b97f7760c01a91a17d986bc06fa4afd4927b9309 100644 (file)
@@ -89,7 +89,9 @@ class Tru64System : public System
                 const std::string &palcode,
                 const std::string &boot_osflags,
                 const bool _bin,
-                const std::vector<string> &binned_fns);
+                const std::vector<string> &binned_fns,
+        const uint64_t system_type,
+        const uint64_t system_rev);
     ~Tru64System();
 
     int registerExecContext(ExecContext *xc);