138 #include "arch/riscv/gdb-xml/gdb_xml_riscv_32bit_cpu.hh"
139 #include "arch/riscv/gdb-xml/gdb_xml_riscv_32bit_csr.hh"
140 #include "arch/riscv/gdb-xml/gdb_xml_riscv_32bit_fpu.hh"
141 #include "arch/riscv/gdb-xml/gdb_xml_riscv_32bit_target.hh"
142 #include "arch/riscv/gdb-xml/gdb_xml_riscv_64bit_cpu.hh"
143 #include "arch/riscv/gdb-xml/gdb_xml_riscv_64bit_csr.hh"
144 #include "arch/riscv/gdb-xml/gdb_xml_riscv_64bit_fpu.hh"
145 #include "arch/riscv/gdb-xml/gdb_xml_riscv_64bit_target.hh"
153 #include "debug/GDBAcc.hh"
160 using namespace RiscvISA;
166 panic_if(!isa,
"Cannot derive rv_type from non-riscv isa");
167 return isa->rvType();
170 template <
typename x
int>
182 template <
typename x
int>
194 : BaseRemoteGDB(_system, _listen_config),
195 regCache32(this), regCache64(this)
204 MMU *mmu =
static_cast<MMU *
>(context()->getMMUPtr());
208 PrivilegeMode pmode = mmu->getMemPriv(context(), BaseMMU::Read);
211 satp.mode != AddrXlateMode::BARE) {
212 Walker *walker = mmu->getDataWalker();
213 Fault fault = walker->startFunctional(
214 context(), paddr, logBytes, BaseMMU::Read);
221 return context()->getProcessPtr()->pTable->lookup(
va) !=
nullptr;
227 DPRINTF(GDBAcc,
"getregs in remotegdb, size %lu\n", size());
341 DPRINTF(GDBAcc,
"setregs in remotegdb \n");
422 DPRINTF(GDBAcc,
"getregs in remotegdb, size %lu\n", size());
530 DPRINTF(GDBAcc,
"setregs in remotegdb \n");
609 RemoteGDB::getXferFeaturesRead(
const std::string &annex, std::string &
output)
617 #define GDB_XML(x, s) \
619 x, std::string(reinterpret_cast<const char *>(Blobs::s), \
622 static const std::map<std::string, std::string> annexMaps[enums::Num_RiscvType] = {
623 [
RV32] = {
GDB_XML(
"target.xml", gdb_xml_riscv_32bit_target),
624 GDB_XML(
"riscv-32bit-cpu.xml", gdb_xml_riscv_32bit_cpu),
625 GDB_XML(
"riscv-32bit-fpu.xml", gdb_xml_riscv_32bit_fpu),
626 GDB_XML(
"riscv-32bit-csr.xml", gdb_xml_riscv_32bit_csr)},
627 [
RV64] = {
GDB_XML(
"target.xml", gdb_xml_riscv_64bit_target),
628 GDB_XML(
"riscv-64bit-cpu.xml", gdb_xml_riscv_64bit_cpu),
629 GDB_XML(
"riscv-64bit-fpu.xml", gdb_xml_riscv_64bit_fpu),
630 GDB_XML(
"riscv-64bit-csr.xml", gdb_xml_riscv_64bit_csr)},
632 auto& annexMap = annexMaps[
getRvType(context())];
633 auto it = annexMap.find(annex);
634 if (it == annexMap.end())
643 BaseGdbRegCache* regs[enums::Num_RiscvType] = {
644 [
RV32] = ®Cache32,
645 [
RV64] = ®Cache64,