summaryrefslogtreecommitdiff
path: root/src/sim
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim')
-rw-r--r--src/sim/id.cc9
-rw-r--r--src/sim/if.cc9
-rw-r--r--src/sim/stage.cc12
3 files changed, 30 insertions, 0 deletions
diff --git a/src/sim/id.cc b/src/sim/id.cc
index 0c0be91..46694ad 100644
--- a/src/sim/id.cc
+++ b/src/sim/id.cc
@@ -142,3 +142,12 @@ void ID::decode_J_type(signed int &s1, signed int &s2, signed int &s3)
this->status = this->read_guard(*&s1);
}
+
+std::vector<int> ID::stage_info() {
+ std::vector<int> info;
+ if(this->curr_instr){
+ info.push_back(this->curr_instr->get_pc());
+ info.push_back(this->curr_instr->get_instr_bits());
+ }
+ return info;
+}
diff --git a/src/sim/if.cc b/src/sim/if.cc
index 4ab7f3e..fb49749 100644
--- a/src/sim/if.cc
+++ b/src/sim/if.cc
@@ -23,6 +23,15 @@ InstrDTO *IF::advance(Response p)
return r;
}
+std::vector<int> IF::stage_info() {
+ std::vector<int> info;
+ if(this->curr_instr){
+ info.push_back(this->curr_instr->get_pc());
+ info.push_back(this->curr_instr->get_instr_bits());
+ }
+ return info;
+}
+
void IF::advance_helper()
{
Response r;
diff --git a/src/sim/stage.cc b/src/sim/stage.cc
index 2857e1f..8a570f0 100644
--- a/src/sim/stage.cc
+++ b/src/sim/stage.cc
@@ -53,6 +53,18 @@ InstrDTO *Stage::advance(Response p)
return r;
}
+std::vector<int> Stage::stage_info() {
+ std::vector<int> info;
+ if(this->curr_instr){
+ info.push_back(this->curr_instr->get_mnemonic());
+ info.push_back(this->curr_instr->get_pc());
+ info.push_back(this->curr_instr->get_s1());
+ info.push_back(this->curr_instr->get_s2());
+ info.push_back(this->curr_instr->get_s3());
+ }
+ return info;
+ }
+
void Stage::set_condition(CC c, bool v)
{
if (v)