blob: 7666f825f7d00cce7343cd8be8f53defa5550865 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#ifndef __RAS_HH__
#define __RAS_HH__
// For Addr type.
#include "arch/alpha/isa_traits.hh"
class ReturnAddrStack
{
public:
ReturnAddrStack(unsigned numEntries);
Addr top()
{ return addrStack[tos]; }
unsigned topIdx()
{ return tos; }
void push(const Addr &return_addr);
void pop();
void restore(unsigned top_entry_idx, const Addr &restored_target);
private:
inline void incrTos()
{ tos = (tos + 1) % numEntries; }
inline void decrTos()
{ tos = (tos == 0 ? numEntries - 1 : tos - 1); }
Addr *addrStack;
unsigned numEntries;
unsigned usedEntries;
unsigned tos;
};
#endif // __RAS_HH__
|