aboutsummaryrefslogtreecommitdiff
path: root/qtmips_machine/core.h
diff options
context:
space:
mode:
authorPavel Pisa <pisa@cmp.felk.cvut.cz>2019-02-05 12:46:08 +0100
committerPavel Pisa <pisa@cmp.felk.cvut.cz>2019-02-05 12:46:08 +0100
commite9ffa56110da05a6938ad690872cdac6d48fd586 (patch)
tree22da4ca26d3cfe6e7277b92843209300b5a99e09 /qtmips_machine/core.h
parentfc343acc4d81d06e5cba92b74de3565b6d12dfcf (diff)
downloadqtmips-e9ffa56110da05a6938ad690872cdac6d48fd586.tar.gz
qtmips-e9ffa56110da05a6938ad690872cdac6d48fd586.tar.bz2
qtmips-e9ffa56110da05a6938ad690872cdac6d48fd586.zip
Reorganize PC handling and implement full REGIMM decode.
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Diffstat (limited to 'qtmips_machine/core.h')
-rw-r--r--qtmips_machine/core.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/qtmips_machine/core.h b/qtmips_machine/core.h
index 6f9509f..ac0ee81 100644
--- a/qtmips_machine/core.h
+++ b/qtmips_machine/core.h
@@ -70,6 +70,8 @@ signals:
void instruction_writeback(const machine::Instruction &inst);
void instruction_program_counter(const machine::Instruction &inst);
+ void fetch_jump_reg_value(std::uint32_t);
+ void fetch_jump_value(std::uint32_t);
void fetch_branch_value(std::uint32_t);
void decode_instruction_value(std::uint32_t);
void decode_reg1_value(std::uint32_t);
@@ -136,6 +138,10 @@ protected:
bool alu_req_rt; // requires rt value for ALU or SW
bool bjr_req_rs; // requires rs for beq, bne, blez, bgtz, jr nad jalr
bool bjr_req_rt; // requires rt for beq, bne
+ bool branch; // branch instruction
+ bool jump; // jump
+ bool bj_not; // negate branch condition
+ bool bgt_blez; // BGTZ/BLEZ instead of BGEZ/BLTZ
bool forward_m_d_rs; // forwarding required for beq, bne, blez, bgtz, jr nad jalr
bool forward_m_d_rt; // forwarding required for beq, bne
enum AluOp aluop; // Decoded ALU operation