Each XMPU has 16 regions, numbered from 0 to 15. Each region is defined by a start address and an end address. There are two region address alignment possibilities, 1 MB and 4 KB, depending on the XMPU unit. For the XMPU configured with the 1 MB region alignment, the start address of each region is 1 MB aligned. Similarly, for the OCM_XMPU configured with the 4 KB alignment, the start address is 4 KB aligned.
When a memory space has overlapping regions the higher region number has higher priority (for example, region 0 has the lowest priority). An overlapping region is defined as a region where both the MID and address match. An address match with different MIDs is not considered to be an overlapping region. Each region can be independently enabled or disabled. If a region is disabled, it is not used for protection checking.
If none of the regions are enabled or the request does not match any of the regions, then a subtractive decode determines whether or not the request is allowed. That is, the XMPU takes the default action (allow or poison) as specified in the XMPU control register. There are two ways to poison a request: forward the transaction with a poison attribute or poison (replace) the upper address bits and then forward the transaction.