diff options
author | Kevin Lim <ktlim@umich.edu> | 2005-01-11 19:00:16 -0500 |
---|---|---|
committer | Kevin Lim <ktlim@umich.edu> | 2005-01-11 19:00:16 -0500 |
commit | 42f3b4ffb3fedcb70e9ff068ed7160dc6020b8c4 (patch) | |
tree | ba3d10f448bec63df45dff3bb7f2d6fbd6dcf9c7 /cpu/beta_cpu/ras.cc | |
parent | 202758eea20c092bb85d1886898c3816f377d288 (diff) | |
parent | 90d4436351620bd3861013333aabd152d5492df7 (diff) | |
download | gem5-42f3b4ffb3fedcb70e9ff068ed7160dc6020b8c4.tar.xz |
Merge changes.
base/traceflags.py:
Merge extra new CPU flags
cpu/static_inst.hh:
Include all the execute functions in static_inst_impl.hh
--HG--
extra : convert_revision : 78eb753bf709d37400e7c2418bb35d842d7c3f63
Diffstat (limited to 'cpu/beta_cpu/ras.cc')
-rw-r--r-- | cpu/beta_cpu/ras.cc | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/cpu/beta_cpu/ras.cc b/cpu/beta_cpu/ras.cc new file mode 100644 index 000000000..ca05f5a0d --- /dev/null +++ b/cpu/beta_cpu/ras.cc @@ -0,0 +1,42 @@ +#include "cpu/beta_cpu/ras.hh" + +ReturnAddrStack::ReturnAddrStack(unsigned _numEntries) + : numEntries(_numEntries), usedEntries(0), + tos(0) +{ + addrStack = new Addr[numEntries](0); +} + +void +ReturnAddrStack::push(const Addr &return_addr) +{ + incrTos(); + + addrStack[tos] = return_addr; + + if (usedEntries != numEntries) { + ++usedEntries; + } +} + +void +ReturnAddrStack::pop() +{ + // Not sure it's possible to really track usedEntries properly. +// assert(usedEntries > 0); + + if (usedEntries > 0) { + --usedEntries; + } + + decrTos(); +} + +void +ReturnAddrStack::restore(unsigned top_entry_idx, + const Addr &restored_target) +{ + tos = top_entry_idx; + + addrStack[tos] = restored_target; +} |