update PATH_XXX encoding and fix DC bug
authoradam <adam@megacz.com>
Sat, 13 Dec 2008 04:30:09 +0000 (05:30 +0100)
committeradam <adam@megacz.com>
Sat, 13 Dec 2008 04:30:09 +0000 (05:30 +0100)
src/edu/berkeley/fleet/two/FleetTwoFleet.java

index c6f90bc..62f807d 100644 (file)
@@ -112,12 +112,12 @@ public abstract class FleetTwoFleet extends Fleet {
             TI                         = new Mask("..........110111..1..................");
             DI                         = new Mask("..........110111...1.................");
             FLUSH                      = new Mask(".........1110111.....................");
-            DC                         = new Mask("..........110111...11................");
+            DC                         = new Mask("..........110111....1................");
             DO                         = new Mask("..........110111.....1...............");
             TO                         = new Mask("..........110111......1..............");
-            PATH_IMMEDIATE             = new Mask("..........110111.......0vvvvvvvvvvvvv");
-            PATH_DATA                  = new Mask("..........110111.......11............");
-            PATH_NOCHANGE              = new Mask("..........110111.......10............");
+            PATH_IMMEDIATE             = new Mask("..........110111.......1vvvvvvvvvvvvv");
+            PATH_DATA                  = new Mask("..........110111.......00............");
+            PATH_NOCHANGE              = new Mask("..........110111.......01............");
 
             SET_OLC_FROM_IMMEDIATE     = new Mask("..........111101.0.............vvvvvv");
             SET_OLC_FROM_DATA_LATCH    = new Mask("..........111101.1...................");
@@ -407,15 +407,15 @@ public abstract class FleetTwoFleet extends Fleet {
             if (!inst.interruptible)             instr = NOT_INTERRUPTIBLE.set(instr);
 
             if (inst.latchPath)                  instr = PATH_DATA.set(instr);
-            else {
+            else if (inst.path!=null) {
                 instr  = PATH_IMMEDIATE.set(instr);
-                if (inst.path != null) {
-                    BitVector bv  = getDestAddr(inst.path);
-                    BitVector bv2 = new BitVector(PATH_IMMEDIATE.valmaskwidth);
-                    for(int i=0; i<Math.min(bv.length(),bv2.length()); i++)
-                        bv2.set(i, bv.get(i));
-                    instr  = PATH_IMMEDIATE.setval(instr, bv2);
-                }
+                BitVector bv  = getDestAddr(inst.path);
+                BitVector bv2 = new BitVector(PATH_IMMEDIATE.valmaskwidth);
+                for(int i=0; i<Math.min(bv.length(),bv2.length()); i++)
+                    bv2.set(i, bv.get(i));
+                instr  = PATH_IMMEDIATE.setval(instr, bv2);
+            } else {
+                instr  = PATH_NOCHANGE.set(instr);
             }
 
         } else {