diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:11 -0500 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:11 -0500 |
commit | dbee6e0c5406200066b8185fd38fa47dae7cdd2f (patch) | |
tree | cc1cb169d8a215010d2adbf1b4eea82d70fa695a /src/arch/arm/insts/mem.hh | |
parent | 239c9af90d61b2877a8cee8b91f162e7a0bf1e72 (diff) | |
download | gem5-dbee6e0c5406200066b8185fd38fa47dae7cdd2f.tar.xz |
ARM: Add a base class for SRS.
Diffstat (limited to 'src/arch/arm/insts/mem.hh')
-rw-r--r-- | src/arch/arm/insts/mem.hh | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/arch/arm/insts/mem.hh b/src/arch/arm/insts/mem.hh index ae3437120..50f718b99 100644 --- a/src/arch/arm/insts/mem.hh +++ b/src/arch/arm/insts/mem.hh @@ -87,6 +87,30 @@ class RfeOp : public PredOp std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; }; +// The address is a base register plus an immediate. +class SrsOp : public PredOp +{ + public: + enum AddrMode { + DecrementAfter, + DecrementBefore, + IncrementAfter, + IncrementBefore + }; + protected: + uint32_t regMode; + AddrMode mode; + bool wb; + + SrsOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, + uint32_t _regMode, AddrMode _mode, bool _wb) + : PredOp(mnem, _machInst, __opClass), + regMode(_regMode), mode(_mode), wb(_wb) + {} + + std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; +}; + class Memory : public PredOp { public: |