The qsim-harp library builds, built by default, not expected to work yet.
git-svn-id: http://www.cdkersey.com/harp/harptool@35 0246edb2-e076-4747-b392-db732a341fa2
This commit is contained in:
24
src/core.cpp
24
src/core.cpp
@@ -11,9 +11,23 @@
|
||||
#include "include/enc.h"
|
||||
#include "include/core.h"
|
||||
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
#include "include/qsim-harp.h"
|
||||
#endif
|
||||
|
||||
using namespace Harp;
|
||||
using namespace std;
|
||||
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
void Harp::reg_doRead(Word cpuId, Word regNum) {
|
||||
Harp::OSDomain::osDomain->do_reg(cpuId, regNum, 8, true);
|
||||
}
|
||||
|
||||
void Harp::reg_doWrite(Word cpuId, Word regNum) {
|
||||
Harp::OSDomain::osDomain->do_reg(cpuId, regNum, 8, false);
|
||||
}
|
||||
#endif
|
||||
|
||||
Core::Core(const ArchDef &a, Decoder &d, MemoryUnit &mem, Word id) :
|
||||
a(a), iDec(d), mem(mem), pc(0), interruptEnable(false), supervisorMode(true),
|
||||
activeThreads(1), reg(0), pred(0), shadowReg(a.getNRegs()), shadowPReg(a.getNPRegs()),
|
||||
@@ -66,6 +80,14 @@ void Core::step() {
|
||||
} while (fetchMore);
|
||||
//cout << "0x" << hex << pc << ": " << *inst << '\n';
|
||||
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
{ Addr pcPhys(mem.virtToPhys(pc));
|
||||
Harp::OSDomain::osDomain->
|
||||
do_inst(0, pc, pcPhys, decPos, mem.getPtr(pcPhys, decPos),
|
||||
(enum inst_type)inst->instTable[inst->getOpcode()].iType);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Update pc */
|
||||
pc += decPos;
|
||||
|
||||
@@ -91,7 +113,7 @@ bool Core::interrupt(Word r0) {
|
||||
if (!interruptEnable) return false;
|
||||
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
#error TODO: instrument Harp::Core::interrupt()
|
||||
Harp::OSDomain::osDomain->do_int(0, r0);
|
||||
#endif
|
||||
|
||||
shadowActiveThreads = activeThreads;
|
||||
|
||||
Reference in New Issue
Block a user