changeset 873634453ae0 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=873634453ae0
description:
ARM: implement the ProcessInfo methods
diffstat:
src/arch/arm/stacktrace.cc | 33 ++++++++++++++++++++++++++++++---
1 files changed, 30 insertions(+), 3 deletions(-)
diffs (53 lines):
diff -r d421f95f92d9 -r 873634453ae0 src/arch/arm/stacktrace.cc
--- a/src/arch/arm/stacktrace.cc Mon Jun 11 10:54:37 2012 -0400
+++ b/src/arch/arm/stacktrace.cc Mon Jun 11 11:07:41 2012 -0400
@@ -74,19 +74,46 @@
Addr
ProcessInfo::task(Addr ksp) const
{
- return 0;
+ Addr base = ksp & ~0x1fff;
+ if (base == ULL(0xffffffffc0000000))
+ return 0;
+
+ Addr tsk;
+
+ FSTranslatingPortProxy &vp = tc->getVirtProxy();
+ tsk = vp.readGtoH<Addr>(base + task_off);
+
+ return tsk;
}
int
ProcessInfo::pid(Addr ksp) const
{
- return -1;
+ Addr task = this->task(ksp);
+ if (!task)
+ return -1;
+
+ uint16_t pd;
+
+ FSTranslatingPortProxy &vp = tc->getVirtProxy();
+ pd = vp.readGtoH<uint16_t>(task + pid_off);
+
+ return pd;
}
string
ProcessInfo::name(Addr ksp) const
{
- return "Implement me";
+ Addr task = this->task(ksp);
+ if (!task)
+ return "unknown";
+
+ char comm[256];
+ CopyStringOut(tc, comm, task + name_off, sizeof(comm));
+ if (!comm[0])
+ return "startup";
+
+ return comm;
}
StackTrace::StackTrace()
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev