summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas.sandberg@arm.com>2017-02-27 12:06:00 +0000
committerAndreas Sandberg <andreas.sandberg@arm.com>2017-02-27 12:06:00 +0000
commit8d2c3735d9ccb36341a31a86d82907b31edd52ef (patch)
tree49379334305d7af3f0f4c25dd2e5ca9a034e3e4f
parent60b26f1546cdafc6d7349e669dae3cea39c9c5c4 (diff)
downloadgem5-8d2c3735d9ccb36341a31a86d82907b31edd52ef.tar.xz
arch: Include generated decoder header after normal headers
The generated decoder header defines macros that represent bit fields within instructions. These fields typically have short names that conflict with names in other header files. Include the generated header after all normal header to avoid this issue. Change-Id: I53d149b75432c20abdbf651e32c3c785d897973b Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Curtis Dunham <curtis.dunham@arm.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
-rw-r--r--src/arch/generic/memhelpers.hh2
-rwxr-xr-xsrc/arch/isa_parser.py16
2 files changed, 14 insertions, 4 deletions
diff --git a/src/arch/generic/memhelpers.hh b/src/arch/generic/memhelpers.hh
index f1c1d3322..a0359a5a7 100644
--- a/src/arch/generic/memhelpers.hh
+++ b/src/arch/generic/memhelpers.hh
@@ -43,7 +43,9 @@
#ifndef __ARCH_GENERIC_MEMHELPERS_HH__
#define __ARCH_GENERIC_MEMHELPERS_HH__
+#include "arch/isa_traits.hh"
#include "base/types.hh"
+#include "mem/packet.hh"
#include "mem/request.hh"
#include "sim/byteswap.hh"
#include "sim/insttracer.hh"
diff --git a/src/arch/isa_parser.py b/src/arch/isa_parser.py
index 8d609ae5f..4f9cf2837 100755
--- a/src/arch/isa_parser.py
+++ b/src/arch/isa_parser.py
@@ -1318,8 +1318,6 @@ class ISAParser(Grammar):
print >>f, '#if !defined(__SPLIT) || (__SPLIT == 1)'
self.splits[f] = 1
# ensure requisite #include's
- elif filename in ['decoder-g.cc.inc', 'exec-g.cc.inc']:
- print >>f, '#include "decoder.hh"'
elif filename == 'decoder-g.hh.inc':
print >>f, '#include "base/bitfield.hh"'
@@ -1360,12 +1358,15 @@ class ISAParser(Grammar):
f.write('#include "%s"\n' % fn)
inc.append(fn)
+ fn = 'decoder.hh'
+ f.write('#include "%s"\n' % fn)
+ inc.append(fn)
+
fn = 'decode-method.cc.inc'
# is guaranteed to have been written for parse to complete
f.write('#include "%s"\n' % fn)
inc.append(fn)
- inc.append("decoder.hh")
print >>dep, file+':', ' '.join(inc)
extn = re.compile('(\.[^\.]+)$')
@@ -1386,6 +1387,10 @@ class ISAParser(Grammar):
f.write('#include "%s"\n' % fn)
inc.append(fn)
+ fn = 'decoder.hh'
+ f.write('#include "%s"\n' % fn)
+ inc.append(fn)
+
fn = 'decoder-ns.cc.inc'
assert(fn in self.files)
print >>f, 'namespace %s {' % self.namespace
@@ -1395,7 +1400,6 @@ class ISAParser(Grammar):
print >>f, '}'
inc.append(fn)
- inc.append("decoder.hh")
print >>dep, file+':', ' '.join(inc)
# instruction execution per-CPU model
@@ -1416,6 +1420,10 @@ class ISAParser(Grammar):
f.write(cpu.includes+"\n")
+ fn = 'decoder.hh'
+ f.write('#include "%s"\n' % fn)
+ inc.append(fn)
+
fn = 'exec-ns.cc.inc'
assert(fn in self.files)
print >>f, 'namespace %s {' % self.namespace