arm: SMT MPIDR Setting
authorMitch Hayenga <mitch.hayenga@arm.com>
Wed, 30 Sep 2015 16:14:19 +0000 (11:14 -0500)
committerMitch Hayenga <mitch.hayenga@arm.com>
Wed, 30 Sep 2015 16:14:19 +0000 (11:14 -0500)
Changes assignment of the MPIDR for multi-threaded systems only.

src/arch/arm/utility.cc

index 34fcfd48259a52db0efb62f7107441b77844e994..bedd4a0b063f028989ca27f50b7120ef41f92384 100644 (file)
@@ -210,7 +210,10 @@ getMPIDR(ArmSystem *arm_sys, ThreadContext *tc)
     // for simulation of larger systems
     assert((0 <= tc->cpuId()) && (tc->cpuId() < 256));
     assert((0 <= tc->socketId()) && (tc->socketId() < 65536));
-    if (arm_sys->multiProc) {
+    if (arm_sys->multiThread) {
+       return 0x80000000 | // multiprocessor extensions available
+              tc->contextId();
+    } else if (arm_sys->multiProc) {
        return 0x80000000 | // multiprocessor extensions available
               tc->cpuId() | tc->socketId() << 8;
     } else {