X86: Create a handy way to access labels from the ROM in microcode.
authorGabe Black <gblack@eecs.umich.edu>
Mon, 13 Oct 2008 00:52:51 +0000 (17:52 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Mon, 13 Oct 2008 00:52:51 +0000 (17:52 -0700)
src/arch/x86/isa/microasm.isa
src/arch/x86/isa/microops/base.isa
src/arch/x86/isa/rom.isa

index 9a5019f10abc172a0b52011265b799372f7493b0..d7b008145c4ee395edd4ae83f06123e75b67f2a3 100644 (file)
@@ -183,6 +183,11 @@ let {{
 
     assembler.symbols["label"] = labeler
 
+    def rom_labeler(labelStr):
+        return "romMicroPC(RomLabels::extern_label_%s)" % labelStr
+
+    assembler.symbols["rom_label"] = rom_labeler
+
     def stack_index(index):
         return "(NUM_FLOATREGS + (((%s) + 8) %% 8))" % index
 
index 994e997d875502142e2cc8d315d72fad7b0a5b65..057d237ad998ad9235bf6a514b1b2aeb74699744 100644 (file)
@@ -88,6 +88,7 @@ let {{
                 // env may not be used in the microop's constructor.
                 RegIndex reg = env.reg;
                 reg = reg;
+                using namespace RomLabels;
                 return %s;
             }
         '''
index 7d3eb86702b9751bf2dc7eeaa063fdb863aed4f1..59b28005670986a37c00f85640571ace72ebc401 100644 (file)
@@ -55,9 +55,6 @@ 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" \