sim: Prevent segfault in the wakeCpu m5op if id is invalid

Change-Id: I86229cedb206e10326cdee3f09a5c871e49c8d48
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/3965
This commit is contained in:
Jose Marinho
2017-06-21 13:41:04 +01:00
committed by Andreas Sandberg
parent c0875dfc39
commit 8e8ad9daa3

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2010-2012, 2015 ARM Limited
* Copyright (c) 2010-2012, 2015, 2017 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -285,6 +285,13 @@ wakeCPU(ThreadContext *tc, uint64_t cpuid)
{
DPRINTF(PseudoInst, "PseudoInst::wakeCPU(%i)\n", cpuid);
System *sys = tc->getSystemPtr();
if (sys->numContexts() <= cpuid) {
warn("PseudoInst::wakeCPU(%i), cpuid greater than number of contexts"
"(%i)\n",cpuid, sys->numContexts());
return;
}
ThreadContext *other_tc = sys->threadContexts[cpuid];
if (other_tc->status() == ThreadContext::Suspended)
other_tc->activate();