aboutsummaryrefslogtreecommitdiff
path: root/qtmips_machine/core.h
diff options
context:
space:
mode:
authorPavel Pisa <pisa@cmp.felk.cvut.cz>2019-01-30 17:53:54 +0100
committerPavel Pisa <pisa@cmp.felk.cvut.cz>2019-01-30 17:53:54 +0100
commita7abf58e5eadbe3a5898d9a60f1e135aaa700c5d (patch)
treef33f56df5487a28b04ff0117242ee7a841cc6c6e /qtmips_machine/core.h
parent08dc0c06d8874698c7d93e9804a0b236e60201dd (diff)
downloadqtmips-a7abf58e5eadbe3a5898d9a60f1e135aaa700c5d.tar.gz
qtmips-a7abf58e5eadbe3a5898d9a60f1e135aaa700c5d.tar.bz2
qtmips-a7abf58e5eadbe3a5898d9a60f1e135aaa700c5d.zip
Display execution stage forward signals in the view.
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Diffstat (limited to 'qtmips_machine/core.h')
-rw-r--r--qtmips_machine/core.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/qtmips_machine/core.h b/qtmips_machine/core.h
index b368b3b..386b486 100644
--- a/qtmips_machine/core.h
+++ b/qtmips_machine/core.h
@@ -21,6 +21,12 @@ public:
unsigned cycles(); // Returns number of executed cycles
+ enum ForwardFrom {
+ FORWARD_NONE = 0b00,
+ FORWARD_FROM_W = 0b01,
+ FORWARD_FROM_M = 0b10,
+ };
+
signals:
void instruction_fetched(const machine::Instruction &inst);
void instruction_decoded(const machine::Instruction &inst);
@@ -43,6 +49,8 @@ signals:
void execute_alu_value(std::uint32_t);
void execute_reg1_value(std::uint32_t);
void execute_reg2_value(std::uint32_t);
+ void execute_reg1_ff_value(std::uint32_t);
+ void execute_reg2_ff_value(std::uint32_t);
void execute_immediate_value(std::uint32_t);
void execute_regw_value(std::uint32_t);
void execute_memtoreg_value(std::uint32_t);
@@ -81,6 +89,8 @@ protected:
enum MemoryAccess::AccessControl memctl; // Decoded memory access type
std::uint32_t val_rs; // Value from register rs
std::uint32_t val_rt; // Value from register rt
+ ForwardFrom ff_rs;
+ ForwardFrom ff_rt;
};
struct dtExecute {
Instruction inst;