arm: Factor some repetition out of the ProcessInfo constructor.

Change-Id: I34f952d1097886704d37304478de125a915b2615
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18371
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
This commit is contained in:
Gabe Black
2019-04-24 17:13:37 -07:00
parent 488ded0c8d
commit a5f06abe98

View File

@@ -44,42 +44,26 @@
namespace ArmISA
{
ProcessInfo::ProcessInfo(ThreadContext *_tc)
: tc(_tc)
static int32_t
readSymbol(ThreadContext *tc, const std::string name)
{
Addr addr = 0;
FSTranslatingPortProxy &vp = tc->getVirtProxy();
SymbolTable *symtab = tc->getSystemPtr()->kernelSymtab;
if (!tc->getSystemPtr()->kernelSymtab->findAddress(
"thread_info_size", addr)) {
Addr addr;
if (!symtab->findAddress(name, addr))
panic("thread info not compiled into kernel\n");
}
thread_info_size = vp.readGtoH<int32_t>(addr);
if (!tc->getSystemPtr()->kernelSymtab->findAddress(
"task_struct_size", addr)) {
panic("thread info not compiled into kernel\n");
}
task_struct_size = vp.readGtoH<int32_t>(addr);
return vp.readGtoH<int32_t>(addr);
}
if (!tc->getSystemPtr()->kernelSymtab->findAddress(
"thread_info_task", addr)) {
panic("thread info not compiled into kernel\n");
}
task_off = vp.readGtoH<int32_t>(addr);
if (!tc->getSystemPtr()->kernelSymtab->findAddress(
"task_struct_pid", addr)) {
panic("thread info not compiled into kernel\n");
}
pid_off = vp.readGtoH<int32_t>(addr);
if (!tc->getSystemPtr()->kernelSymtab->findAddress(
"task_struct_comm", addr)) {
panic("thread info not compiled into kernel\n");
}
name_off = vp.readGtoH<int32_t>(addr);
ProcessInfo::ProcessInfo(ThreadContext *_tc) : tc(_tc)
{
thread_info_size = readSymbol(tc, "thread_info_size");
task_struct_size = readSymbol(tc, "task_struct_size");
task_off = readSymbol(tc, "thread_info_task");
pid_off = readSymbol(tc, "task_struct_pid");
name_off = readSymbol(tc, "task_struct_comm");
}
Addr