summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorNathan Binkert <binkertn@umich.edu>2004-02-29 14:54:52 -0500
committerNathan Binkert <binkertn@umich.edu>2004-02-29 14:54:52 -0500
commit27960f6d858e92572d37604e92747d0b45591665 (patch)
treedd8ab574d000d74ebdf31269e017b992ab7d9a9a /arch
parentc79deda8cd404565bbd277e67b3533b6c13fac74 (diff)
downloadgem5-27960f6d858e92572d37604e92747d0b45591665.tar.xz
fix rpcc
arch/alpha/ev5.cc: actually implement the cycle count register arch/alpha/isa_desc: the rpcc instruction really just reads the cycle count register --HG-- extra : convert_revision : a0edec85672377a62b90950efc17b62b375220b1
Diffstat (limited to 'arch')
-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