Go to the documentation of this file.
133 #include <sys/signal.h>
139 #include "arch/arm/gdb-xml/gdb_xml_aarch64_core.hh"
140 #include "arch/arm/gdb-xml/gdb_xml_aarch64_fpu.hh"
141 #include "arch/arm/gdb-xml/gdb_xml_aarch64_target.hh"
142 #include "arch/arm/gdb-xml/gdb_xml_arm_core.hh"
143 #include "arch/arm/gdb-xml/gdb_xml_arm_target.hh"
144 #include "arch/arm/gdb-xml/gdb_xml_arm_vfpv3.hh"
158 #include "debug/GDBAcc.hh"
159 #include "debug/GDBMisc.hh"
169 using namespace ArmISA;
190 auto req = std::make_shared<Request>(
addr, 64, 0x40, -1, 0, 0);
206 regCache32(this), regCache64(this)
219 DPRINTF(GDBAcc,
"acc: %#x mapping is invalid\n",
va);
224 DPRINTF(GDBAcc,
"acc: %#x mapping is valid\n",
va);
236 DPRINTF(GDBAcc,
"getRegs in remotegdb \n");
238 for (
int i = 0;
i < 31; ++
i)
261 DPRINTF(GDBAcc,
"setRegs in remotegdb \n");
263 for (
int i = 0;
i < 31; ++
i)
291 DPRINTF(GDBAcc,
"getRegs in remotegdb \n");
312 for (
int i = 0;
i < 32;
i++)
321 DPRINTF(GDBAcc,
"setRegs in remotegdb \n");
339 pc_state.
set(
r.gpr[15]);
351 #define GDB_XML(x, s) \
352 { x, std::string(reinterpret_cast<const char *>(Blobs::s), \
354 static const std::map<std::string, std::string> annexMap32{
355 GDB_XML(
"target.xml", gdb_xml_arm_target),
356 GDB_XML(
"arm-core.xml", gdb_xml_arm_core),
357 GDB_XML(
"arm-vfpv3.xml", gdb_xml_arm_vfpv3),
359 static const std::map<std::string, std::string> annexMap64{
360 GDB_XML(
"target.xml", gdb_xml_aarch64_target),
361 GDB_XML(
"aarch64-core.xml", gdb_xml_aarch64_core),
362 GDB_XML(
"aarch64-fpu.xml", gdb_xml_aarch64_fpu),
366 auto it = annexMap.find(annex);
367 if (it == annexMap.end())
385 switch (ArmBpKind(kind)) {
386 case ArmBpKind::THUMB:
387 case ArmBpKind::THUMB_2:
Addr instAddr() const
Returns the memory address of the instruction this PC points to.
constexpr decltype(nullptr) NoFault
static RegId x(unsigned index)
constexpr unsigned NumVecElemPerNeonVecReg
virtual RegVal getReg(const RegId ®) const
static void output(const char *filename)
virtual BaseMMU * getMMUPtr()=0
virtual const PCStateBase & pcState() const =0
bool acc(Addr addr, size_t len) override
const Entry * lookup(Addr vaddr)
Lookup function.
bool inAArch64(ThreadContext *tc)
static bool tryTranslate(ThreadContext *tc, Addr addr)
Concrete subclasses of this abstract class represent how the register values are transmitted on the w...
virtual Fault translateFunctional(const RequestPtr &req, ThreadContext *tc, Mode mode)
This class takes an arbitrary memory region (address/length pair) and generates a series of appropria...
Vector Register Abstraction This generic class is the model in a particularization of MVC,...
bool done() const
Are we done? That is, did the last call to next() advance past the end of the region?
ThreadContext is the external interface to all thread state for anything outside of the CPU.
VecElem * as()
View interposers.
EmulationPageTable * pTable
bool checkBpKind(size_t kind) override
BaseGdbRegCache * gdbRegs() override
virtual RegVal readMiscRegNoEffect(RegIndex misc_reg) const =0
void getRegs(ThreadContext *) override
Fill the raw buffer from the registers in the ThreadContext.
virtual void * getWritableReg(const RegId ®)=0
AArch64GdbRegCache regCache64
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
constexpr RegClass vecRegClass
void getRegs(ThreadContext *) override
Fill the raw buffer from the registers in the ThreadContext.
virtual Process * getProcessPtr()=0
bool FullSystem
The FullSystem variable can be used to determine the current mode of simulation.
AArch32GdbRegCache regCache32
void setRegs(ThreadContext *) const override
Set the ThreadContext's registers from the values in the raw buffer.
virtual void setMiscReg(RegIndex misc_reg, RegVal val)=0
void set(Addr val)
Force this PC to reflect a particular value, resetting all its other fields around it.
bool getXferFeaturesRead(const std::string &annex, std::string &output) override
Get an XML target description.
const int NumVecV8ArchRegs
void setRegs(ThreadContext *) const override
Set the ThreadContext's registers from the values in the raw buffer.
ThreadContext * context()
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
struct gem5::ArmISA::RemoteGDB::AArch64GdbRegCache::GEM5_PACKED r
RemoteGDB(System *_system, ListenSocketConfig _listen_config)
VecElem v[NumVecV8ArchRegs *NumVecElemPerNeonVecReg]
virtual void setMiscRegNoEffect(RegIndex misc_reg, RegVal val)=0
virtual void setReg(const RegId ®, RegVal val)
Generated on Sun Jul 30 2023 01:56:47 for gem5 by doxygen 1.8.17