Skip to content

Commit

Permalink
add support for l.lwa/l.swa atomic instructions
Browse files Browse the repository at this point in the history
This adds support for the l.lwa and l.swa atomic instructions
per the suggestion here:
https://www.dropbox.com/s/yqyfelu2yrutzwt/openrisc-arch-1.1-rev0.pdf

Currently only cappuccino makes use of them
  • Loading branch information
skristiansson committed May 4, 2014
1 parent cbdd7ab commit aa77169
Show file tree
Hide file tree
Showing 9 changed files with 135 additions and 15 deletions.
2 changes: 2 additions & 0 deletions rtl/verilog/mor1kx-defines.v
Expand Up @@ -98,6 +98,7 @@
`define OR1K_OPCODE_JR {2'b01, 4'h1}
`define OR1K_OPCODE_JALR {2'b01, 4'h2}
`define OR1K_OPCODE_MACI {2'b01, 4'h3}
`define OR1K_OPCODE_LWA {2'b01, 4'hB}
`define OR1K_OPCODE_CUST1 {2'b01, 4'hC}
`define OR1K_OPCODE_CUST2 {2'b01, 4'hD}
`define OR1K_OPCODE_CUST3 {2'b01, 4'hE}
Expand Down Expand Up @@ -144,6 +145,7 @@
`define OR1K_OPCODE_MAC {2'b11, 4'h1}
`define OR1K_OPCODE_MSB {2'b11, 4'h1}

`define OR1K_OPCODE_SWA {2'b11, 4'h3}
`define OR1K_OPCODE_SD {2'b11, 4'h4}
`define OR1K_OPCODE_SW {2'b11, 4'h5}
`define OR1K_OPCODE_SB {2'b11, 4'h6}
Expand Down
2 changes: 2 additions & 0 deletions rtl/verilog/mor1kx.v
Expand Up @@ -86,6 +86,7 @@ module mor1kx
parameter FEATURE_EXT = "NONE";
parameter FEATURE_CMOV = "ENABLED";
parameter FEATURE_FFL1 = "ENABLED";
parameter FEATURE_ATOMIC = "ENABLED";

parameter FEATURE_CUST1 = "NONE";
parameter FEATURE_CUST2 = "NONE";
Expand Down Expand Up @@ -474,6 +475,7 @@ module mor1kx
.FEATURE_EXT(FEATURE_EXT),
.FEATURE_CMOV(FEATURE_CMOV),
.FEATURE_FFL1(FEATURE_FFL1),
.FEATURE_ATOMIC(FEATURE_ATOMIC),
.FEATURE_CUST1(FEATURE_CUST1),
.FEATURE_CUST2(FEATURE_CUST2),
.FEATURE_CUST3(FEATURE_CUST3),
Expand Down
2 changes: 2 additions & 0 deletions rtl/verilog/mor1kx_cpu.v
Expand Up @@ -92,6 +92,7 @@ module mor1kx_cpu(/*AUTOARG*/
parameter FEATURE_EXT = "NONE";
parameter FEATURE_CMOV = "NONE";
parameter FEATURE_FFL1 = "NONE";
parameter FEATURE_ATOMIC = "ENABLED";

parameter FEATURE_CUST1 = "NONE";
parameter FEATURE_CUST2 = "NONE";
Expand Down Expand Up @@ -221,6 +222,7 @@ module mor1kx_cpu(/*AUTOARG*/
.FEATURE_EXT(FEATURE_EXT),
.FEATURE_CMOV(FEATURE_CMOV),
.FEATURE_FFL1(FEATURE_FFL1),
.FEATURE_ATOMIC(FEATURE_ATOMIC),
.FEATURE_CUST1(FEATURE_CUST1),
.FEATURE_CUST2(FEATURE_CUST2),
.FEATURE_CUST3(FEATURE_CUST3),
Expand Down
28 changes: 27 additions & 1 deletion rtl/verilog/mor1kx_cpu_cappuccino.v
Expand Up @@ -83,6 +83,8 @@ module mor1kx_cpu_cappuccino
parameter FEATURE_CMOV = "NONE";
parameter FEATURE_FFL1 = "NONE";

parameter FEATURE_ATOMIC = "ENABLED";

parameter FEATURE_CUST1 = "NONE";
parameter FEATURE_CUST2 = "NONE";
parameter FEATURE_CUST3 = "NONE";
Expand Down Expand Up @@ -153,6 +155,8 @@ module mor1kx_cpu_cappuccino
wire [OPTION_OPERAND_WIDTH-1:0] adder_result_o;// From mor1kx_execute_alu of mor1kx_execute_alu.v
wire [OPTION_OPERAND_WIDTH-1:0] alu_result_o;// From mor1kx_execute_alu of mor1kx_execute_alu.v
wire alu_valid_o; // From mor1kx_execute_alu of mor1kx_execute_alu.v
wire atomic_flag_clear_o; // From mor1kx_lsu_cappuccino of mor1kx_lsu_cappuccino.v
wire atomic_flag_set_o; // From mor1kx_lsu_cappuccino of mor1kx_lsu_cappuccino.v
wire branch_mispredict_o; // From mor1kx_branch_prediction of mor1kx_branch_prediction.v
wire carry_clear_o; // From mor1kx_execute_alu of mor1kx_execute_alu.v
wire carry_set_o; // From mor1kx_execute_alu of mor1kx_execute_alu.v
Expand Down Expand Up @@ -182,6 +186,7 @@ module mor1kx_cpu_cappuccino
wire ctrl_lsu_zext_o; // From mor1kx_execute_ctrl_cappuccino of mor1kx_execute_ctrl_cappuccino.v
wire ctrl_mfspr_ack_o; // From mor1kx_ctrl_cappuccino of mor1kx_ctrl_cappuccino.v
wire ctrl_mtspr_ack_o; // From mor1kx_ctrl_cappuccino of mor1kx_ctrl_cappuccino.v
wire ctrl_op_lsu_atomic_o; // From mor1kx_execute_ctrl_cappuccino of mor1kx_execute_ctrl_cappuccino.v
wire ctrl_op_lsu_load_o; // From mor1kx_execute_ctrl_cappuccino of mor1kx_execute_ctrl_cappuccino.v
wire ctrl_op_lsu_store_o; // From mor1kx_execute_ctrl_cappuccino of mor1kx_execute_ctrl_cappuccino.v
wire ctrl_op_mfspr_o; // From mor1kx_execute_ctrl_cappuccino of mor1kx_execute_ctrl_cappuccino.v
Expand Down Expand Up @@ -222,6 +227,7 @@ module mor1kx_cpu_cappuccino
wire decode_op_jal_o; // From mor1kx_decode of mor1kx_decode.v
wire decode_op_jbr_o; // From mor1kx_decode of mor1kx_decode.v
wire decode_op_jr_o; // From mor1kx_decode of mor1kx_decode.v
wire decode_op_lsu_atomic_o; // From mor1kx_decode of mor1kx_decode.v
wire decode_op_lsu_load_o; // From mor1kx_decode of mor1kx_decode.v
wire decode_op_lsu_store_o; // From mor1kx_decode of mor1kx_decode.v
wire decode_op_mfspr_o; // From mor1kx_decode of mor1kx_decode.v
Expand Down Expand Up @@ -274,6 +280,7 @@ module mor1kx_cpu_cappuccino
wire execute_op_jal_o; // From mor1kx_decode_execute_cappuccino of mor1kx_decode_execute_cappuccino.v
wire execute_op_jbr_o; // From mor1kx_decode_execute_cappuccino of mor1kx_decode_execute_cappuccino.v
wire execute_op_jr_o; // From mor1kx_decode_execute_cappuccino of mor1kx_decode_execute_cappuccino.v
wire execute_op_lsu_atomic_o;// From mor1kx_decode_execute_cappuccino of mor1kx_decode_execute_cappuccino.v
wire execute_op_lsu_load_o; // From mor1kx_decode_execute_cappuccino of mor1kx_decode_execute_cappuccino.v
wire execute_op_lsu_store_o; // From mor1kx_decode_execute_cappuccino of mor1kx_decode_execute_cappuccino.v
wire execute_op_mfspr_o; // From mor1kx_decode_execute_cappuccino of mor1kx_decode_execute_cappuccino.v
Expand Down Expand Up @@ -440,6 +447,7 @@ module mor1kx_cpu_cappuccino
.FEATURE_EXT(FEATURE_EXT),
.FEATURE_CMOV(FEATURE_CMOV),
.FEATURE_FFL1(FEATURE_FFL1),
.FEATURE_ATOMIC(FEATURE_ATOMIC),
.FEATURE_CUST1(FEATURE_CUST1),
.FEATURE_CUST2(FEATURE_CUST2),
.FEATURE_CUST3(FEATURE_CUST3),
Expand Down Expand Up @@ -472,6 +480,7 @@ module mor1kx_cpu_cappuccino
.decode_op_alu_o (decode_op_alu_o),
.decode_op_lsu_load_o (decode_op_lsu_load_o),
.decode_op_lsu_store_o (decode_op_lsu_store_o),
.decode_op_lsu_atomic_o (decode_op_lsu_atomic_o),
.decode_lsu_length_o (decode_lsu_length_o[1:0]),
.decode_lsu_zext_o (decode_lsu_zext_o),
.decode_op_mfspr_o (decode_op_mfspr_o),
Expand Down Expand Up @@ -534,6 +543,7 @@ module mor1kx_cpu_cappuccino
.decode_op_branch_i (decode_op_branch_o),
.decode_op_lsu_load_i (decode_op_lsu_load_o),
.decode_op_lsu_store_i (decode_op_lsu_store_o),
.decode_op_lsu_atomic_i (decode_op_lsu_atomic_o),
.decode_lsu_length_i (decode_lsu_length_o[1:0]),
.decode_lsu_zext_i (decode_lsu_zext_o),
.decode_op_mfspr_i (decode_op_mfspr_o),
Expand Down Expand Up @@ -589,6 +599,7 @@ module mor1kx_cpu_cappuccino
.execute_op_branch_o (execute_op_branch_o),
.execute_op_lsu_load_o (execute_op_lsu_load_o),
.execute_op_lsu_store_o (execute_op_lsu_store_o),
.execute_op_lsu_atomic_o (execute_op_lsu_atomic_o),
.execute_lsu_length_o (execute_lsu_length_o[1:0]),
.execute_lsu_zext_o (execute_lsu_zext_o),
.execute_op_mfspr_o (execute_op_mfspr_o),
Expand Down Expand Up @@ -654,6 +665,7 @@ module mor1kx_cpu_cappuccino
.decode_op_branch_i (decode_op_branch_o), // Templated
.decode_op_lsu_load_i (decode_op_lsu_load_o), // Templated
.decode_op_lsu_store_i (decode_op_lsu_store_o), // Templated
.decode_op_lsu_atomic_i (decode_op_lsu_atomic_o), // Templated
.decode_lsu_length_i (decode_lsu_length_o[1:0]), // Templated
.decode_lsu_zext_i (decode_lsu_zext_o), // Templated
.decode_op_mfspr_i (decode_op_mfspr_o), // Templated
Expand Down Expand Up @@ -816,8 +828,10 @@ module mor1kx_cpu_cappuccino
.ctrl_rfb_i (ctrl_rfb_o),
.exec_op_lsu_load_i (execute_op_lsu_load_o),
.exec_op_lsu_store_i (execute_op_lsu_store_o),
.exec_op_lsu_atomic_i (execute_op_lsu_atomic_o),
.ctrl_op_lsu_load_i (ctrl_op_lsu_load_o),
.ctrl_op_lsu_store_i (ctrl_op_lsu_store_o),
.ctrl_op_lsu_atomic_i (ctrl_op_lsu_atomic_o),
.ctrl_lsu_length_i (ctrl_lsu_length_o),
.ctrl_lsu_zext_i (ctrl_lsu_zext_o),
.ctrl_epcr_i (ctrl_epcr_o),
Expand Down Expand Up @@ -846,7 +860,8 @@ module mor1kx_cpu_cappuccino
.FEATURE_DMMU_HW_TLB_RELOAD(FEATURE_DMMU_HW_TLB_RELOAD),
.OPTION_DMMU_SET_WIDTH(OPTION_DMMU_SET_WIDTH),
.OPTION_DMMU_WAYS(OPTION_DMMU_WAYS),
.OPTION_STORE_BUFFER_DEPTH_WIDTH(OPTION_STORE_BUFFER_DEPTH_WIDTH)
.OPTION_STORE_BUFFER_DEPTH_WIDTH(OPTION_STORE_BUFFER_DEPTH_WIDTH),
.FEATURE_ATOMIC(FEATURE_ATOMIC)
)
mor1kx_lsu_cappuccino
(/*AUTOINST*/
Expand All @@ -859,6 +874,8 @@ module mor1kx_cpu_cappuccino
.lsu_except_dtlb_miss_o (lsu_except_dtlb_miss_o),
.lsu_except_dpagefault_o (lsu_except_dpagefault_o),
.store_buffer_err_o (store_buffer_err_o),
.atomic_flag_set_o (atomic_flag_set_o),
.atomic_flag_clear_o (atomic_flag_clear_o),
.spr_bus_dat_dc_o (spr_bus_dat_dc_i[OPTION_OPERAND_WIDTH-1:0]), // Templated
.spr_bus_ack_dc_o (spr_bus_ack_dc_i), // Templated
.spr_bus_dat_dmmu_o (spr_bus_dat_dmmu_i[OPTION_OPERAND_WIDTH-1:0]), // Templated
Expand All @@ -880,8 +897,10 @@ module mor1kx_cpu_cappuccino
.ctrl_rfb_i (ctrl_rfb_o), // Templated
.exec_op_lsu_load_i (execute_op_lsu_load_o), // Templated
.exec_op_lsu_store_i (execute_op_lsu_store_o), // Templated
.exec_op_lsu_atomic_i (execute_op_lsu_atomic_o), // Templated
.ctrl_op_lsu_load_i (ctrl_op_lsu_load_o), // Templated
.ctrl_op_lsu_store_i (ctrl_op_lsu_store_o), // Templated
.ctrl_op_lsu_atomic_i (ctrl_op_lsu_atomic_o), // Templated
.ctrl_lsu_length_i (ctrl_lsu_length_o), // Templated
.ctrl_lsu_zext_i (ctrl_lsu_zext_o), // Templated
.ctrl_epcr_i (ctrl_epcr_o), // Templated
Expand Down Expand Up @@ -1036,6 +1055,7 @@ module mor1kx_cpu_cappuccino
.lsu_except_dpagefault_i (lsu_except_dpagefault_o),
.op_lsu_load_i (execute_op_lsu_load_o),
.op_lsu_store_i (execute_op_lsu_store_o),
.op_lsu_atomic_i (execute_op_lsu_atomic_o),
.lsu_length_i (execute_lsu_length_o),
.lsu_zext_i (execute_lsu_zext_o),
.op_mfspr_i (execute_op_mfspr_o),
Expand Down Expand Up @@ -1089,6 +1109,7 @@ module mor1kx_cpu_cappuccino
.pc_ctrl_o (pc_execute_to_ctrl), // Templated
.ctrl_op_lsu_load_o (ctrl_op_lsu_load_o),
.ctrl_op_lsu_store_o (ctrl_op_lsu_store_o),
.ctrl_op_lsu_atomic_o (ctrl_op_lsu_atomic_o),
.ctrl_lsu_length_o (ctrl_lsu_length_o[1:0]),
.ctrl_lsu_zext_o (ctrl_lsu_zext_o),
.ctrl_op_mfspr_o (ctrl_op_mfspr_o),
Expand Down Expand Up @@ -1127,6 +1148,7 @@ module mor1kx_cpu_cappuccino
.du_stall_i (du_stall_i),
.op_lsu_load_i (execute_op_lsu_load_o), // Templated
.op_lsu_store_i (execute_op_lsu_store_o), // Templated
.op_lsu_atomic_i (execute_op_lsu_atomic_o), // Templated
.lsu_length_i (execute_lsu_length_o), // Templated
.lsu_zext_i (execute_lsu_zext_o), // Templated
.op_mfspr_i (execute_op_mfspr_o), // Templated
Expand Down Expand Up @@ -1159,6 +1181,8 @@ module mor1kx_cpu_cappuccino
.ctrl_rfb_i (ctrl_rfb_o),
.ctrl_flag_set_i (ctrl_flag_set_o),
.ctrl_flag_clear_i (ctrl_flag_clear_o),
.atomic_flag_set_i (atomic_flag_set_o),
.atomic_flag_clear_i (atomic_flag_clear_o),
.pc_ctrl_i (pc_execute_to_ctrl),
.pc_execute_i (pc_decode_to_execute),
.execute_op_branch_i (execute_op_branch_o),
Expand Down Expand Up @@ -1260,6 +1284,8 @@ module mor1kx_cpu_cappuccino
.ctrl_rfb_i (ctrl_rfb_o), // Templated
.ctrl_flag_set_i (ctrl_flag_set_o), // Templated
.ctrl_flag_clear_i (ctrl_flag_clear_o), // Templated
.atomic_flag_set_i (atomic_flag_set_o), // Templated
.atomic_flag_clear_i (atomic_flag_clear_o), // Templated
.pc_ctrl_i (pc_execute_to_ctrl), // Templated
.ctrl_op_mfspr_i (ctrl_op_mfspr_o), // Templated
.ctrl_op_mtspr_i (ctrl_op_mtspr_o), // Templated
Expand Down
13 changes: 9 additions & 4 deletions rtl/verilog/mor1kx_ctrl_cappuccino.v
Expand Up @@ -83,6 +83,8 @@ module mor1kx_ctrl_cappuccino

input ctrl_flag_set_i,
input ctrl_flag_clear_i,
input atomic_flag_set_i,
input atomic_flag_clear_i,

input [OPTION_OPERAND_WIDTH-1:0] pc_ctrl_i,

Expand Down Expand Up @@ -442,8 +444,11 @@ module mor1kx_ctrl_cappuccino
cpu_stall;

// Flag output
assign ctrl_flag_o = (!ctrl_flag_clear_i & spr_sr[`OR1K_SPR_SR_F]) |
ctrl_flag_set_i;
wire ctrl_flag_clear = ctrl_flag_clear_i | atomic_flag_clear_i;
wire ctrl_flag_set = ctrl_flag_set_i | atomic_flag_set_i;

assign ctrl_flag_o = (!ctrl_flag_clear & spr_sr[`OR1K_SPR_SR_F]) |
ctrl_flag_set;

// Carry output
assign ctrl_carry_o = (!ctrl_carry_clear_i & spr_sr[`OR1K_SPR_SR_CY]) |
Expand Down Expand Up @@ -599,8 +604,8 @@ module mor1kx_ctrl_cappuccino
end
else if (padv_ctrl)
begin
spr_sr[`OR1K_SPR_SR_F ] <= ctrl_flag_set_i ? 1 :
ctrl_flag_clear_i ? 0 :
spr_sr[`OR1K_SPR_SR_F ] <= ctrl_flag_set ? 1 :
ctrl_flag_clear ? 0 :
spr_sr[`OR1K_SPR_SR_F ];
spr_sr[`OR1K_SPR_SR_CY ] <= ctrl_carry_set_i ? 1 :
ctrl_carry_clear_i ? 0 :
Expand Down
27 changes: 23 additions & 4 deletions rtl/verilog/mor1kx_decode.v
Expand Up @@ -42,6 +42,7 @@ module mor1kx_decode
parameter FEATURE_EXT = "NONE",
parameter FEATURE_CMOV = "NONE",
parameter FEATURE_FFL1 = "NONE",
parameter FEATURE_ATOMIC = "ENABLED",

parameter FEATURE_CUST1 = "NONE",
parameter FEATURE_CUST2 = "NONE",
Expand Down Expand Up @@ -89,6 +90,7 @@ module mor1kx_decode

output decode_op_lsu_load_o,
output decode_op_lsu_store_o,
output decode_op_lsu_atomic_o,
output reg [1:0] decode_lsu_length_o,
output decode_lsu_zext_o,

Expand Down Expand Up @@ -139,12 +141,20 @@ module mor1kx_decode
// load opcodes are 6'b10_0000 to 6'b10_0110, 0 to 6, so check for 7 and up
assign decode_op_lsu_load_o = (decode_insn_i[31:30] == 2'b10) &
!(&decode_insn_i[28:26]) &
!decode_insn_i[29];
!decode_insn_i[29] ||
((opc_insn == `OR1K_OPCODE_LWA) &
(FEATURE_ATOMIC!="NONE"));

// Detect when instruction is store
assign decode_op_lsu_store_o = (opc_insn == `OR1K_OPCODE_SW) ||
(opc_insn == `OR1K_OPCODE_SB) ||
(opc_insn == `OR1K_OPCODE_SH);
(opc_insn == `OR1K_OPCODE_SH) ||
((opc_insn == `OR1K_OPCODE_SWA) &
(FEATURE_ATOMIC!="NONE"));

assign decode_op_lsu_atomic_o = ((opc_insn == `OR1K_OPCODE_LWA) ||
(opc_insn == `OR1K_OPCODE_SWA)) &
(FEATURE_ATOMIC!="NONE");

// Decode length of load/store operation
always @(*)
Expand All @@ -160,8 +170,10 @@ module mor1kx_decode
decode_lsu_length_o = 2'b01;

`OR1K_OPCODE_SW,
`OR1K_OPCODE_SWA,
`OR1K_OPCODE_LWZ,
`OR1K_OPCODE_LWS:
`OR1K_OPCODE_LWS,
`OR1K_OPCODE_LWA:
decode_lsu_length_o = 2'b10;

default:
Expand Down Expand Up @@ -239,7 +251,8 @@ module mor1kx_decode
// Which instructions cause writeback?
assign decode_rf_wb_o = (opc_insn == `OR1K_OPCODE_JAL |
opc_insn == `OR1K_OPCODE_MOVHI |
opc_insn == `OR1K_OPCODE_JALR) |
opc_insn == `OR1K_OPCODE_JALR |
opc_insn == `OR1K_OPCODE_LWA) |
// All '10????' opcodes except l.sfxxi
(decode_insn_i[31:30] == 2'b10 &
!(opc_insn == `OR1K_OPCODE_SFIMM)) |
Expand Down Expand Up @@ -268,6 +281,8 @@ module mor1kx_decode
assign imm_sext_sel = ((opc_insn[5:4] == 2'b10) &
~(opc_insn == `OR1K_OPCODE_ORI) &
~(opc_insn == `OR1K_OPCODE_ANDI)) |
(opc_insn == `OR1K_OPCODE_SWA) |
(opc_insn == `OR1K_OPCODE_LWA) |
(opc_insn == `OR1K_OPCODE_SW) |
(opc_insn == `OR1K_OPCODE_SH) |
(opc_insn == `OR1K_OPCODE_SB);
Expand Down Expand Up @@ -355,6 +370,10 @@ module mor1kx_decode
`OR1K_OPCODE_NOP:
decode_except_illegal_o = 1'b0;

`OR1K_OPCODE_SWA,
`OR1K_OPCODE_LWA:
decode_except_illegal_o = (FEATURE_ATOMIC=="NONE");

`OR1K_OPCODE_CUST1:
decode_except_illegal_o = (FEATURE_CUST1=="NONE");
`OR1K_OPCODE_CUST2:
Expand Down
6 changes: 6 additions & 0 deletions rtl/verilog/mor1kx_decode_execute_cappuccino.v
Expand Up @@ -107,6 +107,7 @@ module mor1kx_decode_execute_cappuccino

input decode_op_lsu_load_i,
input decode_op_lsu_store_i,
input decode_op_lsu_atomic_i,
input [1:0] decode_lsu_length_i,
input decode_lsu_zext_i,

Expand Down Expand Up @@ -142,6 +143,7 @@ module mor1kx_decode_execute_cappuccino

output reg execute_op_lsu_load_o,
output reg execute_op_lsu_store_o,
output reg execute_op_lsu_atomic_o,
output reg [1:0] execute_lsu_length_o,
output reg execute_lsu_zext_o,

Expand Down Expand Up @@ -222,6 +224,7 @@ module mor1kx_decode_execute_cappuccino
execute_op_mtspr_o <= 1'b0;
execute_op_lsu_load_o <= 1'b0;
execute_op_lsu_store_o <= 1'b0;
execute_op_lsu_atomic_o <= 1'b0;
execute_op_setflag_o <= 1'b0;
execute_op_jbr_o <= 1'b0;
execute_op_jr_o <= 1'b0;
Expand All @@ -242,6 +245,7 @@ module mor1kx_decode_execute_cappuccino
execute_op_movhi_o <= 1'b0;
execute_op_lsu_load_o <= 1'b0;
execute_op_lsu_store_o <= 1'b0;
execute_op_lsu_atomic_o <= 1'b0;
execute_op_setflag_o <= 1'b0;
execute_op_jbr_o <= 1'b0;
execute_op_jr_o <= 1'b0;
Expand All @@ -264,6 +268,7 @@ module mor1kx_decode_execute_cappuccino
execute_op_mtspr_o <= decode_op_mtspr_i;
execute_op_lsu_load_o <= decode_op_lsu_load_i;
execute_op_lsu_store_o <= decode_op_lsu_store_i;
execute_op_lsu_atomic_o <= decode_op_lsu_atomic_i;
execute_op_setflag_o <= decode_op_setflag_i;
execute_op_jbr_o <= decode_op_jbr_i;
execute_op_jr_o <= decode_op_jr_i;
Expand All @@ -286,6 +291,7 @@ module mor1kx_decode_execute_cappuccino
execute_op_mfspr_o <= 1'b0;
execute_op_lsu_load_o <= 1'b0;
execute_op_lsu_store_o <= 1'b0;
execute_op_lsu_atomic_o <= 1'b0;
execute_op_setflag_o <= 1'b0;
execute_op_jbr_o <= 1'b0;
execute_op_jr_o <= 1'b0;
Expand Down

0 comments on commit aa77169

Please sign in to comment.