gem5 v24.0.0.0
Loading...
Searching...
No Matches
remote_gdb.hh
Go to the documentation of this file.
1/*
2 * Copyright (c) 2015 LabWare
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 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution;
13 * neither the name of the copyright holders nor the names of its
14 * contributors may be used to endorse or promote products derived from
15 * this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
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
30#ifndef __ARCH_SPARC_REMOTE_GDB_HH__
31#define __ARCH_SPARC_REMOTE_GDB_HH__
32
33#include <map>
34
35#include "base/remote_gdb.hh"
36
37namespace gem5
38{
39
40class System;
41class ThreadContext;
42
43namespace SparcISA
44{
45
47{
48 protected:
49 bool acc(Addr addr, size_t len);
50
52 {
54 private:
55 struct
56 {
57 uint32_t gpr[32];
58 uint32_t hole[32];
59 uint32_t y;
60 uint32_t psr;
61 uint32_t wim;
62 uint32_t tbr;
63 uint32_t pc;
64 uint32_t npc;
65 uint32_t fsr;
66 uint32_t csr;
67 } r;
68 public:
69 char *data() const { return (char *)&r; }
70 size_t size() const { return sizeof(r); }
72 void setRegs(ThreadContext*) const;
73 const std::string
74 name() const
75 {
76 return gdb->name() + ".SPARCGdbRegCache";
77 }
78 };
79
81 {
83 private:
84 struct
85 {
86 uint64_t gpr[32];
87 uint64_t fpr[32];
88 uint64_t pc;
89 uint64_t npc;
90 uint64_t state;
91 uint64_t fsr;
92 uint64_t fprs;
93 uint64_t y;
94 } r;
95 public:
96 char *data() const { return (char *)&r; }
97 size_t size() const { return sizeof(r); }
99 void setRegs(ThreadContext*) const;
100 const std::string
101 name() const
102 {
103 return gdb->name() + ".SPARC64GdbRegCache";
104 }
105 };
106
109
110 public:
111 RemoteGDB(System *_system, ListenSocketConfig _listen_config);
113};
114} // namespace SparcISA
115} // namespace gem5
116
117#endif /* __ARCH_SPARC_REMOTE_GDB_H__ */
Concrete subclasses of this abstract class represent how the register values are transmitted on the w...
Definition remote_gdb.hh:86
BaseRemoteGDB * gdb
void setRegs(ThreadContext *) const
Set the ThreadContext's registers from the values in the raw buffer.
size_t size() const
Return the size of the raw buffer, in bytes (i.e., half of the number of digits in the g/G packet).
Definition remote_gdb.hh:97
struct gem5::SparcISA::RemoteGDB::SPARC64GdbRegCache::@33 r
const std::string name() const
Return the name to use in places like DPRINTF.
void getRegs(ThreadContext *)
Fill the raw buffer from the registers in the ThreadContext.
char * data() const
Return the pointer to the raw bytes buffer containing the register values.
Definition remote_gdb.hh:96
size_t size() const
Return the size of the raw buffer, in bytes (i.e., half of the number of digits in the g/G packet).
Definition remote_gdb.hh:70
const std::string name() const
Return the name to use in places like DPRINTF.
Definition remote_gdb.hh:74
char * data() const
Return the pointer to the raw bytes buffer containing the register values.
Definition remote_gdb.hh:69
struct gem5::SparcISA::RemoteGDB::SPARCGdbRegCache::@32 r
void getRegs(ThreadContext *)
Fill the raw buffer from the registers in the ThreadContext.
void setRegs(ThreadContext *) const
Set the ThreadContext's registers from the values in the raw buffer.
BaseGdbRegCache * gdbRegs()
RemoteGDB(System *_system, ListenSocketConfig _listen_config)
SPARCGdbRegCache regCache32
bool acc(Addr addr, size_t len)
SPARC64GdbRegCache regCache64
ThreadContext is the external interface to all thread state for anything outside of the CPU.
BaseGdbRegCache(BaseRemoteGDB *g)
std::string name()
Bitfield< 18, 16 > len
Bitfield< 3 > addr
Definition types.hh:84
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition binary32.hh:36
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition types.hh:147

Generated on Tue Jun 18 2024 16:23:59 for gem5 by doxygen 1.11.0