X86: Implement local labels for the ROM that actually refer into the ROM.
authorGabe Black <gblack@eecs.umich.edu>
Mon, 13 Oct 2008 03:44:11 +0000 (20:44 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Mon, 13 Oct 2008 03:44:11 +0000 (20:44 -0700)
src/arch/x86/isa/microasm.isa
src/arch/x86/isa/rom.isa

index 29ec6dc9462816f2b834149fc0eded461fabe32b..81aa1dafe5e8c12a124f1ccfb72c60716e49cd9e 100644 (file)
@@ -188,6 +188,11 @@ let {{
 
     assembler.symbols["rom_label"] = rom_labeler
 
+    def rom_local_labeler(labelStr):
+        return "romMicroPC(RomLabels::label_%s)" % labelStr
+
+    assembler.symbols["rom_local_label"] = rom_local_labeler
+
     def stack_index(index):
         return "(NUM_FLOATREGS + (((%s) + 8) %% 8))" % index
 
index 59b28005670986a37c00f85640571ace72ebc401..7d3eb86702b9751bf2dc7eeaa063fdb863aed4f1 100644 (file)
@@ -55,6 +55,9 @@ let {{
 
         def getDeclaration(self):
             declareLabels = "namespace RomLabels {\n"
+            for (label, microop) in self.labels.items():
+                declareLabels += "const static uint64_t label_%s = %d;\n" \
+                                  % (label, microop.micropc)
             for (label, microop) in self.externs.items():
                 declareLabels += \
                     "const static MicroPC extern_label_%s = %d;\n" \