Allow "let" blocks to add code to the output files.
authorGabe Black <gblack@eecs.umich.edu>
Thu, 29 Mar 2007 07:47:46 +0000 (00:47 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Thu, 29 Mar 2007 07:47:46 +0000 (00:47 -0700)
--HG--
extra : convert_revision : 0ffddb2b40dccbf2a3790464c843cfc1b43eaa02

src/arch/isa_parser.py

index f3981a6eb192b0f972a76766513d81713efc8741..a0d671da1a445e7f071bd993ae4a0da455bf9bc2 100755 (executable)
@@ -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).