arch,sim: Get rid of the now unused setSyscallReturn method.
Change-Id: I61741ab2eca4c77a2c8884e2b5c328479e2b3c90 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23505 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Bobby R. Bruce <bbruce@ucdavis.edu> Maintainer: Gabe Black <gabeblack@google.com>
This commit is contained in:
@@ -477,41 +477,3 @@ const std::vector<int> ArmProcess32::SyscallABI::ArgumentRegs = {
|
||||
const std::vector<int> ArmProcess64::SyscallABI::ArgumentRegs = {
|
||||
0, 1, 2, 3, 4, 5, 6
|
||||
};
|
||||
|
||||
void
|
||||
ArmProcess32::setSyscallReturn(ThreadContext *tc, SyscallReturn sysret)
|
||||
{
|
||||
|
||||
if (objFile->getOpSys() == ObjectFile::FreeBSD) {
|
||||
// Decode return value
|
||||
if (sysret.encodedValue() >= 0)
|
||||
// FreeBSD checks the carry bit to determine if syscall is succeeded
|
||||
tc->setCCReg(CCREG_C, 0);
|
||||
else {
|
||||
sysret = -sysret.encodedValue();
|
||||
}
|
||||
}
|
||||
|
||||
tc->setIntReg(ReturnValueReg, sysret.encodedValue());
|
||||
if (sysret.count() > 1)
|
||||
tc->setIntReg(SyscallPseudoReturnReg, sysret.value2());
|
||||
}
|
||||
|
||||
void
|
||||
ArmProcess64::setSyscallReturn(ThreadContext *tc, SyscallReturn sysret)
|
||||
{
|
||||
|
||||
if (objFile->getOpSys() == ObjectFile::FreeBSD) {
|
||||
// Decode return value
|
||||
if (sysret.encodedValue() >= 0)
|
||||
// FreeBSD checks the carry bit to determine if syscall is succeeded
|
||||
tc->setCCReg(CCREG_C, 0);
|
||||
else {
|
||||
sysret = -sysret.encodedValue();
|
||||
}
|
||||
}
|
||||
|
||||
tc->setIntReg(ReturnValueReg, sysret.encodedValue());
|
||||
if (sysret.count() > 1)
|
||||
tc->setIntReg(SyscallPseudoReturnReg, sysret.value2());
|
||||
}
|
||||
|
||||
@@ -85,10 +85,6 @@ class ArmProcess32 : public ArmProcess
|
||||
uint32_t armHwcapImpl() const override;
|
||||
|
||||
public:
|
||||
|
||||
void setSyscallReturn(ThreadContext *tc,
|
||||
SyscallReturn return_value) override;
|
||||
|
||||
struct SyscallABI : public GenericSyscallABI32
|
||||
{
|
||||
static const std::vector<int> ArgumentRegs;
|
||||
@@ -132,10 +128,6 @@ class ArmProcess64 : public ArmProcess
|
||||
uint32_t armHwcapImpl() const override;
|
||||
|
||||
public:
|
||||
|
||||
void setSyscallReturn(ThreadContext *tc,
|
||||
SyscallReturn return_value) override;
|
||||
|
||||
struct SyscallABI : public GenericSyscallABI64
|
||||
{
|
||||
static const std::vector<int> ArgumentRegs;
|
||||
|
||||
@@ -188,23 +188,6 @@ MipsProcess::argsInit(int pageSize)
|
||||
tc->pcState(getStartPC());
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
MipsProcess::setSyscallReturn(ThreadContext *tc, SyscallReturn sysret)
|
||||
{
|
||||
if (sysret.successful()) {
|
||||
// no error
|
||||
tc->setIntReg(SyscallSuccessReg, 0);
|
||||
tc->setIntReg(ReturnValueReg, sysret.returnValue());
|
||||
} else {
|
||||
// got an error, return details
|
||||
tc->setIntReg(SyscallSuccessReg, (uint32_t)(-1));
|
||||
tc->setIntReg(ReturnValueReg, sysret.errnoValue());
|
||||
}
|
||||
if (sysret.count() > 1)
|
||||
tc->setIntReg(SyscallPseudoReturnReg, sysret.value2());
|
||||
}
|
||||
|
||||
const std::vector<int> MipsProcess::SyscallABI::ArgumentRegs = {
|
||||
4, 5, 6, 7, 8, 9
|
||||
};
|
||||
|
||||
@@ -49,8 +49,6 @@ class MipsProcess : public Process
|
||||
void argsInit(int pageSize);
|
||||
|
||||
public:
|
||||
void setSyscallReturn(ThreadContext *tc, SyscallReturn return_value);
|
||||
|
||||
struct SyscallABI : public GenericSyscallABI64
|
||||
{
|
||||
static const std::vector<int> ArgumentRegs;
|
||||
|
||||
@@ -269,19 +269,6 @@ PowerProcess::argsInit(int intSize, int pageSize)
|
||||
memState->setStackMin(roundDown(stack_min, pageSize));
|
||||
}
|
||||
|
||||
void
|
||||
PowerProcess::setSyscallReturn(ThreadContext *tc, SyscallReturn sysret)
|
||||
{
|
||||
Cr cr = tc->readIntReg(INTREG_CR);
|
||||
if (sysret.successful()) {
|
||||
cr.cr0.so = 0;
|
||||
} else {
|
||||
cr.cr0.so = 1;
|
||||
}
|
||||
tc->setIntReg(INTREG_CR, cr);
|
||||
tc->setIntReg(ReturnValueReg, sysret.encodedValue());
|
||||
}
|
||||
|
||||
const std::vector<int> PowerProcess::SyscallABI::ArgumentRegs = {
|
||||
3, 4, 5, 6, 7, 8
|
||||
};
|
||||
|
||||
@@ -48,8 +48,6 @@ class PowerProcess : public Process
|
||||
|
||||
public:
|
||||
void argsInit(int intSize, int pageSize);
|
||||
void setSyscallReturn(ThreadContext *tc,
|
||||
SyscallReturn return_value) override;
|
||||
|
||||
struct SyscallABI : public GenericSyscallABI64
|
||||
{
|
||||
|
||||
@@ -243,18 +243,6 @@ RiscvProcess::argsInit(int pageSize)
|
||||
memState->setStackMin(roundDown(memState->getStackMin(), pageSize));
|
||||
}
|
||||
|
||||
void
|
||||
RiscvProcess::setSyscallReturn(ThreadContext *tc, SyscallReturn sysret)
|
||||
{
|
||||
if (sysret.successful()) {
|
||||
// no error
|
||||
tc->setIntReg(SyscallPseudoReturnReg, sysret.returnValue());
|
||||
} else {
|
||||
// got an error, return details
|
||||
tc->setIntReg(SyscallPseudoReturnReg, sysret.encodedValue());
|
||||
}
|
||||
}
|
||||
|
||||
const std::vector<int> RiscvProcess::SyscallABI::ArgumentRegs = {
|
||||
10, 11, 12, 13, 14, 15, 16
|
||||
};
|
||||
|
||||
@@ -48,9 +48,6 @@ class RiscvProcess : public Process
|
||||
void argsInit(int pageSize);
|
||||
|
||||
public:
|
||||
void setSyscallReturn(ThreadContext *tc,
|
||||
SyscallReturn return_value) override;
|
||||
|
||||
virtual bool mmapGrowsDown() const override { return false; }
|
||||
|
||||
//FIXME RISCV needs to handle 64 bit arguments in its 32 bit ISA.
|
||||
|
||||
@@ -490,29 +490,3 @@ Sparc64Process::flushWindows(ThreadContext *tc)
|
||||
tc->setIntReg(INTREG_CANRESTORE, Canrestore);
|
||||
tc->setMiscReg(MISCREG_CWP, origCWP);
|
||||
}
|
||||
|
||||
static const int FirstArgumentReg = 8;
|
||||
|
||||
void
|
||||
SparcProcess::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);
|
||||
CCR ccr = tc->readIntReg(INTREG_CCR);
|
||||
RegVal val;
|
||||
if (sysret.successful()) {
|
||||
ccr.xcc.c = ccr.icc.c = 0;
|
||||
val = sysret.returnValue();
|
||||
} else {
|
||||
ccr.xcc.c = ccr.icc.c = 1;
|
||||
val = sysret.errnoValue();
|
||||
}
|
||||
tc->setIntReg(INTREG_CCR, ccr);
|
||||
if (pstate.am)
|
||||
val = bits(val, 31, 0);
|
||||
tc->setIntReg(ReturnValueReg, val);
|
||||
if (sysret.count() > 1)
|
||||
tc->setIntReg(SyscallPseudoReturnReg, sysret.value2());
|
||||
}
|
||||
|
||||
@@ -67,8 +67,6 @@ class SparcProcess : public Process
|
||||
Addr readSpillStart() { return spillStart; }
|
||||
|
||||
virtual void flushWindows(ThreadContext *tc) = 0;
|
||||
void setSyscallReturn(ThreadContext *tc,
|
||||
SyscallReturn return_value) override;
|
||||
|
||||
struct SyscallABI
|
||||
{
|
||||
|
||||
@@ -1041,12 +1041,6 @@ I386Process::argsInit(int pageSize)
|
||||
X86Process::argsInit<uint32_t>(pageSize, extraAuxvs);
|
||||
}
|
||||
|
||||
void
|
||||
X86Process::setSyscallReturn(ThreadContext *tc, SyscallReturn retval)
|
||||
{
|
||||
tc->setIntReg(INTREG_RAX, retval.encodedValue());
|
||||
}
|
||||
|
||||
void
|
||||
X86_64Process::clone(ThreadContext *old_tc, ThreadContext *new_tc,
|
||||
Process *p, RegVal flags)
|
||||
|
||||
@@ -80,8 +80,6 @@ namespace X86ISA
|
||||
|
||||
SyscallDesc* getDesc(int callnum) override;
|
||||
|
||||
void setSyscallReturn(ThreadContext *tc,
|
||||
SyscallReturn return_value) override;
|
||||
void clone(ThreadContext *old_tc, ThreadContext *new_tc,
|
||||
Process *process, RegVal flags) override;
|
||||
|
||||
|
||||
@@ -74,8 +74,6 @@ class Process : public SimObject
|
||||
DrainState drain() override;
|
||||
|
||||
virtual void syscall(ThreadContext *tc, Fault *fault) = 0;
|
||||
virtual void setSyscallReturn(ThreadContext *tc,
|
||||
SyscallReturn return_value) = 0;
|
||||
virtual SyscallDesc *getDesc(int callnum) = 0;
|
||||
|
||||
inline uint64_t uid() { return _uid; }
|
||||
|
||||
Reference in New Issue
Block a user