anchor.diff:        endrule
      end
      
  +   Vector#(2, FIFO#(ReqTup)) incomingReqs <- replicateM(mkFIFO);
  +   for (Integer i = 0; i < 2; i=i+1)
  +      rule incomingReqRule;
  +	 let req <- toGet(incomingReqs[i]).get();
  +	 match { .ptr, .off } = req;
  +	 portsel(reg8, i).request.put(BRAMRequest{write:False, responseOnWrite:False, address:truncate(ptr-1), datain:?});
  +	 portsel(reg4, i).request.put(BRAMRequest{write:False, responseOnWrite:False, address:truncate(ptr-1), datain:?});
  +	 portsel(reg0, i).request.put(BRAMRequest{write:False, responseOnWrite:False, address:truncate(ptr-1), datain:?});
  +	 reqs[i].enq(req);
  +      endrule
  +
      Vector#(2,Server#(ReqTup,Bit#(addrWidth))) addrServers;
      for(Integer i = 0; i < 2; i=i+1)
         addrServers[i] = 
         (interface Server#(ReqTup,Bit#(addrWidth));
   	  interface Put request;
   	     method Action put(ReqTup req);
  -		let ptr = tpl_1(req);
  -		let off = tpl_2(req);
  -		portsel(reg8, i).request.put(BRAMRequest{write:False, responseOnWrite:False, address:truncate(ptr-1), datain:?});
  -		portsel(reg4, i).request.put(BRAMRequest{write:False, responseOnWrite:False, address:truncate(ptr-1), datain:?});
  -		portsel(reg0, i).request.put(BRAMRequest{write:False, responseOnWrite:False, address:truncate(ptr-1), datain:?});
  -		reqs[i].enq(req);
  +		incomingReqs[i].enq(req);
   	     endmethod
   	  endinterface
   	  interface Get response;
  
positive.code: 	 if (off < barrier8) begin
  	    //$display("request: ptr=%h off=%h barrier8=%h", ptr, off, barrier8);
  	    o = tagged OOrd8 truncate(off);
  	    p = truncate(off>>page_shift8) + region8.idxOffset;
  	 end 
  	 else if (off < barrier4) begin
  	    //$display("request: ptr=%h off=%h barrier4=%h", ptr, off, barrier4);
  	    o = tagged OOrd4 truncate(off);
  	    p = truncate(off>>page_shift4) + region4.idxOffset;
  	 end
  	 else if (off < barrier0) begin
  	    //$display("request: ptr=%h off=%h barrier0=%h", ptr, off, barrier0);
  	    o = tagged OOrd0 truncate(off);
  	    p = truncate(off>>page_shift0) + region0.idxOffset;
  	 end 
  	 else begin
  	    $display("mkSGListMMU.addr[%d].request.put: ERROR   ptr=%h off=%h\n", i, ptr, off);
  	    dmaIndication.badAddrTrans(extend(ptr), extend(off), barrier0);
  	 end
  	 offs[i].enq(o);
  	 rp[i].enq({ptr-1,p});
        endrule
        rule req1;
  	 rp[i].deq;
  	 portsel(pages, i).request.put(BRAMRequest{write:False, responseOnWrite:False, address:rp[i].first, datain:?});
        endrule
        rule pageResponse;
  	 let page <- portsel(pages, i).response.get;
  	 let offset <- toGet(offs[i]).get();
  	 Bit#(ObjectOffsetSize) rv = 0;
  	 case (offset) matches
  	    tagged OOrd0 .o:
  
negative.code: 	 let ptr = tpl_1(reqs[i].first);
  	 let off = tpl_2(reqs[i].first);
  	 Offset o = tagged OOrd0 0;
  	 Bit#(8) pbase = 0;
  	 Bit#(8) idxOffset = 0;
  	 Region region8 <- portsel(reg8,i).response.get;
  	 Region region4 <- portsel(reg4,i).response.get;
  	 Region region0 <- portsel(reg0,i).response.get;
  