summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/alpha/ev5.cc5
-rw-r--r--arch/alpha/isa_desc3
2 files changed, 6 insertions, 2 deletions
diff --git a/arch/alpha/ev5.cc b/arch/alpha/ev5.cc
index 96c51a2aa..551cbdabf 100644
--- a/arch/alpha/ev5.cc
+++ b/arch/alpha/ev5.cc
@@ -237,6 +237,11 @@ ExecContext::readIpr(int idx, Fault &fault)
retval = ipr[idx];
break;
+ case AlphaISA::IPR_CC:
+ retval |= ipr[idx] & ULL(0xffffffff00000000);
+ retval |= curTick & ULL(0x00000000ffffffff);
+ break;
+
case AlphaISA::IPR_VA:
// SFX: unlocks interrupt status registers
retval = ipr[idx];
diff --git a/arch/alpha/isa_desc b/arch/alpha/isa_desc
index c4d367211..0cfe5b452 100644
--- a/arch/alpha/isa_desc
+++ b/arch/alpha/isa_desc
@@ -2390,8 +2390,7 @@ decode OPCODE default Unknown::unknown() {
format BasicOperate {
0xc000: rpcc({{
#ifdef FULL_SYSTEM
- uint64_t cc = xc->readIpr(AlphaISA::IPR_CC, fault);
- Ra = (cc<63:32> | curTick<31:0>);
+ Ra = xc->readIpr(AlphaISA::IPR_CC, fault);
#else
Ra = curTick;
#endif