ARMv7-M: Add MPU support for strongly couple memory regions
This commit is contained in:
parent
1c79e77811
commit
771095e25f
@ -247,6 +247,48 @@ static inline void mpu_control(bool enable, bool hfnmiena, bool privdefena)
|
|||||||
putreg32(regval, MPU_CTRL);
|
putreg32(regval, MPU_CTRL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: mpu_priv_stronglyordered
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Configure a region for privileged, strongly ordered memory
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#if defined(CONFIG_ARMV7M_HAVE_ICACHE) || defined(CONFIG_ARMV7M_DCACHE)
|
||||||
|
static inline void mpu_priv_stronglyordered(uintptr_t base, size_t size)
|
||||||
|
{
|
||||||
|
unsigned int region = mpu_allocregion();
|
||||||
|
uint32_t regval;
|
||||||
|
uint8_t l2size;
|
||||||
|
uint8_t subregions;
|
||||||
|
|
||||||
|
/* Select the region */
|
||||||
|
|
||||||
|
putreg32(region, MPU_RNR);
|
||||||
|
|
||||||
|
/* Select the region base address */
|
||||||
|
|
||||||
|
putreg32((base & MPU_RBAR_ADDR_MASK) | region | MPU_RBAR_VALID, MPU_RBAR);
|
||||||
|
|
||||||
|
/* Select the region size and the sub-region map */
|
||||||
|
|
||||||
|
l2size = mpu_log2regionceil(size);
|
||||||
|
subregions = mpu_subregion(base, size, l2size);
|
||||||
|
|
||||||
|
/* The configure the region */
|
||||||
|
|
||||||
|
regval = MPU_RASR_ENABLE | /* Enable region */
|
||||||
|
MPU_RASR_SIZE_LOG2((uint32_t)l2size) | /* Region size */
|
||||||
|
((uint32_t)subregions << MPU_RASR_SRD_SHIFT) | /* Sub-regions */
|
||||||
|
/* Not Cacheable */
|
||||||
|
/* Not Bufferable */
|
||||||
|
MPU_RASR_S | /* Shareable */
|
||||||
|
MPU_RASR_AP_RWNO; /* P:RW U:None */
|
||||||
|
putreg32(regval, MPU_RASR);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: mpu_user_flash
|
* Name: mpu_user_flash
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user