diff options
Diffstat (limited to 'src/arch/alpha')
-rw-r--r-- | src/arch/alpha/utility.cc | 11 | ||||
-rw-r--r-- | src/arch/alpha/utility.hh | 3 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/arch/alpha/utility.cc b/src/arch/alpha/utility.cc index 0d865e520..80ec360b7 100644 --- a/src/arch/alpha/utility.cc +++ b/src/arch/alpha/utility.cc @@ -40,7 +40,7 @@ namespace AlphaISA { uint64_t -getArgument(ThreadContext *tc, int number, bool fp) +getArgument(ThreadContext *tc, int &number, uint8_t size, bool fp) { #if FULL_SYSTEM const int NumArgumentRegs = 6; @@ -96,5 +96,14 @@ copyMiscRegs(ThreadContext *src, ThreadContext *dest) copyIprs(src, dest); } +void +skipFunction(ThreadContext *tc) +{ + Addr newpc = tc->readIntReg(ReturnAddressReg); + tc->setPC(newpc); + tc->setNextPC(tc->readPC() + sizeof(TheISA::MachInst)); +} + + } // namespace AlphaISA diff --git a/src/arch/alpha/utility.hh b/src/arch/alpha/utility.hh index 281fc4492..360e155f8 100644 --- a/src/arch/alpha/utility.hh +++ b/src/arch/alpha/utility.hh @@ -41,7 +41,7 @@ namespace AlphaISA { -uint64_t getArgument(ThreadContext *tc, int number, bool fp); +uint64_t getArgument(ThreadContext *tc, int &number, uint8_t size, bool fp); inline bool inUserMode(ThreadContext *tc) @@ -94,6 +94,7 @@ void copyRegs(ThreadContext *src, ThreadContext *dest); void copyMiscRegs(ThreadContext *src, ThreadContext *dest); +void skipFunction(ThreadContext *tc); } // namespace AlphaISA #endif // __ARCH_ALPHA_UTILITY_HH__ |