imxrt:mpu init handle dcache setting in MPU config
With CONFIG_ARMV7M_DCACHE the cache maintenance operation are not present. Or if CONFIG_ARMV7M_DCACHE_WRITETHROUGH is on then buffering operations are no-ops. This change enables MPU_RASR_C and MPU_RASR_B if CONFIG_ARMV7M_DCACHE is only set. if CONFIG_ARMV7M_DCACHE_WRITETHROUGH is set then only MPU_RASR_C is enabled. N.B When caching is disalbed unaligned access may cause hard faults so add -mno-unaligned-access It is always safe to enable Buffering in FLASH to achive unaligned access leniency, as it is not written to.
This commit is contained in:
parent
7e9e8a817d
commit
08d0434bad
@ -49,6 +49,31 @@
|
||||
# define MIN(a,b) a < b ? a : b
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_ARMV7M_DCACHE
|
||||
/* With Dcache off:
|
||||
* Cacheable (MPU_RASR_C) and Bufferable (MPU_RASR_B) needs to be off
|
||||
*/
|
||||
# undef MPU_RASR_B
|
||||
# define MPU_RASR_B 0
|
||||
# define RASR_B_VALUE 0
|
||||
# define RASR_C_VALUE 0
|
||||
#else
|
||||
# ifndef CONFIG_ARMV7M_DCACHE_WRITETHROUGH
|
||||
/* With Dcache on:
|
||||
* Cacheable (MPU_RASR_C) and Bufferable (MPU_RASR_B) needs to be on
|
||||
*/
|
||||
# define RASR_B_VALUE MPU_RASR_B
|
||||
# define RASR_C_VALUE MPU_RASR_C
|
||||
|
||||
# else
|
||||
/* With Dcache in WRITETHROUGH Bufferable (MPU_RASR_B)
|
||||
* needs to be off, except for FLASH for alignment leniency
|
||||
*/
|
||||
# define RASR_B_VALUE 0
|
||||
# define RASR_C_VALUE MPU_RASR_C
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
Loading…
x
Reference in New Issue
Block a user