summaryrefslogtreecommitdiff
path: root/src/arch/arm/remote_gdb.hh
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2014-12-05 22:37:03 -0800
committerGabe Black <gabeblack@google.com>2014-12-05 22:37:03 -0800
commit4a8a0a07982b7896127d0cb723fde08b3825bb48 (patch)
tree32274c02ae9dca6d6ebad156e559c9afcc44cabb /src/arch/arm/remote_gdb.hh
parentfb07d43b1a4a903fb2e51b41685eb5814d9f9e11 (diff)
downloadgem5-4a8a0a07982b7896127d0cb723fde08b3825bb48.tar.xz
misc: Generalize GDB single stepping.
The new single stepping implementation for x86 doesn't rely on any ISA specific properties or functionality. This change pulls out the per ISA implementation of those functions and promotes the X86 implementation to the base class. One drawback of that implementation is that the CPU might stop on an instruction twice if it's affected by both breakpoints and single stepping. While that might be a little surprising, it's harmless and would only happen under somewhat unlikely circumstances.
Diffstat (limited to 'src/arch/arm/remote_gdb.hh')
-rw-r--r--src/arch/arm/remote_gdb.hh22
1 files changed, 7 insertions, 15 deletions
diff --git a/src/arch/arm/remote_gdb.hh b/src/arch/arm/remote_gdb.hh
index 423ba9d02..80a0bf1b1 100644
--- a/src/arch/arm/remote_gdb.hh
+++ b/src/arch/arm/remote_gdb.hh
@@ -80,23 +80,15 @@ const int GDB_REG_BYTES = std::max(GDB64_NUMREGS * sizeof(uint64_t),
class RemoteGDB : public BaseRemoteGDB
{
+ protected:
+ bool acc(Addr addr, size_t len);
+ bool write(Addr addr, size_t size, const char *data);
-protected:
- Addr notTakenBkpt;
- Addr takenBkpt;
+ void getregs();
+ void setregs();
-protected:
- bool acc(Addr addr, size_t len);
- bool write(Addr addr, size_t size, const char *data);
-
- void getregs();
- void setregs();
-
- void clearSingleStep();
- void setSingleStep();
-
-public:
- RemoteGDB(System *_system, ThreadContext *tc);
+ public:
+ RemoteGDB(System *_system, ThreadContext *tc);
};
} // namespace ArmISA