summaryrefslogtreecommitdiff
path: root/src/sim/system.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim/system.cc')
-rw-r--r--src/sim/system.cc20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/sim/system.cc b/src/sim/system.cc
index 9704c83f0..29b1d1f61 100644
--- a/src/sim/system.cc
+++ b/src/sim/system.cc
@@ -166,16 +166,22 @@ bool System::breakpoint()
}
int
-System::registerThreadContext(ThreadContext *tc)
+System::registerThreadContext(ThreadContext *tc, int assigned)
{
int id;
- for (id = 0; id < threadContexts.size(); id++) {
- if (!threadContexts[id])
- break;
- }
+ if (assigned == -1) {
+ for (id = 0; id < threadContexts.size(); id++) {
+ if (!threadContexts[id])
+ break;
+ }
- if (threadContexts.size() <= id)
- threadContexts.resize(id + 1);
+ if (threadContexts.size() <= id)
+ threadContexts.resize(id + 1);
+ } else {
+ if (threadContexts.size() <= assigned)
+ threadContexts.resize(assigned + 1);
+ id = assigned;
+ }
if (threadContexts[id])
panic("Cannot have two CPUs with the same id (%d)\n", id);