SCons: centralize the Dir() workaround for newer versions of scons.
[gem5.git] / src / arch / sparc / remote_gdb.hh
index 6ac4f296f5a0ad7c70b623c17dde0493b9d3e4d4..47e29ac02e0a3c5f032f72cac4ce04ff61522f07 100644 (file)
  * Authors: Nathan Binkert
  */
 
-#ifndef __ARCH_ALPHA_REMOTE_GDB_HH__
-#define __ARCH_ALPHA_REMOTE_GDB_HH__
+#ifndef __ARCH_SPARC_REMOTE_GDB_HH__
+#define __ARCH_SPARC_REMOTE_GDB_HH__
 
 #include <map>
 
-#include "arch/types.hh"
+#include "arch/sparc/types.hh"
 #include "base/remote_gdb.hh"
 #include "cpu/pc_event.hh"
 #include "base/pollevent.hh"
@@ -46,34 +46,22 @@ namespace SparcISA
 {
     class RemoteGDB : public BaseRemoteGDB
     {
-      private:
-        friend void debugger();
-        friend class GDBListener;
-
       protected:
-        class Event : public PollEvent
+        enum RegisterConstants
         {
-          protected:
-            RemoteGDB *gdb;
-
-          public:
-            Event(RemoteGDB *g, int fd, int e);
-            void process(int revent);
+            RegG0 = 0, RegO0 = 8, RegL0 = 16, RegI0 = 24,
+            RegF0 = 32,
+            RegPc = 64, RegNpc, RegState, RegFsr, RegFprs, RegY,
+            /*RegState contains data in same format as tstate */
+            Reg32Y = 64, Reg32Psr = 65, Reg32Tbr = 66, Reg32Pc = 67,
+            Reg32Npc = 68, Reg32Fsr = 69, Reg32Csr = 70,
+            NumGDBRegs
         };
 
-        friend class Event;
-        Event *event;
-
-      protected:
-        // Machine memory
-        bool write(Addr addr, size_t size, const char *data);
-
       public:
         RemoteGDB(System *system, ThreadContext *context);
-        ~RemoteGDB();
 
         bool acc(Addr addr, size_t len);
-        int signal(int type);
 
       protected:
         void getregs();
@@ -82,48 +70,8 @@ namespace SparcISA
         void clearSingleStep();
         void setSingleStep();
 
-        PCEventQueue *getPcEventQueue();
-
-      protected:
-        class HardBreakpoint : public PCEvent
-        {
-          private:
-            RemoteGDB *gdb;
-
-          public:
-            int refcount;
-
-          public:
-            HardBreakpoint(RemoteGDB *_gdb, Addr addr);
-            std::string name() { return gdb->name() + ".hwbkpt"; }
-
-            virtual void process(ThreadContext *tc);
-        };
-        friend class HardBreakpoint;
-
-        typedef std::map<Addr, HardBreakpoint *> break_map_t;
-        typedef break_map_t::iterator break_iter_t;
-        break_map_t hardBreakMap;
-
-        bool insertSoftBreak(Addr addr, size_t len);
-        bool removeSoftBreak(Addr addr, size_t len);
-        bool insertHardBreak(Addr addr, size_t len);
-        bool removeHardBreak(Addr addr, size_t len);
-
-      protected:
-        struct TempBreakpoint {
-            Addr       address;                // set here
-            MachInst   bkpt_inst;              // saved instruction at bkpt
-            int                init_count;             // number of times to skip bkpt
-            int                count;                  // current count
-        };
-
-        TempBreakpoint notTakenBkpt;
-        TempBreakpoint takenBkpt;
-
-        void clearTempBreakpoint(TempBreakpoint &bkpt);
-        void setTempBreakpoint(TempBreakpoint &bkpt, Addr addr);
+        Addr nextBkpt;
     };
 }
 
-#endif /* __ARCH_ALPHA_REMOTE_GDB_H__ */
+#endif /* __ARCH_SPARC_REMOTE_GDB_H__ */