summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-03-29 00:47:46 -0700
committerGabe Black <gblack@eecs.umich.edu>2007-03-29 00:47:46 -0700
commit0d5f6167ffbc78fb5e514a12875d6a873e054871 (patch)
tree4ee01b00cf7f96850811fea5b4659b75d7827816 /src/arch
parent55614caecca476a12ef711b8b6e459fee19028b9 (diff)
downloadgem5-0d5f6167ffbc78fb5e514a12875d6a873e054871.tar.xz
Allow "let" blocks to add code to the output files.
--HG-- extra : convert_revision : 0ffddb2b40dccbf2a3790464c843cfc1b43eaa02
Diffstat (limited to 'src/arch')
-rwxr-xr-xsrc/arch/isa_parser.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/arch/isa_parser.py b/src/arch/isa_parser.py
index f3981a6eb..a0d671da1 100755
--- a/src/arch/isa_parser.py
+++ b/src/arch/isa_parser.py
@@ -311,12 +311,19 @@ def p_output_exec(t):
def p_global_let(t):
'global_let : LET CODELIT SEMI'
updateExportContext()
+ exportContext["header_output"] = ''
+ exportContext["decoder_output"] = ''
+ exportContext["exec_output"] = ''
+ exportContext["decode_block"] = ''
try:
exec fixPythonIndentation(t[2]) in exportContext
except Exception, exc:
error(t.lineno(1),
'error: %s in global let block "%s".' % (exc, t[2]))
- t[0] = GenCode() # contributes nothing to the output C++ file
+ t[0] = GenCode(header_output = exportContext["header_output"],
+ decoder_output = exportContext["decoder_output"],
+ exec_output = exportContext["exec_output"],
+ decode_block = exportContext["decode_block"])
# Define the mapping from operand type extensions to C++ types and bit
# widths (stored in operandTypeMap).