From 05dbc1d17121a70ad9b85d44f32d95704b22305a Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Mon, 9 Dec 2019 16:59:01 -0800 Subject: [PATCH] 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 Reviewed-by: Bobby R. Bruce Maintainer: Gabe Black --- src/arch/arm/process.cc | 38 -------------------------------------- src/arch/arm/process.hh | 8 -------- src/arch/mips/process.cc | 17 ----------------- src/arch/mips/process.hh | 2 -- src/arch/power/process.cc | 13 ------------- src/arch/power/process.hh | 2 -- src/arch/riscv/process.cc | 12 ------------ src/arch/riscv/process.hh | 3 --- src/arch/sparc/process.cc | 26 -------------------------- src/arch/sparc/process.hh | 2 -- src/arch/x86/process.cc | 6 ------ src/arch/x86/process.hh | 2 -- src/sim/process.hh | 2 -- 13 files changed, 133 deletions(-) diff --git a/src/arch/arm/process.cc b/src/arch/arm/process.cc index b997d6c8f..9cfa43127 100644 --- a/src/arch/arm/process.cc +++ b/src/arch/arm/process.cc @@ -477,41 +477,3 @@ const std::vector ArmProcess32::SyscallABI::ArgumentRegs = { const std::vector 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()); -} diff --git a/src/arch/arm/process.hh b/src/arch/arm/process.hh index 4ebe614f6..08100fcd4 100644 --- a/src/arch/arm/process.hh +++ b/src/arch/arm/process.hh @@ -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 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 ArgumentRegs; diff --git a/src/arch/mips/process.cc b/src/arch/mips/process.cc index f3bb38751..afeef8bd1 100644 --- a/src/arch/mips/process.cc +++ b/src/arch/mips/process.cc @@ -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 MipsProcess::SyscallABI::ArgumentRegs = { 4, 5, 6, 7, 8, 9 }; diff --git a/src/arch/mips/process.hh b/src/arch/mips/process.hh index 124dd56fc..d7b233fe1 100644 --- a/src/arch/mips/process.hh +++ b/src/arch/mips/process.hh @@ -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 ArgumentRegs; diff --git a/src/arch/power/process.cc b/src/arch/power/process.cc index dd161fdf3..3af8788ed 100644 --- a/src/arch/power/process.cc +++ b/src/arch/power/process.cc @@ -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 PowerProcess::SyscallABI::ArgumentRegs = { 3, 4, 5, 6, 7, 8 }; diff --git a/src/arch/power/process.hh b/src/arch/power/process.hh index 91152aadf..cd973931b 100644 --- a/src/arch/power/process.hh +++ b/src/arch/power/process.hh @@ -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 { diff --git a/src/arch/riscv/process.cc b/src/arch/riscv/process.cc index 88dbf7cd5..360ff11b6 100644 --- a/src/arch/riscv/process.cc +++ b/src/arch/riscv/process.cc @@ -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 RiscvProcess::SyscallABI::ArgumentRegs = { 10, 11, 12, 13, 14, 15, 16 }; diff --git a/src/arch/riscv/process.hh b/src/arch/riscv/process.hh index 806a91416..b256962d3 100644 --- a/src/arch/riscv/process.hh +++ b/src/arch/riscv/process.hh @@ -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. diff --git a/src/arch/sparc/process.cc b/src/arch/sparc/process.cc index 046a053a1..f2d1de2e7 100644 --- a/src/arch/sparc/process.cc +++ b/src/arch/sparc/process.cc @@ -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()); -} diff --git a/src/arch/sparc/process.hh b/src/arch/sparc/process.hh index c958e7d87..79e3e41fb 100644 --- a/src/arch/sparc/process.hh +++ b/src/arch/sparc/process.hh @@ -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 { diff --git a/src/arch/x86/process.cc b/src/arch/x86/process.cc index 9db4eab33..04c9db9b9 100644 --- a/src/arch/x86/process.cc +++ b/src/arch/x86/process.cc @@ -1041,12 +1041,6 @@ I386Process::argsInit(int pageSize) X86Process::argsInit(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) diff --git a/src/arch/x86/process.hh b/src/arch/x86/process.hh index 7a9f691ad..3d3924155 100644 --- a/src/arch/x86/process.hh +++ b/src/arch/x86/process.hh @@ -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; diff --git a/src/sim/process.hh b/src/sim/process.hh index e40e741b9..35be983b0 100644 --- a/src/sim/process.hh +++ b/src/sim/process.hh @@ -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; } -- 2.30.2