From 109908c2a6322d1fa31c0b486ea2bada14a292b8 Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Mon, 12 May 2014 14:23:31 -0700 Subject: syscall emulation: clean up & comment SyscallReturn --- src/arch/sparc/process.cc | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'src/arch/sparc') diff --git a/src/arch/sparc/process.cc b/src/arch/sparc/process.cc index 456b8b94a..06b0d18b3 100644 --- a/src/arch/sparc/process.cc +++ b/src/arch/sparc/process.cc @@ -532,26 +532,25 @@ Sparc64LiveProcess::setSyscallArg(ThreadContext *tc, int i, IntReg val) } void -SparcLiveProcess::setSyscallReturn(ThreadContext *tc, - SyscallReturn return_value) +SparcLiveProcess::setSyscallReturn(ThreadContext *tc, SyscallReturn sysret) { // check for error condition. SPARC syscall convention is to // indicate success/failure in reg the carry bit of the ccr // and put the return value itself in the standard return value reg (). PSTATE pstate = tc->readMiscRegNoEffect(MISCREG_PSTATE); - if (return_value.successful()) { + if (sysret.successful()) { // no error, clear XCC.C tc->setIntReg(NumIntArchRegs + 2, - tc->readIntReg(NumIntArchRegs + 2) & 0xEE); - IntReg val = return_value.value(); + tc->readIntReg(NumIntArchRegs + 2) & 0xEE); + IntReg val = sysret.returnValue(); if (pstate.am) val = bits(val, 31, 0); tc->setIntReg(ReturnValueReg, val); } else { // got an error, set XCC.C tc->setIntReg(NumIntArchRegs + 2, - tc->readIntReg(NumIntArchRegs + 2) | 0x11); - IntReg val = -return_value.value(); + tc->readIntReg(NumIntArchRegs + 2) | 0x11); + IntReg val = sysret.errnoValue(); if (pstate.am) val = bits(val, 31, 0); tc->setIntReg(ReturnValueReg, val); -- cgit v1.2.3