Set both xcc.c and icc.c on return from a syscall.
--HG-- extra : convert_revision : 9c2b32d735b816021cdd3af24002f309e22a8d64
This commit is contained in:
parent
9231d2235d
commit
02f3b21c42
|
@ -79,11 +79,11 @@ namespace SparcISA
|
||||||
// and put the return value itself in the standard return value reg ().
|
// and put the return value itself in the standard return value reg ().
|
||||||
if (return_value.successful()) {
|
if (return_value.successful()) {
|
||||||
// no error, clear XCC.C
|
// no error, clear XCC.C
|
||||||
regs->setMiscReg(MISCREG_CCR, regs->readMiscReg(MISCREG_CCR) & 0xEF);
|
regs->setMiscReg(MISCREG_CCR, regs->readMiscReg(MISCREG_CCR) & 0xEE);
|
||||||
regs->setIntReg(ReturnValueReg, return_value.value());
|
regs->setIntReg(ReturnValueReg, return_value.value());
|
||||||
} else {
|
} else {
|
||||||
// got an error, set XCC.C
|
// got an error, set XCC.C
|
||||||
regs->setMiscReg(MISCREG_CCR, regs->readMiscReg(MISCREG_CCR) | 0x10);
|
regs->setMiscReg(MISCREG_CCR, regs->readMiscReg(MISCREG_CCR) | 0x11);
|
||||||
regs->setIntReg(ReturnValueReg, return_value.value());
|
regs->setIntReg(ReturnValueReg, return_value.value());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue