remote_gdb.hh (10601:6efb37480d87) 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 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;
9 * redistributions in binary form must reproduce the above copyright

--- 11 unchanged lines hidden (view full) ---

21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 * Authors: Nathan Binkert
3 * Copyright (c) 2002-2005 The Regents of The University of Michigan
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met: redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer;
10 * redistributions in binary form must reproduce the above copyright

--- 11 unchanged lines hidden (view full) ---

22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 *
29 * Authors: Nathan Binkert
30 * Boris Shingarov
29 */
30
31#ifndef __ARCH_ALPHA_REMOTE_GDB_HH__
32#define __ARCH_ALPHA_REMOTE_GDB_HH__
33
34#include <map>
35
31 */
32
33#ifndef __ARCH_ALPHA_REMOTE_GDB_HH__
34#define __ARCH_ALPHA_REMOTE_GDB_HH__
35
36#include <map>
37
36#include "arch/alpha/kgdb.h"
37#include "arch/alpha/types.hh"
38#include "base/pollevent.hh"
39#include "base/remote_gdb.hh"
40#include "base/socket.hh"
41#include "cpu/pc_event.hh"
42
43class System;
44class ThreadContext;
45
46namespace AlphaISA {
47
48class RemoteGDB : public BaseRemoteGDB
49{
50 protected:
38#include "arch/alpha/types.hh"
39#include "base/pollevent.hh"
40#include "base/remote_gdb.hh"
41#include "base/socket.hh"
42#include "cpu/pc_event.hh"
43
44class System;
45class ThreadContext;
46
47namespace AlphaISA {
48
49class RemoteGDB : public BaseRemoteGDB
50{
51 protected:
51 void getregs();
52 void setregs();
53
54 // Machine memory
55 bool acc(Addr addr, size_t len);
56 bool write(Addr addr, size_t size, const char *data);
57
58 bool insertHardBreak(Addr addr, size_t len);
59
52 // Machine memory
53 bool acc(Addr addr, size_t len);
54 bool write(Addr addr, size_t size, const char *data);
55
56 bool insertHardBreak(Addr addr, size_t len);
57
58 class AlphaGdbRegCache : public BaseGdbRegCache
59 {
60 using BaseGdbRegCache::BaseGdbRegCache;
61 private:
62 struct {
63 uint64_t gpr[32];
64 uint64_t fpr[32];
65 uint64_t pc;
66 uint64_t vfp;
67 } r;
68 public:
69 char *data() const { return (char *)&r; }
70 size_t size() const { return sizeof(r); }
71 void getRegs(ThreadContext*);
72 void setRegs(ThreadContext*) const;
73 const std::string name() const { return gdb->name() + ".AlphaGdbRegCache"; }
74 };
75
60 public:
61 RemoteGDB(System *system, ThreadContext *context);
76 public:
77 RemoteGDB(System *system, ThreadContext *context);
78 BaseGdbRegCache *gdbRegs();
62};
63
64} // namespace AlphaISA
65
66#endif // __ARCH_ALPHA_REMOTE_GDB_HH__
79};
80
81} // namespace AlphaISA
82
83#endif // __ARCH_ALPHA_REMOTE_GDB_HH__