Initial work to make remote gdb available in SE mode. This is completely untested.

--HG--
extra : convert_revision : 3ad9a3368961d5e9e71f702da84ffe293fe8adc8
This commit is contained in:
Gabe Black
2006-12-20 18:39:40 -05:00
parent 841d76d37b
commit f13155393d
12 changed files with 48 additions and 45 deletions

View File

@@ -121,16 +121,21 @@
#include <string>
#include <unistd.h>
#include "config/full_system.hh"
#if FULL_SYSTEM
#include "arch/vtophys.hh"
#endif
#include "base/intmath.hh"
#include "base/remote_gdb.hh"
#include "base/socket.hh"
#include "base/trace.hh"
#include "config/full_system.hh"
#include "cpu/thread_context.hh"
#include "cpu/static_inst.hh"
#include "mem/physical.hh"
//#include "mem/physical.hh"
#include "mem/port.hh"
#include "mem/translating_port.hh"
#include "sim/system.hh"
using namespace std;
@@ -448,9 +453,17 @@ BaseRemoteGDB::read(Addr vaddr, size_t size, char *data)
DPRINTF(GDBRead, "read: addr=%#x, size=%d", vaddr, size);
VirtualPort *vp = context->getVirtPort(context);
vp->readBlob(vaddr, (uint8_t*)data, size);
context->delVirtPort(vp);
#if FULL_SYSTEM
VirtualPort *port = context->getVirtPort(context);
#else
TranslatingPort *port = context->getMemPort();
#endif
port->readBlob(vaddr, (uint8_t*)data, size);
#if FULL_SYSTEM
context->delVirtPort(port);
#else
delete port;
#endif
#if TRACING_ON
if (DTRACE(GDBRead)) {
@@ -487,9 +500,17 @@ BaseRemoteGDB::write(Addr vaddr, size_t size, const char *data)
} else
DPRINTFNR("\n");
}
VirtualPort *vp = context->getVirtPort(context);
vp->writeBlob(vaddr, (uint8_t*)data, size);
context->delVirtPort(vp);
#if FULL_SYSTEM
VirtualPort *port = context->getVirtPort(context);
#else
TranslatingPort *port = context->getMemPort();
#endif
port->writeBlob(vaddr, (uint8_t*)data, size);
#if FULL_SYSTEM
context->delVirtPort(port);
#else
delete port;
#endif
return true;
}

View File

@@ -32,6 +32,7 @@
#define __REMOTE_GDB_HH__
#include <map>
#include <sys/signal.h>
#include "arch/types.hh"
#include "cpu/pc_event.hh"
@@ -177,6 +178,10 @@ class BaseRemoteGDB
virtual bool acc(Addr addr, size_t len) = 0;
bool trap(int type);
virtual bool breakpoint()
{
return trap(SIGTRAP);
}
protected:
virtual void getregs() = 0;