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;