diff options
Diffstat (limited to 'src/arch/mips')
-rw-r--r-- | src/arch/mips/utility.cc | 11 | ||||
-rw-r--r-- | src/arch/mips/utility.hh | 4 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/arch/mips/utility.cc b/src/arch/mips/utility.cc index ab6a00af3..7dd74551e 100644 --- a/src/arch/mips/utility.cc +++ b/src/arch/mips/utility.cc @@ -52,7 +52,7 @@ using namespace std; namespace MipsISA { uint64_t -getArgument(ThreadContext *tc, int number, bool fp) +getArgument(ThreadContext *tc, int &number, uint8_t size, bool fp) { #if FULL_SYSTEM if (number < 4) { @@ -264,5 +264,14 @@ copyMiscRegs(ThreadContext *src, ThreadContext *dest) { panic("Copy Misc. Regs Not Implemented Yet\n"); } +void +skipFunction(ThreadContext *tc) +{ + Addr newpc = tc->readIntReg(ReturnAddressReg); + tc->setPC(newpc); + tc->setNextPC(tc->readPC() + sizeof(TheISA::MachInst)); + tc->setNextPC(tc->readNextPC() + sizeof(TheISA::MachInst)); +} + } // namespace MipsISA diff --git a/src/arch/mips/utility.hh b/src/arch/mips/utility.hh index f827e9b33..d073f3116 100644 --- a/src/arch/mips/utility.hh +++ b/src/arch/mips/utility.hh @@ -45,7 +45,7 @@ class ThreadContext; namespace MipsISA { -uint64_t getArgument(ThreadContext *tc, int number, bool fp); +uint64_t getArgument(ThreadContext *tc, int &number, uint8_t size, bool fp); //////////////////////////////////////////////////////////////////////// // @@ -103,6 +103,8 @@ void startupCPU(ThreadContext *tc, int cpuId); void copyRegs(ThreadContext *src, ThreadContext *dest); void copyMiscRegs(ThreadContext *src, ThreadContext *dest); +void skipFunction(ThreadContext *tc); + }; |