arch: Stop using setSyscallArg to set argc and argv.
authorGabe Black <gabeblack@google.com>
Mon, 25 Nov 2019 07:17:58 +0000 (23:17 -0800)
committerGabe Black <gabeblack@google.com>
Tue, 10 Dec 2019 23:58:14 +0000 (23:58 +0000)
In Alpha and MIPS, the argc and argv values should be in what happens
to be the first and second syscall argument registers, but that's not
by definition. The process objects of both those ISAs know what
registers to use intrinsically, so there's also no reason to call out
to a helper method which acts as a part of the Process's interface to
the rest of gem5.

Jira Issue: https://gem5.atlassian.net/browse/GEM5-187

Change-Id: Id8fa38ab1fc2ac6436e94ad41303439973fded10
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23173
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/arch/alpha/process.cc
src/arch/mips/process.cc

index 314769535a3ea0f9b283cdab0c9d44c2602aa90f..b8fb7a99b5a11d2a22d9870dd0761694bb6206d8 100644 (file)
@@ -170,8 +170,8 @@ AlphaProcess::argsInit(int intSize, int pageSize)
 
     ThreadContext *tc = system->getThreadContext(contextIds[0]);
 
-    setSyscallArg(tc, 0, argc);
-    setSyscallArg(tc, 1, argv_array_base);
+    tc->setIntReg(FirstArgumentReg, argc);
+    tc->setIntReg(FirstArgumentReg + 1, argv_array_base);
     tc->setIntReg(StackPointerReg, memState->getStackMin());
 
     tc->pcState(getStartPC());
index ca4f79afd8ec9ae71d8cbe8743ed5d8b1eaa62f6..2e66cac82749b20a59cdcbcd17e1c80e32856746 100644 (file)
@@ -185,8 +185,8 @@ MipsProcess::argsInit(int pageSize)
 
     ThreadContext *tc = system->getThreadContext(contextIds[0]);
 
-    setSyscallArg(tc, 0, argc);
-    setSyscallArg(tc, 1, argv_array_base);
+    tc->setIntReg(FirstArgumentReg, argc);
+    tc->setIntReg(FirstArgumentReg + 1, argv_array_base);
     tc->setIntReg(StackPointerReg, memState->getStackMin());
 
     tc->pcState(getStartPC());