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
|
@ -2367,25 +2367,26 @@ decode OPCODE default Unknown::unknown() {
|
||||||
|
|
||||||
#ifdef FULL_SYSTEM
|
#ifdef FULL_SYSTEM
|
||||||
0x00: CallPal::call_pal({{
|
0x00: CallPal::call_pal({{
|
||||||
using namespace AlphaISA;
|
|
||||||
|
|
||||||
if (!palValid ||
|
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
|
// invalid pal function code, or attempt to do privileged
|
||||||
// PAL call in non-kernel mode
|
// PAL call in non-kernel mode
|
||||||
fault = Unimplemented_Opcode_Fault;
|
fault = Unimplemented_Opcode_Fault;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
bool dopal = true;
|
||||||
|
|
||||||
if (!xc->misspeculating()) {
|
if (!xc->misspeculating()) {
|
||||||
// check to see if simulator wants to do something special
|
// check to see if simulator wants to do something special
|
||||||
// on this PAL call (including maybe suppress it)
|
// on this PAL call (including maybe suppress it)
|
||||||
bool dopal = xc->simPalCheck(palFunc);
|
dopal = xc->simPalCheck(palFunc);
|
||||||
|
|
||||||
Annotate::Callpal(xc, palFunc);
|
Annotate::Callpal(xc, palFunc);
|
||||||
|
|
||||||
if (dopal) {
|
if (dopal) {
|
||||||
swap_palshadow(&xc->regs, true);
|
AlphaISA::swap_palshadow(&xc->regs, true);
|
||||||
xc->setIpr(IPR_EXC_ADDR, NPC);
|
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
|
// unrealistic) to set NPC, as the control-flow change
|
||||||
// won't get committed.
|
// won't get committed.
|
||||||
if (dopal) {
|
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