change CBD size field from 6 bits to 9 bits
[fleet.git] / src / edu / berkeley / fleet / two / FleetTwoFleet.java
index 7936ad0..0559065 100644 (file)
@@ -89,8 +89,8 @@ public abstract class FleetTwoFleet extends Fleet {
         PACKET_SIGNAL              = new Mask("......................................v...........");
         PACKET_DEST                = new Mask(".......................................vvvvvvvvvvv");
 
-        CBD_SIZE                   = new Mask("...............................vvvvvv");
-        CBD_OFFSET                 = new Mask("vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv......");
+        CBD_SIZE                   = new Mask("............................vvvvvvvvv");
+        CBD_OFFSET                 = new Mask("vvvvvvvvvvvvvvvvvvvvvvvvvvvv.........");
 
         WHOLE_WORD                 = new Mask("vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv");
 
@@ -261,6 +261,19 @@ public abstract class FleetTwoFleet extends Fleet {
     public int getShiftWidth() { return SHIFT.valmaskwidth; }
     public int getSetWidth() { return SET_IMMEDIATE.valmaskwidth+1; }
 
+
+    public int getMaxCodeBagSize() {
+        return (1<<CBD_SIZE.valmaskwidth)-1;
+    }
+    public BitVector makeCodeBagDescriptor(long offset, long length) {
+        BitVector descriptor = new BitVector(getWordWidth());
+        CBD_OFFSET.setval(descriptor, offset);
+        CBD_SIZE.setval(descriptor, length);
+        return descriptor;
+    }
+
+
+
     // FIXME: should use BitVector here
     public Instruction readInstruction(long inst, Dock dispatchFrom) {
         Dock dock = getPathByAddr(dispatchFrom, DISPATCH_PATH.getvalAsBitVector(inst)).getDestination().getDock();