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...................");
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 {