]> Joshua Wise's Git repositories - firearm.git/blobdiff - Execute.v
really fix execute
[firearm.git] / Execute.v
index 3a21968a02d002aa3977de264acdda951807b4c9..d93a7ee22465b64490ffb0b40b67e9566edcd198 100644 (file)
--- a/Execute.v
+++ b/Execute.v
@@ -19,7 +19,9 @@ module Execute(
        output reg [31:0] outcpsr = 0,
        output reg write_reg = 1'bx,
        output reg [3:0] write_num = 4'bxxxx,
-       output reg [31:0] write_data = 32'hxxxxxxxx
+       output reg [31:0] write_data = 32'hxxxxxxxx,
+       output reg [31:0] outpc,
+       output reg outflush
        );
        
        reg mult_start;
@@ -129,8 +131,17 @@ module Execute(
                end
                `DECODE_LDRSTR_UNDEFINED,       /* Undefined. I hate ARM */
                `DECODE_LDRSTR,         /* Single data transfer */
-               `DECODE_LDMSTM,         /* Block data transfer */
-               `DECODE_BRANCH,         /* Branch */
+               `DECODE_LDMSTM:         /* Block data transfer */
+               begin end
+               `DECODE_BRANCH:
+               begin
+                       outpc = pc + op0;
+                       if(insn[24]) begin
+                               next_write_reg = 1;
+                               next_write_num = 4'hE; /* link register */
+                               next_write_data = pc + 32'h4;
+                       end
+               end                     /* Branch */
                `DECODE_LDCSTC,         /* Coprocessor data transfer */
                `DECODE_CDP,            /* Coprocessor data op */
                `DECODE_MRCMCR,         /* Coprocessor register transfer */
This page took 0.026366 seconds and 4 git commands to generate.