* R5900 COP2 sim testing in progress. The majority of instructions actually
authorFrank Ch. Eigler <fche@redhat.com>
Tue, 7 Apr 1998 22:47:53 +0000 (22:47 +0000)
committerFrank Ch. Eigler <fche@redhat.com>
Tue, 7 Apr 1998 22:47:53 +0000 (22:47 +0000)
  work!

[ChangeLog.sky]

* sky-vu.h (vu_device): Represent "macro instruction just stuffed
  into fetch buffer" condition with new "m" bit.  Rename old "m" to
  "l".

* sky-libvpe.c (indebug): Save snapshot of environment value;
  workaround for suspected memory corruption.
(fetch_inst): Respect new "m" macro-instruction flag for reporting
  successful fetch to caller.
(exec_inst): Disassemble instruction here instead of fetch time.
   Renamed old "m" -> "l" flag in VU state to track interlock
  release.
(vpecallms_cycle): Call exec_inst only if fetch_inst did some
  work.

* sky-vu.c (vu_attach, vu[01]_device): Revamped initialization to
  ensure complete clear of tail part of struct at attach time.
(vu0_busy): Fix thinko.
(vu0_macro_issue): Adapt to new "l" flag.
(vu0_micro_interlock_released): Ditto.
  (write_vu_special_reg): Ditto.
(read_vu_special_reg): Compute VBS0/VBS1 bits more explicitly.
   The other VU status bits are not yet computed.

[ChangeLog]

* interp.c (decode_coproc): Do not apply superfluous E (end) flag
  to upper code of generated VU instruction.

sim/mips/ChangeLog
sim/mips/interp.c

index 2c0f0b9..ecd4caf 100644 (file)
@@ -1,4 +1,12 @@
 start-sanitize-sky
+       Tue Apr  7 18:32:49 1998  Frank Ch. Eigler  <fche@cygnus.com>
+
+       * interp.c (decode_coproc): Do not apply superfluous E (end) flag
+       to upper code of generated VU instruction.
+       
+end-sanitize-sky
+       
+start-sanitize-sky
 Mon Apr  6 19:55:56 1998  Frank Ch. Eigler  <fche@cygnus.com>
 
        * interp.c (cop_[ls]q): Replaced stub with proper COP2 code.
index 7368695..2d5d4f4 100644 (file)
@@ -3394,7 +3394,7 @@ decode_coproc (SIM_DESC sd,
          {
            unsigned_4 vu_upper, vu_lower;
            vu_upper =
-             0x40000000 | /* bits 31 .. 25 */
+             0x00000000 | /* bits 31 .. 25 */
              (instruction & 0x01ffffff); /* bits 24 .. 0 */
            vu_lower = 0x8000033c; /* NOP */
 
@@ -3413,7 +3413,7 @@ decode_coproc (SIM_DESC sd,
                (i_5_0 >= 0x3c && i_10_6 >= 0x0c)) /* VMOVE .. VRXOR */
          {                            /* N.B.: VWAITQ already covered by prior case */
            unsigned_4 vu_upper, vu_lower;
-           vu_upper = 0x400002ff; /* END/NOP */
+           vu_upper = 0x000002ff; /* NOP/NOP */
            vu_lower =
              0x10000000 | /* bits 31 .. 25 */
              (instruction & 0x01ffffff); /* bits 24 .. 0 */