From: Lauri P. <lpe...@ni...> - 2000-09-05 18:45:55
|
Hello, One of the Motorola errata files ("040de.txt" in my Motorola archive, "DOCUMENTATION CLARIFICATION FOR MC68040, MC68EC040 & MC68LC040") states: "MOVE16 (Ax)+,(Ay)+ where Ax=Ay is functionally the same as MOVE16 (Ax),(Ay)+. The address register only gets incremented once and the line is copied over itself instead of copied into the next line." So in op op_f620_0(), instead of: m68k_areg(regs, srcreg) += 16;\r\n"); m68k_areg(regs, dstreg) += 16;\r\n"); we should probably do: if(srcreg != dstreg) m68k_areg(regs, srcreg) += 16;\r\n"); m68k_areg(regs, dstreg) += 16;\r\n"); I know that this is a degenerate case, but Murphy's Law states that some weird program relies on this particular behavior :) Lauri |