summaryrefslogtreecommitdiff
path: root/arch/alpha
diff options
context:
space:
mode:
authorSteve Reinhardt <stever@eecs.umich.edu>2003-12-16 11:46:52 -0800
committerSteve Reinhardt <stever@eecs.umich.edu>2003-12-16 11:46:52 -0800
commit16021aa4363bff23f9ab5db82c34b42f17c0a0da (patch)
tree66b7faf0c304af78f15280314fb59ac1ba727afd /arch/alpha
parentf47dcadfd8b50e97b51c05b72f19063b39686a7c (diff)
downloadgem5-16021aa4363bff23f9ab5db82c34b42f17c0a0da.tar.xz
Fix previously committed call_pal fix... the main problem was in the
makefile, such that decoder.cc was not getting rebuilt. Also add -fno-strict-aliasing to fix all the bizarre problems I've been having with g++ 3.3.x. arch/alpha/isa_desc: Fix compilation problems. AlphaISA is a class now, not a namespace. --HG-- extra : convert_revision : 1583cebc1258c57cbd286c1955d11648150fa1f4
Diffstat (limited to 'arch/alpha')
-rw-r--r--arch/alpha/isa_desc15
1 files changed, 8 insertions, 7 deletions
diff --git a/arch/alpha/isa_desc b/arch/alpha/isa_desc
index 293b0fcf6..f0a4699f4 100644
--- a/arch/alpha/isa_desc
+++ b/arch/alpha/isa_desc
@@ -2367,25 +2367,26 @@ decode OPCODE default Unknown::unknown() {
#ifdef FULL_SYSTEM
0x00: CallPal::call_pal({{
- using namespace AlphaISA;
-
if (!palValid ||
- (palPriv && xc->readIpr(IPR_ICM, fault) != mode_kernel)) {
+ (palPriv
+ && xc->readIpr(AlphaISA::IPR_ICM, fault) != AlphaISA::mode_kernel)) {
// invalid pal function code, or attempt to do privileged
// PAL call in non-kernel mode
fault = Unimplemented_Opcode_Fault;
}
else {
+ bool dopal = true;
+
if (!xc->misspeculating()) {
// check to see if simulator wants to do something special
// on this PAL call (including maybe suppress it)
- bool dopal = xc->simPalCheck(palFunc);
+ dopal = xc->simPalCheck(palFunc);
Annotate::Callpal(xc, palFunc);
if (dopal) {
- swap_palshadow(&xc->regs, true);
- xc->setIpr(IPR_EXC_ADDR, NPC);
+ AlphaISA::swap_palshadow(&xc->regs, true);
+ xc->setIpr(AlphaISA::IPR_EXC_ADDR, NPC);
}
}
@@ -2393,7 +2394,7 @@ decode OPCODE default Unknown::unknown() {
// unrealistic) to set NPC, as the control-flow change
// won't get committed.
if (dopal) {
- NPC = xc->readIpr(IPR_PAL_BASE, fault) + palOffset;
+ NPC = xc->readIpr(AlphaISA::IPR_PAL_BASE, fault) + palOffset;
}
}
}});