diff options
author | Steve Reinhardt <stever@eecs.umich.edu> | 2003-12-16 11:46:52 -0800 |
---|---|---|
committer | Steve Reinhardt <stever@eecs.umich.edu> | 2003-12-16 11:46:52 -0800 |
commit | 16021aa4363bff23f9ab5db82c34b42f17c0a0da (patch) | |
tree | 66b7faf0c304af78f15280314fb59ac1ba727afd | |
parent | f47dcadfd8b50e97b51c05b72f19063b39686a7c (diff) | |
download | gem5-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
-rw-r--r-- | arch/alpha/isa_desc | 15 |
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; } } }}); |