arch,base,cpu,kerm,sim: Build a symbol table for object files.
[gem5.git] / src / arch / sparc / fs_workload.hh
index 2ffc06a64f88648490c7d1a426ac27d78248ae35..5a054855000847f69bdc2b6908554413862328ca 100644 (file)
 #ifndef __ARCH_SPARC_FS_WORKLOAD_HH__
 #define __ARCH_SPARC_FS_WORKLOAD_HH__
 
+#include "arch/sparc/faults.hh"
 #include "params/SparcFsWorkload.hh"
-#include "sim/os_kernel.hh"
+#include "sim/workload.hh"
 
 namespace SparcISA
 {
 
-class FsWorkload : public OsKernel
+class FsWorkload : public Workload
 {
+  protected:
+    Loader::SymbolTable defaultSymtab;
+
   public:
-    FsWorkload(SparcFsWorkloadParams *p) : OsKernel(*p) {}
+    FsWorkload(SparcFsWorkloadParams *params) : Workload(params) {}
     void initState() override;
+
+    Addr
+    getEntry() const override
+    {
+        Addr pc, npc;
+        getREDVector(0x001, pc, npc);
+        return pc;
+    }
+    Loader::Arch getArch() const override { return Loader::SPARC64; }
+
+    const Loader::SymbolTable &
+    symtab(ThreadContext *tc) override
+    {
+        return defaultSymtab;
+    }
+
+    bool
+    insertSymbol(const Loader::Symbol &symbol) override
+    {
+        return defaultSymtab.insert(symbol);
+    }
 };
 
 } // namespace SparcISA