summaryrefslogtreecommitdiff
path: root/src/arch/arm/insts/mem.hh
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2010-06-02 12:58:11 -0500
committerGabe Black <gblack@eecs.umich.edu>2010-06-02 12:58:11 -0500
commitdbee6e0c5406200066b8185fd38fa47dae7cdd2f (patch)
treecc1cb169d8a215010d2adbf1b4eea82d70fa695a /src/arch/arm/insts/mem.hh
parent239c9af90d61b2877a8cee8b91f162e7a0bf1e72 (diff)
downloadgem5-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.hh24
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: