summaryrefslogtreecommitdiff
path: root/base/remote_gdb.cc
diff options
context:
space:
mode:
authorAndrew Schultz <alschult@umich.edu>2004-02-13 18:15:04 -0500
committerAndrew Schultz <alschult@umich.edu>2004-02-13 18:15:04 -0500
commit092ec1978d3e1f01e9d1d6ce6f892c101f525682 (patch)
tree49e9027e35fc82dba7afb6731b4b5667d3ae826d /base/remote_gdb.cc
parent6391bfac543921e49469d74ea58de644d7a8f7cc (diff)
downloadgem5-092ec1978d3e1f01e9d1d6ce6f892c101f525682.tar.xz
Fix to remote debugger while in PAL
arch/alpha/vtophys.cc: base/remote_gdb.cc: Fix to remote debugger while in PAL code dev/pcidev.cc: Remove extra debug printf --HG-- extra : convert_revision : e64988846ad05cd3ddf47034d72d99dae3501591
Diffstat (limited to 'base/remote_gdb.cc')
-rw-r--r--base/remote_gdb.cc12
1 files changed, 5 insertions, 7 deletions
diff --git a/base/remote_gdb.cc b/base/remote_gdb.cc
index e20800d12..7b73d60e9 100644
--- a/base/remote_gdb.cc
+++ b/base/remote_gdb.cc
@@ -332,23 +332,21 @@ RemoteGDB::acc(Addr va, size_t len)
last_va = alpha_round_page(va + len);
do {
- if (va < ALPHA_K0SEG_BASE) {
- DPRINTF(GDBAcc, "acc: Mapping is invalid %#x < K0SEG\n", va);
- return false;
- }
-
- if (va < ALPHA_K1SEG_BASE) {
+ if (va >= ALPHA_K0SEG_BASE && va < ALPHA_K1SEG_BASE) {
if (va < (ALPHA_K0SEG_BASE + pmem->size())) {
DPRINTF(GDBAcc, "acc: Mapping is valid K0SEG <= "
"%#x < K0SEG + size\n", va);
return true;
} else {
- DPRINTF(GDBAcc, "acc: Mapping is invalid %#x < K0SEG\n",
+ DPRINTF(GDBAcc, "acc: Mapping invalid %#x > K0SEG + size\n",
va);
return false;
}
}
+ if (PC_PAL(va) || va < 0x10000)
+ return true;
+
Addr ptbr = context->regs.ipr[AlphaISA::IPR_PALtemp20];
pte = kernel_pte_lookup(pmem, ptbr, va);
if (!pte || !entry_valid(pmem->phys_read_qword(pte))) {