Make sure all addresses used in syscalls are truncated to 32 bits. Actually -all...
authorGabe Black <gblack@eecs.umich.edu>
Sat, 12 May 2007 22:11:44 +0000 (15:11 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Sat, 12 May 2007 22:11:44 +0000 (15:11 -0700)
--HG--
extra : convert_revision : 3b8766c68a4ab36e2e769fac4812657f3f7e0d1c

src/cpu/o3/sparc/cpu_impl.hh

index 50d980f55f7237987cd41d06676864ac62d7bc33..2e398577e58ee185da00de938b7f91a5c4de5b32 100644 (file)
@@ -272,7 +272,10 @@ SparcO3CPU<Impl>::getSyscallArg(int i, int tid)
 {
     TheISA::IntReg idx = TheISA::flattenIntIndex(this->tcBase(tid),
             SparcISA::ArgumentReg0 + i);
-    return this->readArchIntReg(idx, tid);
+    TheISA::IntReg val = this->readArchIntReg(idx, tid);
+    if (bits(this->readMiscRegNoEffect(SparcISA::MISCREG_PSTATE, tid), 3, 3))
+        val = bits(val, 31, 0);
+    return val;
 }
 
 template <class Impl>