SE/FS: Make getProcessPtr available in both modes, and get rid of FULL_SYSTEMs.
authorGabe Black <gblack@eecs.umich.edu>
Sun, 30 Oct 2011 07:33:02 +0000 (00:33 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Sun, 30 Oct 2011 07:33:02 +0000 (00:33 -0700)
18 files changed:
src/arch/mips/tlb.cc
src/arch/sparc/faults.cc
src/arch/sparc/remote_gdb.cc
src/arch/sparc/utility.cc
src/arch/sparc/utility.hh
src/arch/x86/tlb.cc
src/cpu/checker/thread_context.hh
src/cpu/inorder/thread_context.cc
src/cpu/inorder/thread_context.hh
src/cpu/o3/thread_context.hh
src/cpu/o3/thread_context_impl.hh
src/cpu/ozone/cpu.hh
src/cpu/ozone/cpu_impl.hh
src/cpu/simple_thread.cc
src/cpu/thread_context.hh
src/cpu/thread_state.hh
src/kern/linux/linux.hh
src/kern/operatingsystem.hh

index e35ac6d4abdfdf8dbc53c4fa69a31ea4768f5272..52e13dfc36225281d119145abbb280cf16b66729 100644 (file)
@@ -295,182 +295,45 @@ TLB::regStats()
 Fault
 TLB::translateInst(RequestPtr req, ThreadContext *tc)
 {
-#if !FULL_SYSTEM
-    Process * p = tc->getProcessPtr();
+    if (!FullSystem) {
+        Process * p = tc->getProcessPtr();
 
-    Fault fault = p->pTable->translate(req);
-    if (fault != NoFault)
-        return fault;
+        Fault fault = p->pTable->translate(req);
+        if (fault != NoFault)
+            return fault;
 
-    return NoFault;
-#else
-    Addr vaddr = req->getVaddr();
-
-    bool misaligned = (req->getSize() - 1) & vaddr;
-
-    if (IsKSeg0(vaddr)) {
-        // Address will not be translated through TLB, set response, and go!
-        req->setPaddr(KSeg02Phys(vaddr));
-        if (getOperatingMode(tc->readMiscReg(MISCREG_STATUS)) != mode_kernel ||
-                misaligned) {
-            return new AddressErrorFault(vaddr, false);
-        }
-    } else if(IsKSeg1(vaddr)) {
-        // Address will not be translated through TLB, set response, and go!
-        req->setPaddr(KSeg02Phys(vaddr));
+        return NoFault;
     } else {
-      /* 
-       * This is an optimization - smallPages is updated every time a TLB
-       * operation is performed. That way, we don't need to look at
-       * Config3 _ SP and PageGrain _ ESP every time we do a TLB lookup
-       */
-      Addr VPN;
-      if (smallPages == 1) {
-        VPN = (vaddr >> 11);
-      } else {
-        VPN = ((vaddr >> 11) & 0xFFFFFFFC);
-      }
-      uint8_t Asid = req->getAsid();
-      if (misaligned) {
-          // Unaligned address!
-          return new AddressErrorFault(vaddr, false);
-      }
-      PTE *pte = lookup(VPN,Asid);
-      if (pte != NULL) {
-          // Ok, found something
-          /* Check for valid bits */
-          int EvenOdd;
-          bool Valid;
-          if ((((vaddr) >> pte->AddrShiftAmount) & 1) == 0) {
-              // Check even bits
-              Valid = pte->V0;
-              EvenOdd = 0;
-          } else {
-              // Check odd bits
-              Valid = pte->V1;
-              EvenOdd = 1;
-          }
-
-          if (Valid == false) {
-              return new InvalidFault(Asid, vaddr, vpn, false);
-          } else {
-              // Ok, this is really a match, set paddr
-              Addr PAddr;
-              if (EvenOdd == 0) {
-                PAddr = pte->PFN0;
-              } else {
-                PAddr = pte->PFN1;
-              }
-              PAddr >>= (pte->AddrShiftAmount - 12);
-              PAddr <<= pte->AddrShiftAmount;
-              PAddr |= (vaddr & pte->OffsetMask);
-              req->setPaddr(PAddr);
-            }
-        } else {
-            // Didn't find any match, return a TLB Refill Exception
-            return new RefillFault(Asid, vaddr, vpn, false);
-        }
+        panic("translateInst not implemented in MIPS.\n");
     }
-    return checkCacheability(req);
-#endif
 }
 
 Fault
 TLB::translateData(RequestPtr req, ThreadContext *tc, bool write)
 {
-#if !FULL_SYSTEM
-    //@TODO: This should actually use TLB instead of going directly
-    //       to the page table in syscall mode.
-    /**
-     * Check for alignment faults
-     */
-    if (req->getVaddr() & (req->getSize() - 1)) {
-        DPRINTF(TLB, "Alignment Fault on %#x, size = %d", req->getVaddr(),
-                req->getSize());
-        return new AddressErrorFault(req->getVaddr(), write);
-    }
-
-
-    Process * p = tc->getProcessPtr();
+    if (!FullSystem) {
+        //@TODO: This should actually use TLB instead of going directly
+        //       to the page table in syscall mode.
+        /**
+         * Check for alignment faults
+         */
+        if (req->getVaddr() & (req->getSize() - 1)) {
+            DPRINTF(TLB, "Alignment Fault on %#x, size = %d", req->getVaddr(),
+                    req->getSize());
+            return new AddressErrorFault(req->getVaddr(), write);
+        }
 
-    Fault fault = p->pTable->translate(req);
-    if (fault != NoFault)
-        return fault;
 
-    return NoFault;
-#else
-    Addr vaddr = req->getVaddr();
+        Process * p = tc->getProcessPtr();
 
-    bool misaligned = (req->getSize() - 1) & vaddr;
+        Fault fault = p->pTable->translate(req);
+        if (fault != NoFault)
+            return fault;
 
-    if (IsKSeg0(vaddr)) {
-        // Address will not be translated through TLB, set response, and go!
-        req->setPaddr(KSeg02Phys(vaddr));
-        if (getOperatingMode(tc->readMiscReg(MISCREG_STATUS)) != mode_kernel ||
-                misaligned) {
-            return new AddressErrorFault(vaddr, true);
-        }
-    } else if(IsKSeg1(vaddr)) {
-      // Address will not be translated through TLB, set response, and go!
-      req->setPaddr(KSeg02Phys(vaddr));
+        return NoFault;
     } else {
-        /* 
-         * This is an optimization - smallPages is updated every time a TLB
-         * operation is performed. That way, we don't need to look at
-         * Config3 _ SP and PageGrain _ ESP every time we do a TLB lookup
-         */
-        Addr VPN = (vaddr >> 11) & 0xFFFFFFFC;
-        if (smallPages == 1) {
-            VPN = vaddr >> 11;
-        }
-        uint8_t Asid = req->getAsid();
-        PTE *pte = lookup(VPN, Asid);
-        if (misaligned) {
-            return new AddressErrorFault(vaddr, true);
-        }
-        if (pte != NULL) {
-            // Ok, found something
-            /* Check for valid bits */
-            int EvenOdd;
-            bool Valid;
-            bool Dirty;
-            if ((((vaddr >> pte->AddrShiftAmount) & 1)) == 0) {
-                // Check even bits
-                Valid = pte->V0;
-                Dirty = pte->D0;
-                EvenOdd = 0;
-            } else {
-                // Check odd bits
-                Valid = pte->V1;
-                Dirty = pte->D1;
-                EvenOdd = 1;
-            }
-
-            if (Valid == false) {
-                return new InvalidFault(Asid, vaddr, VPN, true);
-            } else {
-                // Ok, this is really a match, set paddr
-                if (!Dirty) {
-                    return new TlbModifiedFault(Asid, vaddr, VPN);
-                }
-                Addr PAddr;
-                if (EvenOdd == 0) {
-                    PAddr = pte->PFN0;
-                } else {
-                    PAddr = pte->PFN1;
-                }
-                PAddr >>= (pte->AddrShiftAmount - 12);
-                PAddr <<= pte->AddrShiftAmount;
-                PAddr |= (vaddr & pte->OffsetMask);
-                req->setPaddr(PAddr);
-            }
-        } else {
-            // Didn't find any match, return a TLB Refill Exception
-            return new RefillFault(Asid, vaddr, VPN, true);
-        }
+        panic("translateData not implemented in MIPS.\n");
     }
-    return checkCacheability(req);
-#endif
 }
 
 Fault
index fb0f6acb1c24200a04fc6572f2a446e20d6d7944..584b8299c80b04fd35ee72f872552e1004b56fc6 100644 (file)
@@ -41,9 +41,9 @@
 #include "cpu/thread_context.hh"
 #if !FULL_SYSTEM
 #include "arch/sparc/process.hh"
+#endif
 #include "mem/page_table.hh"
 #include "sim/process.hh"
-#endif
 #include "sim/full_system.hh"
 
 using namespace std;
@@ -624,43 +624,43 @@ PowerOnReset::invoke(ThreadContext *tc, StaticInstPtr inst)
 void
 FastInstructionAccessMMUMiss::invoke(ThreadContext *tc, StaticInstPtr inst)
 {
-#if !FULL_SYSTEM
-    Process *p = tc->getProcessPtr();
-    TlbEntry entry;
-    bool success = p->pTable->lookup(vaddr, entry);
-    if (!success) {
-        panic("Tried to execute unmapped address %#x.\n", vaddr);
+    if (FullSystem) {
+        SparcFaultBase::invoke(tc, inst);
     } else {
-        Addr alignedVaddr = p->pTable->pageAlign(vaddr);
-        tc->getITBPtr()->insert(alignedVaddr, 0 /*partition id*/,
-                p->M5_pid /*context id*/, false, entry.pte);
+        Process *p = tc->getProcessPtr();
+        TlbEntry entry;
+        bool success = p->pTable->lookup(vaddr, entry);
+        if (!success) {
+            panic("Tried to execute unmapped address %#x.\n", vaddr);
+        } else {
+            Addr alignedVaddr = p->pTable->pageAlign(vaddr);
+            tc->getITBPtr()->insert(alignedVaddr, 0 /*partition id*/,
+                    p->M5_pid /*context id*/, false, entry.pte);
+        }
     }
-#else
-    SparcFaultBase::invoke(tc, inst);
-#endif
 }
 
 void
 FastDataAccessMMUMiss::invoke(ThreadContext *tc, StaticInstPtr inst)
 {
-#if !FULL_SYSTEM
-    Process *p = tc->getProcessPtr();
-    TlbEntry entry;
-    bool success = p->pTable->lookup(vaddr, entry);
-    if (!success) {
-        if (p->fixupStackFault(vaddr))
-            success = p->pTable->lookup(vaddr, entry);
-    }
-    if (!success) {
-        panic("Tried to access unmapped address %#x.\n", vaddr);
+    if (FullSystem) {
+        SparcFaultBase::invoke(tc, inst);
     } else {
-        Addr alignedVaddr = p->pTable->pageAlign(vaddr);
-        tc->getDTBPtr()->insert(alignedVaddr, 0 /*partition id*/,
-                p->M5_pid /*context id*/, false, entry.pte);
+        Process *p = tc->getProcessPtr();
+        TlbEntry entry;
+        bool success = p->pTable->lookup(vaddr, entry);
+        if (!success) {
+            if (p->fixupStackFault(vaddr))
+                success = p->pTable->lookup(vaddr, entry);
+        }
+        if (!success) {
+            panic("Tried to access unmapped address %#x.\n", vaddr);
+        } else {
+            Addr alignedVaddr = p->pTable->pageAlign(vaddr);
+            tc->getDTBPtr()->insert(alignedVaddr, 0 /*partition id*/,
+                    p->M5_pid /*context id*/, false, entry.pte);
+        }
     }
-#else
-    SparcFaultBase::invoke(tc, inst);
-#endif
 }
 
 void
index 712314e013e244501191bc4e6f217b5fee7bf528..ed77000fe47835fb63663e2e221614ebbcbf33f6 100644 (file)
 #include "mem/physical.hh"
 #include "mem/port.hh"
 #include "sim/byteswap.hh"
+#include "sim/full_system.hh"
 #include "sim/process.hh"
 #include "sim/system.hh"
 
@@ -156,18 +157,18 @@ RemoteGDB::acc(Addr va, size_t len)
     //@Todo In NetBSD, this function checks if all addresses
     // from va to va + len have valid page map entries. Not
     // sure how this will work for other OSes or in general.
-#if FULL_SYSTEM
-    if (va)
-        return true;
-    return false;
-#else
-    TlbEntry entry;
-    // Check to make sure the first byte is mapped into the processes address
-    // space.
-    if (context->getProcessPtr()->pTable->lookup(va, entry))
-        return true;
-    return false;
-#endif
+    if (FullSystem) {
+        if (va)
+            return true;
+        return false;
+    } else {
+        TlbEntry entry;
+        // Check to make sure the first byte is mapped into the processes
+        // address space.
+        if (context->getProcessPtr()->pTable->lookup(va, entry))
+            return true;
+        return false;
+    }
 }
 
 ///////////////////////////////////////////////////////////
index c6616f43e3b31fd4222b3b2ab36fcf25d527e299..63b8e7960d499b0771ffe7f6f8c49270070f2aa0 100644 (file)
 
 #include "arch/sparc/faults.hh"
 #include "arch/sparc/utility.hh"
-#if FULL_SYSTEM
 #include "arch/sparc/vtophys.hh"
 #include "mem/vport.hh"
-#endif
 
 namespace SparcISA {
 
@@ -48,21 +46,21 @@ namespace SparcISA {
 uint64_t
 getArgument(ThreadContext *tc, int &number, uint16_t size, bool fp)
 {
-#if FULL_SYSTEM
-    const int NumArgumentRegs = 6;
-    if (number < NumArgumentRegs) {
-        return tc->readIntReg(8 + number);
+    if (FullSystem) {
+        const int NumArgumentRegs = 6;
+        if (number < NumArgumentRegs) {
+            return tc->readIntReg(8 + number);
+        } else {
+            Addr sp = tc->readIntReg(StackPointerReg);
+            VirtualPort *vp = tc->getVirtPort();
+            uint64_t arg = vp->read<uint64_t>(sp + 92 +
+                                (number-NumArgumentRegs) * sizeof(uint64_t));
+            return arg;
+        }
     } else {
-        Addr sp = tc->readIntReg(StackPointerReg);
-        VirtualPort *vp = tc->getVirtPort();
-        uint64_t arg = vp->read<uint64_t>(sp + 92 +
-                            (number-NumArgumentRegs) * sizeof(uint64_t));
-        return arg;
+        panic("getArgument() only implemented for full system\n");
+        M5_DUMMY_RETURN
     }
-#else
-    panic("getArgument() only implemented for FULL_SYSTEM\n");
-    M5_DUMMY_RETURN
-#endif
 }
 
 void
index 76b551ac86460a3d71e3660e630a3e061726cd9a..ee94ef29ac468f580624c633245a59565c9f79f5 100644 (file)
@@ -39,6 +39,7 @@
 #include "cpu/static_inst.hh"
 #include "cpu/thread_context.hh"
 #include "sim/fault_fwd.hh"
+#include "sim/full_system.hh"
 
 namespace SparcISA
 {
@@ -73,13 +74,9 @@ void initCPU(ThreadContext *tc, int cpuId);
 inline void
 startupCPU(ThreadContext *tc, int cpuId)
 {
-#if FULL_SYSTEM
     // Other CPUs will get activated by IPIs
-    if (cpuId == 0)
+    if (cpuId == 0 || !FullSystem)
         tc->activate(0);
-#else
-    tc->activate(0);
-#endif
 }
 
 void copyRegs(ThreadContext *src, ThreadContext *dest);
index 88eb19b541ff084eb054ffc6b175a6bfe246704f..ff30697e5972fcab66d421498af9f92e05775c4e 100644 (file)
 #include "cpu/thread_context.hh"
 #include "debug/TLB.hh"
 #include "mem/packet_access.hh"
-#include "mem/request.hh"
-
-#if !FULL_SYSTEM
 #include "mem/page_table.hh"
-#include "sim/process.hh"
-#endif
-
+#include "mem/request.hh"
 #include "sim/full_system.hh"
+#include "sim/process.hh"
 
 namespace X86ISA {
 
@@ -302,7 +298,6 @@ TLB::translate(RequestPtr req, ThreadContext *tc, Translation *translation,
                     entry = lookup(vaddr);
                     assert(entry);
                 } else {
-#if !FULL_SYSTEM
                     DPRINTF(TLB, "Handling a TLB miss for "
                             "address %#x at pc %#x.\n",
                             vaddr, tc->instAddr());
@@ -326,7 +321,6 @@ TLB::translate(RequestPtr req, ThreadContext *tc, Translation *translation,
                         entry = insert(alignedVaddr, newEntry);
                     }
                     DPRINTF(TLB, "Miss was serviced.\n");
-#endif
                 }
             }
             // Do paging protection checks.
@@ -367,27 +361,29 @@ TLB::translate(RequestPtr req, ThreadContext *tc, Translation *translation,
         req->setPaddr(vaddr);
     }
     // Check for an access to the local APIC
-#if FULL_SYSTEM
-    LocalApicBase localApicBase = tc->readMiscRegNoEffect(MISCREG_APIC_BASE);
-    Addr baseAddr = localApicBase.base * PageBytes;
-    Addr paddr = req->getPaddr();
-    if (baseAddr <= paddr && baseAddr + PageBytes > paddr) {
-        // The Intel developer's manuals say the below restrictions apply,
-        // but the linux kernel, because of a compiler optimization, breaks
-        // them.
-        /*
-        // Check alignment
-        if (paddr & ((32/8) - 1))
-            return new GeneralProtection(0);
-        // Check access size
-        if (req->getSize() != (32/8))
-            return new GeneralProtection(0);
-        */
-        // Force the access to be uncacheable.
-        req->setFlags(Request::UNCACHEABLE);
-        req->setPaddr(x86LocalAPICAddress(tc->contextId(), paddr - baseAddr));
+    if (FullSystem) {
+        LocalApicBase localApicBase =
+            tc->readMiscRegNoEffect(MISCREG_APIC_BASE);
+        Addr baseAddr = localApicBase.base * PageBytes;
+        Addr paddr = req->getPaddr();
+        if (baseAddr <= paddr && baseAddr + PageBytes > paddr) {
+            // The Intel developer's manuals say the below restrictions apply,
+            // but the linux kernel, because of a compiler optimization, breaks
+            // them.
+            /*
+            // Check alignment
+            if (paddr & ((32/8) - 1))
+                return new GeneralProtection(0);
+            // Check access size
+            if (req->getSize() != (32/8))
+                return new GeneralProtection(0);
+            */
+            // Force the access to be uncacheable.
+            req->setFlags(Request::UNCACHEABLE);
+            req->setPaddr(x86LocalAPICAddress(tc->contextId(),
+                        paddr - baseAddr));
+        }
     }
-#endif
     return NoFault;
 };
 
index 94ba561f042d1b3fa023f780652a1693e3924787..8b741080b1281972cd69c495e7e9ea2e2d442249 100644 (file)
@@ -96,9 +96,8 @@ class CheckerThreadContext : public ThreadContext
 
     TheISA::Kernel::Statistics *getKernelStats()
     { return actualTC->getKernelStats(); }
-#else
-    Process *getProcessPtr() { return actualTC->getProcessPtr(); }
 #endif
+    Process *getProcessPtr() { return actualTC->getProcessPtr(); }
 
     TranslatingPort *getMemPort() { return actualTC->getMemPort(); }
 
index f5e55627c40a8e675231416bfa94567158cf62b8..8fc6ac75f6eecde6917072fb964c20db3e02e929 100644 (file)
@@ -85,11 +85,7 @@ InOrderThreadContext::takeOverFrom(ThreadContext *old_context)
 {
     // some things should already be set up
     assert(getSystemPtr() == old_context->getSystemPtr());
-#if !FULL_SYSTEM
     assert(getProcessPtr() == old_context->getProcessPtr());
-#endif
-
-
 
     // copy over functional state
     setStatus(old_context->status());
index 9b071ee5d873d4908298f91cb18ab7d4c1a20c0f..95338c05c0e38779a41beb937d25fe167d97d8ba 100644 (file)
@@ -142,10 +142,9 @@ class InOrderThreadContext : public ThreadContext
     {
         return this->thread->quiesceEvent;
     }
-#else
+#endif
     /** Returns a pointer to this thread's process. */
     Process *getProcessPtr() { return thread->getProcessPtr(); }
-#endif
 
     TranslatingPort *getMemPort() { return thread->getMemPort(); }
 
index 2688e75e12ebffb141c38e2c5e812a2701454753..145d6fd298c0ee062a39bcf4e0f11b81711bfaed 100755 (executable)
@@ -98,10 +98,9 @@ class O3ThreadContext : public ThreadContext
     { return thread->kernelStats; }
 
     virtual void connectMemPorts(ThreadContext *tc) { thread->connectMemPorts(tc); }
-#else
+#endif
     /** Returns a pointer to this thread's process. */
     virtual Process *getProcessPtr() { return thread->getProcessPtr(); }
-#endif
 
     virtual TranslatingPort *getMemPort() { return thread->getMemPort(); }
 
index 515fa5a507af4465a3e320852523cd65fc6e0060..0952465d4a79a2bb76e60dee3872adb8bdacc628 100755 (executable)
@@ -70,9 +70,8 @@ O3ThreadContext<Impl>::takeOverFrom(ThreadContext *old_context)
     // some things should already be set up
 #if FULL_SYSTEM
     assert(getSystemPtr() == old_context->getSystemPtr());
-#else
-    assert(getProcessPtr() == old_context->getProcessPtr());
 #endif
+    assert(getProcessPtr() == old_context->getProcessPtr());
 
     // copy over functional state
     setStatus(old_context->status());
index 4860dd271a68c14a7c090eeb22d5eee96ffa7941..70b46ec5f41f4b2f950232066665fb087b811ee3 100644 (file)
@@ -123,9 +123,8 @@ class OzoneCPU : public BaseCPU
 
         TheISA::Kernel::Statistics *getKernelStats()
         { return thread->getKernelStats(); }
-#else
-        Process *getProcessPtr() { return thread->getProcessPtr(); }
 #endif
+        Process *getProcessPtr() { return thread->getProcessPtr(); }
 
         TranslatingPort *getMemPort() { return thread->getMemPort(); }
 
index bb6e96ecc099592b851e3ba9c9411912a9ec30a2..724bd99a4a3ec8a1298403d4e3092c72862d63bd 100644 (file)
@@ -671,9 +671,8 @@ OzoneCPU<Impl>::OzoneTC::takeOverFrom(ThreadContext *old_context)
     // some things should already be set up
 #if FULL_SYSTEM
     assert(getSystemPtr() == old_context->getSystemPtr());
-#else
-    assert(getProcessPtr() == old_context->getProcessPtr());
 #endif
+    assert(getProcessPtr() == old_context->getProcessPtr());
 
     // copy over functional state
     setStatus(old_context->status());
index 6b9f604022af8c5823d1d3dee1ddb92c86f38032..53534a4f3886f5c992cb0cafa4b0c34f0d58ca15 100644 (file)
@@ -41,6 +41,7 @@
 #include "cpu/thread_context.hh"
 #include "mem/vport.hh"
 #include "params/BaseCPU.hh"
+#include "sim/process.hh"
 
 #if FULL_SYSTEM
 #include "arch/kernel_stats.hh"
@@ -55,7 +56,6 @@
 #include "sim/sim_exit.hh"
 #else
 #include "mem/translating_port.hh"
-#include "sim/process.hh"
 #include "sim/system.hh"
 #endif
 
@@ -123,9 +123,8 @@ SimpleThread::takeOverFrom(ThreadContext *oldContext)
     // some things should already be set up
 #if FULL_SYSTEM
     assert(system == oldContext->getSystemPtr());
-#else
-    assert(process == oldContext->getProcessPtr());
 #endif
+    assert(process == oldContext->getProcessPtr());
 
     copyState(oldContext);
 #if FULL_SYSTEM
index f43940fe3bc181108da58eb4b3ec41ed2201705f..e4e26d03c5516c163cdadd35dc044c6c5b0da2f3 100644 (file)
@@ -129,9 +129,8 @@ class ThreadContext
     virtual TheISA::Kernel::Statistics *getKernelStats() = 0;
 
     virtual void connectMemPorts(ThreadContext *tc) = 0;
-#else
-    virtual Process *getProcessPtr() = 0;
 #endif
+    virtual Process *getProcessPtr() = 0;
 
     virtual TranslatingPort *getMemPort() = 0;
 
@@ -299,9 +298,8 @@ class ProxyThreadContext : public ThreadContext
     { return actualTC->getKernelStats(); }
 
     void connectMemPorts(ThreadContext *tc) { actualTC->connectMemPorts(tc); }
-#else
-    Process *getProcessPtr() { return actualTC->getProcessPtr(); }
 #endif
+    Process *getProcessPtr() { return actualTC->getProcessPtr(); }
 
     TranslatingPort *getMemPort() { return actualTC->getMemPort(); }
 
index 10b87f02c09be039c2553dd8b968cb72f1c76081..bc16b4f9801e402afa058bfeca74edae0a73d025 100644 (file)
@@ -101,9 +101,8 @@ struct ThreadState {
     void profileSample();
 
     TheISA::Kernel::Statistics *getKernelStats() { return kernelStats; }
-#else
-    Process *getProcessPtr() { return process; }
 #endif
+    Process *getProcessPtr() { return process; }
 
     TranslatingPort *getMemPort();
 
index 7fe107139bdf7fda1baa51f0660e0d62565ae544..d816a0932ce3a69af744971f9f046ad964257e88 100644 (file)
 #include "base/types.hh"
 #include "config/full_system.hh"
 
-#if FULL_SYSTEM
-
-class Linux {};
-
-#else //!FULL_SYSTEM
-
 #include <string>
 
 #include "kern/operatingsystem.hh"
@@ -180,7 +174,4 @@ class Linux : public OperatingSystem
 
 };  // class Linux
 
-
-#endif // FULL_SYSTEM
-
 #endif // __LINUX_HH__
index 6574e3c6bb93572cc7ed67da749c0e2afcb7cfcc..fd5899cf8b701e8902411761c00d9585afe8320f 100644 (file)
 #define __KERN_OPERATINGSYSTEM_HH__
 
 #include "base/types.hh"
-#include "config/full_system.hh"
 
-#if FULL_SYSTEM
-
-class OperatingSystem {};
-
-#else //!FULL_SYSTEM
 #include <string>
 
 class LiveProcess;
@@ -128,7 +122,4 @@ class OperatingSystem {
 
 };  // class OperatingSystem
 
-
-#endif // FULL_SYSTEM
-
 #endif // __OPERATINGSYSTEM_HH__