diff options
author | Gabe Black <gabeblack@google.com> | 2017-05-11 14:11:28 -0700 |
---|---|---|
committer | Gabe Black <gabeblack@google.com> | 2017-05-18 16:48:09 +0000 |
commit | 41ab3e6e7e9b5a5f4427949f9a981cdf2186c88a (patch) | |
tree | 1b02f07e240b6207c83a55cc297dc0ab599ac85a /src/arch/sparc | |
parent | 9aadcc797263fc268fdd9f921ddffa473f56d78a (diff) | |
download | gem5-41ab3e6e7e9b5a5f4427949f9a981cdf2186c88a.tar.xz |
base: Refactor the GDB code.
The new version modularizes the implementation of the various commands,
gets rid of dynamic allocation of the register cache, fixes some small
style problems, and uses exceptions to simplify error handling internal to
the GDB stub.
Change-Id: Iff3548373ce4adfb99106a810f5713b769df89b2
Reviewed-on: https://gem5-review.googlesource.com/3280
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Boris Shingarov <shingarov@gmail.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'src/arch/sparc')
-rw-r--r-- | src/arch/sparc/remote_gdb.cc | 13 | ||||
-rw-r--r-- | src/arch/sparc/remote_gdb.hh | 3 |
2 files changed, 9 insertions, 7 deletions
diff --git a/src/arch/sparc/remote_gdb.cc b/src/arch/sparc/remote_gdb.cc index b7ecd3b7a..3f4df0d3a 100644 --- a/src/arch/sparc/remote_gdb.cc +++ b/src/arch/sparc/remote_gdb.cc @@ -148,7 +148,7 @@ using namespace std; using namespace SparcISA; RemoteGDB::RemoteGDB(System *_system, ThreadContext *c) - : BaseRemoteGDB(_system, c) + : BaseRemoteGDB(_system, c), regCache32(this), regCache64(this) {} /////////////////////////////////////////////////////////// @@ -248,10 +248,9 @@ RemoteGDB::BaseGdbRegCache* RemoteGDB::gdbRegs() { PSTATE pstate = context->readMiscReg(MISCREG_PSTATE); - if (pstate.am) - {DPRINTF(GDBRead, "Creating 32-bit GDB\n"); - return new SPARCGdbRegCache(this);} - else - {DPRINTF(GDBRead, "Creating 64-bit GDB\n"); - return new SPARC64GdbRegCache(this);} + if (pstate.am) { + return ®Cache32; + } else { + return ®Cache64; + } } diff --git a/src/arch/sparc/remote_gdb.hh b/src/arch/sparc/remote_gdb.hh index 543683ee8..653f0b113 100644 --- a/src/arch/sparc/remote_gdb.hh +++ b/src/arch/sparc/remote_gdb.hh @@ -94,6 +94,9 @@ class RemoteGDB : public BaseRemoteGDB const std::string name() const { return gdb->name() + ".SPARC64GdbRegCache"; } }; + SPARCGdbRegCache regCache32; + SPARC64GdbRegCache regCache64; + public: RemoteGDB(System *_system, ThreadContext *tc); BaseGdbRegCache *gdbRegs(); |