summaryrefslogtreecommitdiff
path: root/arch/sparc/regfile.hh
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc/regfile.hh')
-rw-r--r--arch/sparc/regfile.hh11
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/sparc/regfile.hh b/arch/sparc/regfile.hh
index 744d51771..5169a332f 100644
--- a/arch/sparc/regfile.hh
+++ b/arch/sparc/regfile.hh
@@ -140,7 +140,16 @@ namespace SparcISA
DPRINTF(Sparc, "Now using %s globals",
useAlt ? "alternate" : "regular");
regView[Globals] = useAlt ? altGlobals : regGlobals;
- offset[Globals] = useAlt ? AltGlobalOffset : RegGlobalOffset;
+
+ // You have not included an out-of-class definition of your static
+ // members. See [9.4.2]/4 and about a billion gcc bug reports. If
+ // statements get around the problem through some magic, and than
+ // seems nicer that putting a definition of them in a c file
+ // somewhere.
+ if (useAlt)
+ offset[Globals] = AltGlobalOffset;
+ else
+ offset[Globals] = RegGlobalOffset;
}
void serialize(std::ostream &os);