* Adapted R5900 COP2 interface code to clarified micro-mode interlock
authorFrank Ch. Eigler <fche@redhat.com>
Thu, 16 Apr 1998 19:27:55 +0000 (19:27 +0000)
committerFrank Ch. Eigler <fche@redhat.com>
Thu, 16 Apr 1998 19:27:55 +0000 (19:27 +0000)
  behavior.

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

index 6a34a66338b6b652a8c013bbbddbe47dc7701abe..180210581381319db035486fbd79af2300189495 100644 (file)
@@ -1,3 +1,10 @@
+start-sanitize-sky
+Thu Apr 16 15:24:14 1998  Frank Ch. Eigler  <fche@cygnus.com>
+
+       * interp.c (decode_coproc): Adapt COP2 micro interlock to
+       clarified specs.  Reset "M" bit; exit also on "E" bit.
+
+end-sanitize-sky
 start-sanitize-r5900
 Thu Apr 16 10:40:29 1998  Andrew Cagney  <cagney@b1.cygnus.com>
 
index 3e83dfc674d96cd767754bf2e652a62dcfb951d1..5ed3d4453b73bd99999c8c8ab97547019b33ff9e 100644 (file)
@@ -3316,12 +3316,17 @@ decode_coproc (SIM_DESC sd,
            int rt = i_20_16;
            int id = i_15_11;
 
-           /* interlock checking */
+           /* interlock checking: wait until M or E bits set */
            /* POLICY: never busy in macro mode */
-           if(vu0_busy() && interlock)
+           while(vu0_busy() && interlock)
              {
-               while(! vu0_micro_interlock_released())
-                 vu0_issue(sd);
+               if(vu0_micro_interlock_released())
+                 {
+                   vu0_micro_interlock_clear();
+                   break;
+                 }
+
+               vu0_issue(sd);
              }
            
            /* perform VU register address */