Stefan Schuermans commited on 2012-02-10 22:56:14
Showing 1 changed files, with 4 additions and 2 deletions.
... | ... |
@@ -396,16 +396,18 @@ BEGIN |
396 | 396 |
END IF; |
397 | 397 |
END PROCESS p_reg_wr; |
398 | 398 |
|
399 |
- p_next_pc: PROCESS(r_pc, r_op, r_imm, s_cmp_res, r_imm_16, r_imm_26) |
|
399 |
+ p_next_pc: PROCESS(r_pc, r_op, r_imm, s_cmp_res, r_imm_16, r_imm_26, s_val_s) |
|
400 | 400 |
VARIABLE v_pc: signed(31 DOWNTO 0); |
401 | 401 |
VARIABLE v_rel: signed(17 DOWNTO 0); |
402 | 402 |
BEGIN |
403 | 403 |
IF r_op = op_j AND s_cmp_res = '1' THEN |
404 | 404 |
IF r_imm = imm_26 THEN |
405 | 405 |
n_pc <= r_pc(31 DOWNTO 28) & r_imm_26 & "00"; |
406 |
- ELSE |
|
406 |
+ ELSIF r_imm = imm_16se THEN |
|
407 | 407 |
n_pc <= std_logic_vector(signed(r_pc) + |
408 | 408 |
signed(r_imm_16 & "00")); |
409 |
+ ELSE |
|
410 |
+ n_pc <= s_val_s; |
|
409 | 411 |
END IF; |
410 | 412 |
ELSE |
411 | 413 |
n_pc <= std_logic_vector(signed(r_pc) + to_signed(4, 32)); |
412 | 414 |