this allows for an arbitrary number of memory regions, with each one flagged as DMA safe, fast or normal