The DMA engine of the MSPM0 can move data between memory locations. In this example, a table of data is DMA-moved to address locations in SRAM. The name of the example in TI resource explorer is dma_table_transfer.
DMA is set up in extended data table transfer mode.

In this mode, the source table exists of records that contain the data value, and the SRAM destination address where DMA should copy the data to.

image source: MSPM0 Academy
The destination are 4 variables. This is where the DMA engine will eventually copy the table data to.
#define DMA_TABLE_ENTRIES (4) volatile uint32_t gDstData1; volatile uint32_t gDstData2; volatile uint32_t gDstData3; volatile uint32_t gDstData4;
The source table is memory array with each time a value and destination address:
__attribute__((aligned(8)))
const uint32_t gTableData[DMA_TABLE_ENTRIES * 2] = {
(uint32_t) &gDstData1, 0x10101010,
(uint32_t) &gDstData2, 0x20202020,
(uint32_t) &gDstData3, 0x30303030,
(uint32_t) &gDstData4, 0x40404040
};

The DMA engine initialisation code is simple. Note that there are other initialisation settings done in the system configurator.
/* Configure DMA source, destination and size */
DL_DMA_setSrcAddr(DMA, DMA_CH0_CHAN_ID, (uint32_t) &gTableData[0]);
DL_DMA_setDestAddr(DMA, DMA_CH0_CHAN_ID, (uint32_t) &gTableData[0]);
DL_DMA_setTransferSize(DMA, DMA_CH0_CHAN_ID, DMA_TABLE_ENTRIES);
DL_DMA_enableChannel(DMA, DMA_CH0_CHAN_ID);
/* Setup interrupts on device */
DL_SYSCTL_disableSleepOnExit();
NVIC_EnableIRQ(DMA_INT_IRQn);

In the config, source length is 8 bytes and target length 4. In reality, the data size is 4 bytes for both. But the source record also contains the destination address.
The actual move is a single call. An interrupt is thrown when the copy is complete:
/* Start fill data */
DL_DMA_startTransfer(DMA, DMA_CH0_CHAN_ID);

The interrupt handler in the example sets a global variable, so that the firmware can check if the work is done:
void DMA_IRQHandler(void)
{
/* Example interrupt code -- just used to break the WFI in this example */
switch (DL_DMA_getPendingInterrupt(DMA)) {
case DL_DMA_EVENT_IIDX_DMACH0:
gChannel0InterruptTaken = true;
break;
default:
break;
}
}
That's it. TI's example code includes integrity checks, for demo purposes. Read the full code in the resource explorer.
I've attached the project for the EasyL1105 and MSPM0L1306 Launchpad:
dma_table_transfer_MSPM0L1105.zip
dma_table_transfer_MSPM0L1306.zip
Enjoy.