remote_gdb.hh (11176:741b3059946e) | remote_gdb.hh (11274:d9a0136ab8cc) |
---|---|
1/* | 1/* |
2 * Copyright (c) 2015 LabWare |
|
2 * Copyright (c) 2002-2005 The Regents of The University of Michigan 3 * Copyright (c) 2007-2008 The Florida State University 4 * Copyright (c) 2009 The University of Edinburgh 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions are 9 * met: redistributions of source code must retain the above copyright --- 15 unchanged lines hidden (view full) --- 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * 30 * Authors: Nathan Binkert 31 * Stephen Hines 32 * Timothy M. Jones | 3 * Copyright (c) 2002-2005 The Regents of The University of Michigan 4 * Copyright (c) 2007-2008 The Florida State University 5 * Copyright (c) 2009 The University of Edinburgh 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions are 10 * met: redistributions of source code must retain the above copyright --- 15 unchanged lines hidden (view full) --- 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 * 31 * Authors: Nathan Binkert 32 * Stephen Hines 33 * Timothy M. Jones |
34 * Boris Shingarov |
|
33 */ 34 35#ifndef __ARCH_POWER_REMOTE_GDB_HH__ 36#define __ARCH_POWER_REMOTE_GDB_HH__ 37 38#include "arch/power/registers.hh" 39#include "arch/power/remote_gdb.hh" 40#include "base/remote_gdb.hh" 41 42namespace PowerISA 43{ 44 | 35 */ 36 37#ifndef __ARCH_POWER_REMOTE_GDB_HH__ 38#define __ARCH_POWER_REMOTE_GDB_HH__ 39 40#include "arch/power/registers.hh" 41#include "arch/power/remote_gdb.hh" 42#include "base/remote_gdb.hh" 43 44namespace PowerISA 45{ 46 |
45const int GDB_REG_BYTES = 46 NumIntArchRegs * 4 + 47 NumFloatArchRegs * 8 + 48 4 + /* PC */ 49 4 + /* MSR */ 50 4 + /* CR */ 51 4 + /* LR */ 52 4 + /* CTR */ 53 4; /* XER */ 54const int GdbFirstGPRIndex = 0; 55const int GdbFirstFPRIndex = 16; 56const int GdbPCIndex = 96; 57const int GdbMSRIndex = 97; 58const int GdbCRIndex = 98; 59const int GdbLRIndex = 99; 60const int GdbCTRIndex = 100; 61const int GdbXERIndex = 101; | |
62 63class RemoteGDB : public BaseRemoteGDB 64{ | 47 48class RemoteGDB : public BaseRemoteGDB 49{ |
65 public: 66 RemoteGDB(System *_system, ThreadContext *tc); | |
67 protected: 68 bool acc(Addr addr, size_t len); | 50 protected: 51 bool acc(Addr addr, size_t len); |
69 void getregs(); 70 void setregs(); | 52 53 class PowerGdbRegCache : public BaseGdbRegCache 54 { 55 using BaseGdbRegCache::BaseGdbRegCache; 56 private: 57 struct { 58 uint32_t gpr[NumIntArchRegs]; 59 uint64_t fpr[NumFloatArchRegs]; 60 uint32_t pc; 61 uint32_t msr; 62 uint32_t cr; 63 uint32_t lr; 64 uint32_t ctr; 65 uint32_t xer; 66 } r; 67 public: 68 char *data() const { return (char *)&r; } 69 size_t size() const { return sizeof(r); } 70 void getRegs(ThreadContext*); 71 void setRegs(ThreadContext*) const; 72 const std::string name() const { return gdb->name() + ".PowerGdbRegCache"; } 73 }; 74 75 76 public: 77 RemoteGDB(System *_system, ThreadContext *tc); 78 BaseGdbRegCache *gdbRegs(); |
71}; 72 73} // namespace PowerISA 74 75#endif /* __ARCH_POWER_REMOTE_GDB_H__ */ | 79}; 80 81} // namespace PowerISA 82 83#endif /* __ARCH_POWER_REMOTE_GDB_H__ */ |