anchor.diff:  	    3: rv = {b8,truncate(offset.value)};
   	    4: rv = {b12,truncate(offset.value)};
   	 endcase
  -	 pageResponseFifos[i].enq(AddrTransResponse { error: DmaErrorNone, physAddr: truncate(rv) });
  +	 pageResponseFifos[i].enq(AddrTransResponse { error: offset.error, physAddr: truncate(rv) });
         endrule
      end
   
  
positive.code: endinterface
  
  typedef struct {
     Bit#(3) pageSize;
     Bit#(SGListPageShift12) value;
  } Offset deriving (Eq,Bits,FShow);
  
negative.code: 	 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) });
  	    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;
  