@@ -9,8 +9,8 @@ namespace core {
9
9
using namespace Ripes ;
10
10
11
11
class Control_DUAL : public Component {
12
- static RegWrSrcDual do_reg_wr_src_ctrl_dual (const VSRTL_VT_U & opc) {
13
- switch (magic_enum::enum_value<RVInstr>( opc) ) {
12
+ static RegWrSrcDual do_reg_wr_src_ctrl_dual (RVInstr opc) {
13
+ switch (opc) {
14
14
// Jump instructions
15
15
case RVInstr::JALR:
16
16
case RVInstr::JAL:
@@ -21,7 +21,7 @@ class Control_DUAL : public Component {
21
21
}
22
22
}
23
23
24
- static RegWrSrcDataDual do_reg_wr_src_ctrl_data (const VSRTL_VT_U & opc) {
24
+ static RegWrSrcDataDual do_reg_wr_src_ctrl_data (RVInstr opc) {
25
25
if (Control::do_mem_ctrl (opc) != MemOp::NOP) {
26
26
return RegWrSrcDataDual::MEM;
27
27
} else {
@@ -33,65 +33,72 @@ class Control_DUAL : public Component {
33
33
Control_DUAL (const std::string &name, SimComponent *parent)
34
34
: Component(name, parent) {
35
35
comp_ctrl << [=] {
36
- return exec_valid.uValue () ? Control::do_comp_ctrl (opcode_exec.uValue ())
37
- : CompOp::NOP;
36
+ return exec_valid.uValue ()
37
+ ? Control::do_comp_ctrl (opcode_exec.eValue <RVInstr>())
38
+ : CompOp::NOP;
38
39
};
39
40
do_branch << [=] {
40
- return exec_valid.uValue () ? Control::do_branch_ctrl (opcode_exec.uValue ())
41
- : 0 ;
41
+ return exec_valid.uValue ()
42
+ ? Control::do_branch_ctrl (opcode_exec.eValue <RVInstr>())
43
+ : 0 ;
42
44
};
43
45
do_jump << [=] {
44
- return exec_valid.uValue () ? Control::do_jump_ctrl (opcode_exec.uValue ())
45
- : 0 ;
46
+ return exec_valid.uValue ()
47
+ ? Control::do_jump_ctrl (opcode_exec.eValue <RVInstr>())
48
+ : 0 ;
46
49
};
47
50
mem_ctrl << [=] {
48
- return data_valid.uValue () ? Control::do_mem_ctrl (opcode_data.uValue ())
49
- : MemOp::NOP;
51
+ return data_valid.uValue ()
52
+ ? Control::do_mem_ctrl (opcode_data.eValue <RVInstr>())
53
+ : MemOp::NOP;
50
54
};
51
55
52
56
reg_do_write_ctrl_exec << [=] {
53
57
return exec_valid.uValue () &&
54
- Control::do_reg_do_write_ctrl (opcode_exec.uValue ());
58
+ Control::do_reg_do_write_ctrl (opcode_exec.eValue <RVInstr> ());
55
59
};
56
60
reg_do_write_ctrl_data << [=] {
57
61
return data_valid.uValue () &&
58
- Control::do_reg_do_write_ctrl (opcode_data.uValue ());
62
+ Control::do_reg_do_write_ctrl (opcode_data.eValue <RVInstr> ());
59
63
};
60
64
61
65
reg_wr_src_ctrl <<
62
- [=] { return do_reg_wr_src_ctrl_dual (opcode_exec.uValue ()); };
66
+ [=] { return do_reg_wr_src_ctrl_dual (opcode_exec.eValue <RVInstr> ()); };
63
67
reg_wr_src_data_ctrl <<
64
- [=] { return do_reg_wr_src_ctrl_data (opcode_data.uValue ()); };
68
+ [=] { return do_reg_wr_src_ctrl_data (opcode_data.eValue <RVInstr> ()); };
65
69
66
70
alu_op1_ctrl_exec << [=] {
67
71
return exec_valid.uValue ()
68
- ? Control::do_alu_op1_ctrl (opcode_exec.uValue ())
72
+ ? Control::do_alu_op1_ctrl (opcode_exec.eValue <RVInstr> ())
69
73
: AluSrc1::REG1;
70
74
};
71
75
alu_op2_ctrl_exec << [=] {
72
76
return exec_valid.uValue ()
73
- ? Control::do_alu_op2_ctrl (opcode_exec.uValue ())
77
+ ? Control::do_alu_op2_ctrl (opcode_exec.eValue <RVInstr> ())
74
78
: AluSrc2::REG2;
75
79
};
76
80
alu_ctrl_exec << [=] {
77
- return exec_valid.uValue () ? Control::do_alu_ctrl (opcode_exec.uValue ())
78
- : ALUOp::NOP;
81
+ return exec_valid.uValue ()
82
+ ? Control::do_alu_ctrl (opcode_exec.eValue <RVInstr>())
83
+ : ALUOp::NOP;
79
84
};
80
85
81
86
alu_op2_ctrl_data << [=] {
82
87
return data_valid.uValue ()
83
- ? Control::do_alu_op2_ctrl (opcode_data.uValue ())
88
+ ? Control::do_alu_op2_ctrl (opcode_data.eValue <RVInstr> ())
84
89
: AluSrc2::REG2;
85
90
};
86
91
alu_ctrl_data << [=] {
87
- return data_valid.uValue () ? Control::do_alu_ctrl (opcode_data.uValue ())
88
- : ALUOp::NOP;
92
+ return data_valid.uValue ()
93
+ ? Control::do_alu_ctrl (opcode_data.eValue <RVInstr>())
94
+ : ALUOp::NOP;
89
95
};
90
96
91
- mem_do_write_ctrl <<
92
- [=] { return Control::do_do_mem_write_ctrl (opcode_data.uValue ()); };
97
+ mem_do_write_ctrl << [=] {
98
+ return Control::do_do_mem_write_ctrl (opcode_data.eValue <RVInstr>());
99
+ };
93
100
mem_do_read_ctrl <<
94
- [=] { return Control::do_do_read_ctrl (opcode_data.uValue ()); };
101
+ [=] { return Control::do_do_read_ctrl (opcode_data.eValue <RVInstr> ()); };
95
102
}
96
103
97
104
INPUTPORT_ENUM (opcode_exec, RVInstr);
0 commit comments