riscv: fixed syscall return value
In case of failure, a syscall returns a negative value encoding the error code. This patch makes the risc-v implementation returns the encoded value instead of its absolute value upon a failure of a syscall. Change-Id: I6032b0337fe1cff5b326dbc6bb3b87a415f03300 Reviewed-on: https://gem5-review.googlesource.com/c/9627 Reviewed-by: Alec Roelke <ar4jc@virginia.edu> Maintainer: Alec Roelke <ar4jc@virginia.edu>
This commit is contained in:
@@ -279,6 +279,6 @@ RiscvProcess::setSyscallReturn(ThreadContext *tc, SyscallReturn sysret)
|
||||
tc->setIntReg(SyscallPseudoReturnReg, sysret.returnValue());
|
||||
} else {
|
||||
// got an error, return details
|
||||
tc->setIntReg(SyscallPseudoReturnReg, sysret.errnoValue());
|
||||
tc->setIntReg(SyscallPseudoReturnReg, sysret.encodedValue());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user