summaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
Diffstat (limited to 'src/base')
-rw-r--r--src/base/remote_gdb.hh19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/base/remote_gdb.hh b/src/base/remote_gdb.hh
index 8fab556f3..ef414f09b 100644
--- a/src/base/remote_gdb.hh
+++ b/src/base/remote_gdb.hh
@@ -1,4 +1,5 @@
/*
+ * Copyright 2014 Google, Inc.
* Copyright (c) 2002-2005 The Regents of The University of Michigan
* All rights reserved.
*
@@ -36,6 +37,7 @@
#include <map>
#include "arch/types.hh"
+#include "base/intmath.hh"
#include "base/pollevent.hh"
#include "base/socket.hh"
#include "cpu/pc_event.hh"
@@ -136,16 +138,25 @@ class BaseRemoteGDB
class GdbRegCache
{
public:
- GdbRegCache(size_t newSize) : regs(new uint64_t[newSize]), size(newSize)
+ GdbRegCache(size_t newSize) :
+ regs64(new uint64_t[divCeil(newSize, sizeof(uint64_t))]),
+ size(newSize)
{}
~GdbRegCache()
{
- delete [] regs;
+ delete [] regs64;
}
- uint64_t * regs;
+ union {
+ uint64_t *regs64;
+ uint32_t *regs32;
+ uint16_t *regs16;
+ uint8_t *regs8;
+ void *regs;
+ };
+ // Size of cache in bytes.
size_t size;
- size_t bytes() { return size * sizeof(uint64_t); }
+ size_t bytes() { return size; }
};
GdbRegCache gdbregs;