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
This commit is contained in:
parent
f47dcadfd8
commit
16021aa436
1 changed files with 8 additions and 7 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
}});
|
||||
|
|
Loading…
Reference in a new issue