anchor.diff:     let page_shift4 = fromInteger(valueOf(SGListPageShift4));
      let page_shift8 = fromInteger(valueOf(SGListPageShift8));
      
  -   let ord0 = 32'd1 << page_shift0;
  -   let ord4 = 32'd1 << page_shift4;
  -   let ord8 = 32'd1 << page_shift8;
  +   let ord0 = 40'd1 << page_shift0;
  +   let ord4 = 40'd1 << page_shift4;
  +   let ord8 = 40'd1 << page_shift8;
   
      function BRAMServer#(Bit#(entryIdxSize), Page) portsel(int i);
         if(i==0)
  
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);
  