Added capability for instrumentation on all register accesses.
git-svn-id: http://www.cdkersey.com/harp/harptool@30 0246edb2-e076-4747-b392-db732a341fa2
This commit is contained in:
@@ -13,6 +13,26 @@
|
||||
#include "mem.h"
|
||||
|
||||
namespace Harp {
|
||||
template <typename T> class Reg {
|
||||
public:
|
||||
Reg(): cpuId(0), regNum(0) {}
|
||||
Reg(Word c, Word n): cpuId(c), regNum(n) {}
|
||||
|
||||
Reg &operator=(T r) { val = r; doWrite(); return *this; }
|
||||
operator T() { doRead(); return val; }
|
||||
|
||||
private:
|
||||
Word cpuId, regNum;
|
||||
T val;
|
||||
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
#error TODO: instrument Harp::Reg.
|
||||
#else
|
||||
void doWrite() {}
|
||||
void doRead() {}
|
||||
#endif
|
||||
};
|
||||
|
||||
class Core {
|
||||
public:
|
||||
Core(const ArchDef &a, Decoder &d, MemoryUnit &mem, Word id=0);
|
||||
@@ -27,8 +47,8 @@ namespace Harp {
|
||||
|
||||
Word pc, interruptEntry, shadowPc, id;
|
||||
Size activeThreads, shadowActiveThreads;
|
||||
std::vector<std::vector<Word> > reg;
|
||||
std::vector<std::vector<bool> > pred;
|
||||
std::vector<std::vector<Reg<Word> > > reg;
|
||||
std::vector<std::vector<Reg<bool> > > pred;
|
||||
|
||||
std::vector<Word> shadowReg;
|
||||
std::vector<bool> shadowPReg;
|
||||
|
||||
Reference in New Issue
Block a user