X-Git-Url: http://git.joshuawise.com/firearm.git/blobdiff_plain/5989b2f5fea99c05785a516ed029920fd2951112..838e283e2d47ad2d3abbd4d2f6ae6ffb695b9073:/Memory.v diff --git a/Memory.v b/Memory.v index c735ed9..696b1a4 100644 --- a/Memory.v +++ b/Memory.v @@ -325,17 +325,21 @@ module Memory( if (insn[20] == 0 /* store to coprocessor */) cp_write = op0; else begin - next_write_reg = 1'b1; - next_write_num = insn[15:12]; - next_write_data = cp_read; + if (insn[15:12] != 4'hF /* Fuck you ARM */) begin + next_write_reg = 1'b1; + next_write_num = insn[15:12]; + next_write_data = cp_read; + end else + next_outcpsr = {cp_read[31:28], cpsr[27:0]}; end if (cp_busy) begin outstall = 1; next_outbubble = 1; end if (!cp_ack) begin - $display("WARNING: Possible MRCMCR undefined instruction"); + $display("WARNING: Possible MRCMCR undefined instruction: cp_ack %d, cp_busy %d",cp_ack, cp_busy); end + $display("MRCMCR: ack %d, busy %d", cp_ack, cp_busy); end default: begin end endcase