summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2006-11-03 04:25:33 -0500
committerGabe Black <gblack@eecs.umich.edu>2006-11-03 04:25:33 -0500
commit118b9dc1f9e84a12ea26743f6cec1eac5b4ab13a (patch)
tree7eb447e419acb3607d7922453b3713696e05acf4 /src/arch
parentc8fc116c7636893517254f785707eba1726d3265 (diff)
downloadgem5-118b9dc1f9e84a12ea26743f6cec1eac5b4ab13a.tar.xz
Got rid of "inPalMode". Some places are still effectively checking if they are in PAL mode, however.
--HG-- extra : convert_revision : b52d9642efc474eaf97437fa2df879efefa0062b
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/alpha/ev5.cc2
-rw-r--r--src/arch/alpha/faults.cc2
-rw-r--r--src/arch/alpha/interrupts.hh15
3 files changed, 7 insertions, 12 deletions
diff --git a/src/arch/alpha/ev5.cc b/src/arch/alpha/ev5.cc
index 314b445e0..dca948bbd 100644
--- a/src/arch/alpha/ev5.cc
+++ b/src/arch/alpha/ev5.cc
@@ -147,7 +147,7 @@ AlphaISA::zeroRegisters(CPU *cpu)
Fault
SimpleThread::hwrei()
{
- if (!inPalMode())
+ if (!(readPC() & 0x3))
return new UnimplementedOpcodeFault;
setNextPC(readMiscReg(AlphaISA::IPR_EXC_ADDR));
diff --git a/src/arch/alpha/faults.cc b/src/arch/alpha/faults.cc
index 7179bf025..5efcf92e4 100644
--- a/src/arch/alpha/faults.cc
+++ b/src/arch/alpha/faults.cc
@@ -125,7 +125,7 @@ void AlphaFault::invoke(ThreadContext * tc)
countStat()++;
// exception restart address
- if (setRestartAddress() || !tc->inPalMode())
+ if (setRestartAddress() || !(tc->readPC() & 0x3))
tc->setMiscReg(AlphaISA::IPR_EXC_ADDR, tc->readPC());
if (skipFaultingInstruction()) {
diff --git a/src/arch/alpha/interrupts.hh b/src/arch/alpha/interrupts.hh
index 2f031f434..75031ae47 100644
--- a/src/arch/alpha/interrupts.hh
+++ b/src/arch/alpha/interrupts.hh
@@ -88,15 +88,6 @@ namespace AlphaISA
intstatus = 0;
}
- bool check_interrupt(int int_num) const {
- if (int_num > NumInterruptLevels)
- panic("int_num out of bounds\n");
-
- return interrupts[int_num] != 0;
- }
-
- bool check_interrupts() const { return intstatus != 0; }
-
void serialize(std::ostream &os)
{
SERIALIZE_ARRAY(interrupts, NumInterruptLevels);
@@ -109,6 +100,11 @@ namespace AlphaISA
UNSERIALIZE_SCALAR(intstatus);
}
+ bool check_interrupts(ThreadContext * tc) const
+ {
+ return (intstatus != 0) && !(tc->readPC() & 0x3);
+ }
+
Fault getInterrupt(ThreadContext * tc)
{
int ipl = 0;
@@ -163,7 +159,6 @@ namespace AlphaISA
}
private:
- uint64_t intr_status() const { return intstatus; }
};
}