anchor.diff:  		let off = tpl_2(req);
   		Offset o = ?;
   		Bit#(8) p = ?;
  -		Bit#(40) barrier8 = extend(tpl_3(regions[ptr-1]))*extend(ord8);
  -		Bit#(40) barrier4 = extend(tpl_2(regions[ptr-1]))*extend(ord4);
  -		Bit#(40) barrier0 = extend(tpl_1(regions[ptr-1]))*extend(ord0);
  +		Bit#(40) barrier8 = tpl_3(regions[ptr-1]);
  +		Bit#(40) barrier4 = tpl_2(regions[ptr-1]);
  +		Bit#(40) barrier0 = tpl_1(regions[ptr-1]);
   		if (off < barrier8) begin
   		   //$display("request: ptr=%h off=%h barrier8=%h", ptr, off, barrier8);
   		   o = tagged OOrd8 truncate(off);
  
positive.code: 	 else begin
  	    idxReg <= idxReg+1;
  	 end
  	 Tuple3#(Bit#(8),Bit#(8),Bit#(8)) tt = regions[pointer-1];
  	 Page page = ?;
  	 if (len == ord0) begin
  	    regions[pointer-1] <= tuple3(idxReg+1, tpl_2(tt), tpl_3(tt));
  	    page = tagged POrd0 truncate(offset>>page_shift0);
  	 end
  	 else if (len == ord4) begin
  	    regions[pointer-1] <= tuple3(tpl_1(tt), idxReg+1,tpl_3(tt));
  	    page = tagged POrd4 truncate(offset>>page_shift4);
  	 end
  	 else if (len == ord8) begin
  	    regions[pointer-1] <= tuple3(tpl_1(tt), tpl_2(tt),idxReg+1);
  	    page = tagged POrd8 truncate(offset>>page_shift8);
  	 end
  	 else begin
  
negative.code: 	    Add#(c__, addrWidth, DmaOffsetSize));
  
     BRAM2Port#(Bit#(entryIdxSize), Page) pageTable <- mkBRAM2Server(defaultValue);
     Vector#(MaxNumSGLists, Reg#(Tuple3#(Bit#(40),Bit#(40),Bit#(40)))) regions <- replicateM(mkReg(unpack(0)));
     
     Vector#(2,FIFOF#(Offset))  offs <- replicateM(mkFIFOF);
     Reg#(Bit#(8))               idxReg  <- mkReg(0);
  