From e3ab8a71eeb03baa914d6a4bc5b8e048be0a27c3 Mon Sep 17 00:00:00 2001 From: chad Date: Sat, 23 Jul 2011 12:22:43 +0000 Subject: [PATCH] Added initial register content needed by runtime. git-svn-id: http://www.cdkersey.com/harp/harptool@10 0246edb2-e076-4747-b392-db732a341fa2 --- src/core.cpp | 6 +++--- src/harptool.cpp | 2 +- src/include/core.h | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core.cpp b/src/core.cpp index 6f06a44f..eb91e9d2 100644 --- a/src/core.cpp +++ b/src/core.cpp @@ -14,13 +14,13 @@ using namespace Harp; using namespace std; -Core::Core(const ArchDef &a, Decoder &d, MemoryUnit &mem) : +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(a.getNThds(), vector(a.getNRegs())), pred(a.getNPRegs(), vector(a.getNPRegs())), - shadowReg(), shadowPReg(), interruptEntry(0) -{ } + shadowReg(), shadowPReg(), interruptEntry(0), id(id) +{ reg[0][0] = (a.getNThds()<<(a.getWordSize()*8 / 2)) | id; } void Core::step() { Size fetchPos(0), decPos, wordSize(a.getWordSize()); diff --git a/src/harptool.cpp b/src/harptool.cpp index c1564e2c..3aab3a9b 100644 --- a/src/harptool.cpp +++ b/src/harptool.cpp @@ -230,7 +230,7 @@ int emu_main(int argc, char **argv) { } MemoryUnit mu(4096, arch.getWordSize()); - Core core(arch, *dec, mu); + Core core(arch, *dec, mu/*, ID in multicore implementations*/); RamMemDevice mem(imgFileName.c_str(), arch.getWordSize()); ConsoleMemDevice console(arch.getWordSize(), cout, core); diff --git a/src/include/core.h b/src/include/core.h index 728735a5..1e23d206 100644 --- a/src/include/core.h +++ b/src/include/core.h @@ -15,7 +15,7 @@ namespace Harp { class Core { public: - Core(const ArchDef &a, Decoder &d, MemoryUnit &mem); + Core(const ArchDef &a, Decoder &d, MemoryUnit &mem, Word id=0); void step(); bool interrupt(Word r0); bool running() const { return activeThreads; } @@ -25,7 +25,7 @@ namespace Harp { Decoder &iDec; MemoryUnit &mem; - Word pc, interruptEntry, shadowPc; + Word pc, interruptEntry, shadowPc, id; Size activeThreads, shadowActiveThreads; std::vector > reg; std::vector > pred;