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"
190 auto req = std::make_shared<Request>(
addr, 64, 0x40, -1, 0, 0);
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)
241 r.pc =
context->pcState().instAddr();
261 DPRINTF(GDBAcc,
"setRegs in remotegdb \n");
263 for (
int i = 0;
i < 31; ++
i)
291 DPRINTF(GDBAcc,
"getRegs in remotegdb \n");
308 r.gpr[15] =
context->pcState().instAddr();
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:
Declaration and inline definition of ChunkGenerator object.
struct gem5::ArmISA::RemoteGDB::AArch32GdbRegCache::GEM5_PACKED r
void setRegs(ThreadContext *) const override
Set the ThreadContext's registers from the values in the raw buffer.
void getRegs(ThreadContext *) override
Fill the raw buffer from the registers in the ThreadContext.
void setRegs(ThreadContext *) const override
Set the ThreadContext's registers from the values in the raw buffer.
struct gem5::ArmISA::RemoteGDB::AArch64GdbRegCache::GEM5_PACKED r
void getRegs(ThreadContext *) override
Fill the raw buffer from the registers in the ThreadContext.
bool checkBpKind(size_t kind) override
bool acc(Addr addr, size_t len) override
BaseGdbRegCache * gdbRegs() override
bool getXferFeaturesRead(const std::string &annex, std::string &output) override
Get an XML target description.
AArch64GdbRegCache regCache64
AArch32GdbRegCache regCache32
RemoteGDB(System *_system, ListenSocketConfig _listen_config)
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)
ThreadContext * context()
This class takes an arbitrary memory region (address/length pair) and generates a series of appropria...
const Entry * lookup(Addr vaddr)
Lookup function.
void set(Addr val) override
Force this PC to reflect a particular value, resetting all its other fields around it.
EmulationPageTable * pTable
ThreadContext is the external interface to all thread state for anything outside of the CPU.
virtual BaseMMU * getMMUPtr()=0
virtual Process * getProcessPtr()=0
VecElem * as()
View interposers.
bool done() const
Are we done?
BaseRemoteGDB(System *system, ListenSocketConfig _listen_config)
Interface to other parts of the simulator.
static RegId x(unsigned index)
const int NumVecV8ArchRegs
constexpr unsigned NumVecElemPerNeonVecReg
gem5::VecRegContainer< NumVecElemPerVecReg *sizeof(VecElem)> VecRegContainer
bool inAArch64(ThreadContext *tc)
constexpr RegClass vecRegClass
Copyright (c) 2024 Arm Limited All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
bool FullSystem
The FullSystem variable can be used to determine the current mode of simulation.
static void output(const char *filename)
constexpr decltype(nullptr) NoFault
static bool tryTranslate(ThreadContext *tc, Addr addr)
Declarations of a non-full system Page Table.