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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user