anchor.diff:  	 if (off.pageSize == 0) begin
   	    if (verbose) $display("mkMMU::addr[%d].request.put: ERROR   ptr=%h off=%h\n", i, ptr, off);
   	    dmaErrorFifos[1].enq(DmaError { errorType: DmaErrorOffsetOutOfRange, pref: extend(ptr), off:extend(off.value) });
  -	 end
  -	 else begin
  -	    if (verbose) $display("mkMMU::translationTable[%d].read %h", i, {ptr,p});
  -	    portsel(translationTable, i).request.put(BRAMRequest{write:False, responseOnWrite:False,
  -						      address:{ptr,p}, datain:?});
  -	    offs1[i].enq(off);
  -	 end
  +	    off.error = DmaErrorOffsetOutOfRange;
  +	    p         = 0; // FIXME
  +	 end
  +
  +	 if (verbose) $display("mkMMU::translationTable[%d].read %h", i, {ptr,p});
  +	 portsel(translationTable, i).request.put(BRAMRequest{write:False, responseOnWrite:False,
  +							      address:{ptr,p}, datain:?});
  +	 offs1[i].enq(off);
  +
         endrule
         rule stage5; // Concatenate page base address from sglist entry with LSB offset bits from request and return
   	 Page0 page <- portsel(translationTable, i).response.get;
  
positive.code:       rule stage3; // Based on results of comparision, select a region, putting it into 'o.pageSize'.  idxOffset holds offset in sglist table of relevant entry
  	 let params <- toGet(stage3Params[i]).get();
  	 AddrTransRequest req = params.req;
  	 Offset o = Offset{pageSize: 0, value: truncate(req.off)};
  	 Bit#(IndexWidth) pbase = 0;
  	 Bit#(IndexWidth) idxOffset = 0;
  
  
negative.code: endinterface
  
  typedef struct {
     DmaErrorType error;
     Bit#(3) pageSize;
     Bit#(SGListPageShift12) value;
  } Offset deriving (Eq,Bits,FShow);
  