summaryrefslogtreecommitdiff
path: root/arch/alpha/ev5.cc
diff options
context:
space:
mode:
authorAndrew Schultz <alschult@umich.edu>2004-02-18 21:38:55 -0500
committerAndrew Schultz <alschult@umich.edu>2004-02-18 21:38:55 -0500
commit12747d3084339d9db52d32e75215242b38474887 (patch)
treea053a1f60a14174e873c0507ef5d84daf74a9d9f /arch/alpha/ev5.cc
parent2d5ef88e1c782376746c6025843cf2a10ad741a9 (diff)
downloadgem5-12747d3084339d9db52d32e75215242b38474887.tar.xz
Change the physical memory logic, and also add misspeculation fix to
tlb index calls that are called from ExecContext::readIpr arch/alpha/ev5.cc: Fix misspeculation bugs for misspeculated IPR accesses --HG-- extra : convert_revision : c9ffcf9ef8123dfcaee1606c05aee8ad60d893d7
Diffstat (limited to 'arch/alpha/ev5.cc')
-rw-r--r--arch/alpha/ev5.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/alpha/ev5.cc b/arch/alpha/ev5.cc
index 8494ee9f6..aaa81a58d 100644
--- a/arch/alpha/ev5.cc
+++ b/arch/alpha/ev5.cc
@@ -240,7 +240,9 @@ ExecContext::readIpr(int idx, Fault &fault)
case AlphaISA::IPR_VA:
// SFX: unlocks interrupt status registers
retval = ipr[idx];
- regs.intrlock = false;
+
+ if (!misspeculating())
+ regs.intrlock = false;
break;
case AlphaISA::IPR_VA_FORM:
@@ -253,7 +255,7 @@ ExecContext::readIpr(int idx, Fault &fault)
case AlphaISA::IPR_DTB_PTE:
{
- AlphaISA::PTE &pte = dtb->index();
+ AlphaISA::PTE &pte = dtb->index(!misspeculating());
retval |= ((u_int64_t)pte.ppn & ULL(0x7ffffff)) << 32;
retval |= ((u_int64_t)pte.xre & ULL(0xf)) << 8;