summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2008-10-12 20:44:11 -0700
committerGabe Black <gblack@eecs.umich.edu>2008-10-12 20:44:11 -0700
commit6074b1abf2e235f9a5d3ad78879a805ca335dc0e (patch)
tree67640c9b80cec42bc70728c7d13195b0cd1e4df9 /src/arch
parent6b46e5204d52c8e46b48541d5112f7e9a1cadc43 (diff)
downloadgem5-6074b1abf2e235f9a5d3ad78879a805ca335dc0e.tar.xz
X86: Implement local labels for the ROM that actually refer into the ROM.
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/x86/isa/microasm.isa5
-rw-r--r--src/arch/x86/isa/rom.isa3
2 files changed, 8 insertions, 0 deletions
diff --git a/src/arch/x86/isa/microasm.isa b/src/arch/x86/isa/microasm.isa
index 29ec6dc94..81aa1dafe 100644
--- a/src/arch/x86/isa/microasm.isa
+++ b/src/arch/x86/isa/microasm.isa
@@ -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
diff --git a/src/arch/x86/isa/rom.isa b/src/arch/x86/isa/rom.isa
index 59b280056..7d3eb8670 100644
--- a/src/arch/x86/isa/rom.isa
+++ b/src/arch/x86/isa/rom.isa
@@ -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" \