Commit bd03375c authored by Tristan Gingold's avatar Tristan Gingold Committed by Dimitris Lampridis

debug: handle ebreak as a branch.

parent 0e4dc0d4
......@@ -277,11 +277,12 @@ module urv_cpu
// from D stage
.d_valid_i(d2x_valid),
.d_is_csr_i (d2x_is_csr),
.d_is_mret_i (d2x_is_mret),
.d_is_ebreak_i (d2x_is_ebreak),
.d_csr_imm_i (d2x_csr_imm),
.d_csr_sel_i (d2x_csr_sel),
.d_is_csr_i(d2x_is_csr),
.d_is_mret_i(d2x_is_mret),
.d_is_ebreak_i(d2x_is_ebreak),
.d_dbg_mode_i(dbg_enabled_o),
.d_csr_imm_i(d2x_csr_imm),
.d_csr_sel_i(d2x_csr_sel),
.d_pc_i(d2x_pc),
.d_rd_i(d2x_rd),
.d_fun_i(d2x_fun),
......
......@@ -50,6 +50,7 @@ module urv_exec
input d_is_csr_i,
input d_is_mret_i,
input d_is_ebreak_i,
input d_dbg_mode_i,
input [4:0] d_csr_imm_i,
input [11:0] d_csr_sel_i,
......@@ -243,6 +244,8 @@ module urv_exec
branch_target <= exception_address;
else if (x_exception)
branch_target <= `URV_TRAP_VECTOR;
else if (d_is_ebreak_i)
branch_target <= d_pc_i;
else
branch_target <= dm_addr;
......@@ -447,7 +450,7 @@ module urv_exec
`OPC_BRANCH:
branch_take <= branch_condition_met;
`OPC_SYSTEM:
branch_take <= d_is_mret_i;
branch_take <= d_is_mret_i || (d_is_ebreak_i && !d_dbg_mode_i);
default:
branch_take <= 0;
endcase // case (d_opcode_i)
......
......@@ -101,7 +101,8 @@ module urv_fetch
f_pc_o <= pc;
pc <= pc_next;
if((dbg_force_i || x_dbg_toggle) && !dbg_mode)
if(!dbg_mode
&& (dbg_force_i || x_dbg_toggle || pipeline_cnt != 0))
begin
// Try to enter in debug mode.
f_valid_o <= 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment