summaryrefslogtreecommitdiff
path: root/src/cpu/static_inst.cc
diff options
context:
space:
mode:
authorAndrew Bardsley <Andrew.Bardsley@arm.com>2014-05-09 18:58:47 -0400
committerAndrew Bardsley <Andrew.Bardsley@arm.com>2014-05-09 18:58:47 -0400
commitbf78299f04f0a99a72a4a2977777ee67877784cb (patch)
tree3383e056aaf54fd4707cab9b005556f2beeb58b8 /src/cpu/static_inst.cc
parent8087d2622d4c7c55def5a0f2daec4be951f1929b (diff)
downloadgem5-bf78299f04f0a99a72a4a2977777ee67877784cb.tar.xz
cpu: Add flag name printing to StaticInst
This patch adds a the member function StaticInst::printFlags to allow all of an instruction's flags to be printed without using the individual is... member functions or resorting to exposing the 'flags' vector It also replaces the enum definition StaticInst::Flags with a Python-generated enumeration and adds to the enum generation mechanism in src/python/m5/params.py to allow Enums to be placed in namespaces other than Enums or, alternatively, in wrapper structs allowing them to be inherited by other classes (so populating that class's name-space with the enumeration element names).
Diffstat (limited to 'src/cpu/static_inst.cc')
-rw-r--r--src/cpu/static_inst.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/cpu/static_inst.cc b/src/cpu/static_inst.cc
index 2a7b584eb..387cf0575 100644
--- a/src/cpu/static_inst.cc
+++ b/src/cpu/static_inst.cc
@@ -92,3 +92,20 @@ StaticInst::disassemble(Addr pc, const SymbolTable *symtab) const
return *cachedDisassembly;
}
+
+void
+StaticInst::printFlags(std::ostream &outs,
+ const std::string &separator) const
+{
+ bool printed_a_flag = false;
+
+ for (unsigned int flag = IsNop; flag < Num_Flags; flag++) {
+ if (flags[flag]) {
+ if (printed_a_flag)
+ outs << separator;
+
+ outs << FlagsStrings[flag];
+ printed_a_flag = true;
+ }
+ }
+}