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:
chad
2011-10-21 21:17:30 +00:00
parent 839b76c2a9
commit 59976a7e11
8 changed files with 99 additions and 40 deletions

View File

@@ -9,6 +9,10 @@
#include "include/core.h"
#include "include/harpfloat.h"
#ifdef EMU_INSTRUMENTATION
#include "include/qsim-harp.h"
#endif
using namespace Harp;
using namespace std;
@@ -102,10 +106,6 @@ ostream &Harp::operator<<(ostream& os, Instruction &inst) {
}
void Instruction::executeOn(Core &c) {
#ifdef EMU_INSTRUMENTATION
#error TODO: instrument Harp::Instruction::executeOn()
#endif
/* If I try to execute a privileged instruction in user mode, throw an
exception 3. */
if (instTable[op].privileged && !c.supervisorMode) {
@@ -195,14 +195,16 @@ void Instruction::executeOn(Core &c) {
break;
case LD: memAddr = reg[rsrc[0]] + immsrc;
#ifdef EMU_INSTRUMENTATION
#error TODO: Instrument memory reads.
Harp::OSDomain::osDomain->
do_mem(0, memAddr, c.mem.virtToPhys(memAddr), 8, true);
#endif
reg[rdest] = c.mem.read(memAddr, c.supervisorMode);
break;
case ST: memAddr = reg[rsrc[1]] + immsrc;
c.mem.write(memAddr, reg[rsrc[0]], c.supervisorMode);
#ifdef EMU_INSTRUMENTATION
#error TODO: Instrument memory writes.
Harp::OSDomain::osDomain->
do_mem(0, memAddr, c.mem.virtToPhys(memAddr), 8, true);
#endif
break;
case LDI: reg[rdest] = immsrc;