summaryrefslogtreecommitdiff
path: root/src/cpu/inorder/thread_context.cc
diff options
context:
space:
mode:
authorYasuko Eckert <yasuko.eckert@amd.com>2013-10-15 14:22:44 -0400
committerYasuko Eckert <yasuko.eckert@amd.com>2013-10-15 14:22:44 -0400
commit2c293823aa7cb6d2cac4c0ff35e2023ff132a8f2 (patch)
tree040fdd5bad814d7cb7ee40934974d2b38b28d67a /src/cpu/inorder/thread_context.cc
parent552622184752dc798bc81f9b0b395db68aee9511 (diff)
downloadgem5-2c293823aa7cb6d2cac4c0ff35e2023ff132a8f2.tar.xz
cpu: add a condition-code register class
Add a third register class for condition codes, in parallel with the integer and FP classes. No ISAs use the CC class at this point though.
Diffstat (limited to 'src/cpu/inorder/thread_context.cc')
-rw-r--r--src/cpu/inorder/thread_context.cc31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/cpu/inorder/thread_context.cc b/src/cpu/inorder/thread_context.cc
index aab8c226a..763cc6df2 100644
--- a/src/cpu/inorder/thread_context.cc
+++ b/src/cpu/inorder/thread_context.cc
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2012 ARM Limited
+ * Copyright (c) 2013 Advanced Micro Devices, Inc.
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -190,6 +191,14 @@ InOrderThreadContext::readFloatRegBits(int reg_idx)
return cpu->readFloatRegBits(reg_idx, tid);
}
+CCReg
+InOrderThreadContext::readCCReg(int reg_idx)
+{
+ ThreadID tid = thread->threadId();
+ reg_idx = cpu->isa[tid]->flattenCCIndex(reg_idx);
+ return cpu->readCCReg(reg_idx, tid);
+}
+
uint64_t
InOrderThreadContext::readRegOtherThread(int reg_idx, ThreadID tid)
{
@@ -221,6 +230,14 @@ InOrderThreadContext::setFloatRegBits(int reg_idx, FloatRegBits val)
}
void
+InOrderThreadContext::setCCReg(int reg_idx, CCReg val)
+{
+ ThreadID tid = thread->threadId();
+ reg_idx = cpu->isa[tid]->flattenCCIndex(reg_idx);
+ cpu->setCCReg(reg_idx, val, tid);
+}
+
+void
InOrderThreadContext::setRegOtherThread(int misc_reg, const MiscReg &val,
ThreadID tid)
{
@@ -281,3 +298,17 @@ InOrderThreadContext::setFloatRegBitsFlat(int idx, FloatRegBits val)
const ThreadID tid = thread->threadId();
cpu->setFloatRegBits(idx, val, tid);
}
+
+CCReg
+InOrderThreadContext::readCCRegFlat(int idx)
+{
+ const ThreadID tid = thread->threadId();
+ return cpu->readCCReg(idx, tid);
+}
+
+void
+InOrderThreadContext::setCCRegFlat(int idx, CCReg val)
+{
+ const ThreadID tid = thread->threadId();
+ cpu->setCCReg(idx, val, tid);
+}