/Zephyr-Core-3.5.0/arch/arm/core/mpu/ |
D | Kconfig | 1 # Memory Protection Unit (MPU) configuration options 9 bool "ARM MPU Support" 10 select MPU 21 The ARMv6-M and ARMv7-M MPU architecture requires a power-of-two 22 alignment of MPU region base address and size. 24 The NXP MPU as well as the ARMv8-M MPU do not require MPU regions 27 The ARMv8-M MPU requires the active MPU regions be non-overlapping. 28 As a result of this, the ARMv8-M MPU needs to fully partition the 35 By not enforcing full partition, MPU may leave part of kernel 44 of full partitioning the default behavior for the ARMv8-M MPU [all …]
|
D | arm_core_mpu_dev.h | 25 * may be defined in a memory domain, given the amount of available HW MPU 28 * @param mpu_regions_num the number of available HW MPU regions. 33 * For ARM MPU architectures, where the domain partitions cannot be defined 35 * memory domain partitions is set to half of the number of available MPU 38 * programmed using the available number of HW MPU regions. 44 * For ARM MPU architectures, where the domain partitions can be defined 46 * of memory domain partitions is equal to the number of available MPU regions. 53 * @brief Maximum number of MPU regions required to configure a 60 * requires two additional MPU regions to be configured; one for 68 * single MPU region. [all …]
|
D | nxp_mpu.c | 21 LOG_MODULE_DECLARE(mpu); 28 "`zephyr,memory-region-mpu` was deprecated in favor of `zephyr,memory-attr`"); 31 * Global status variable holding the number of HW MPU region indices, which 32 * have been reserved by the MPU driver to program the static (fixed) memory 37 /* Global MPU configuration at system initialization. */ 40 /* Enable clock for the Memory Protection Unit (MPU). */ in mpu_init() 45 * Get the number of supported MPU regions. 55 * MPU region start address and size. 62 /* Partition size must be a multiple of the minimum MPU region in mpu_partition_is_valid() 64 * minimum MPU region size. in mpu_partition_is_valid() [all …]
|
D | arm_mpu.c | 19 LOG_MODULE_DECLARE(mpu); 42 "`zephyr,memory-region-mpu` was deprecated in favor of `zephyr,memory-attr`"); 45 * Global status variable holding the number of HW MPU region indices, which 46 * have been reserved by the MPU driver to program the static (fixed) memory 73 /* No available MPU region index. */ in region_allocate_and_init() 74 LOG_ERR("Failed to allocate new MPU region %u\n", index); in region_allocate_and_init() 78 LOG_DBG("Program MPU region at index 0x%x", index); in region_allocate_and_init() 92 /* This internal function programs the MPU regions defined in the DT when using 159 /* This internal function programs an MPU region 160 * of a given configuration at a given MPU index. [all …]
|
D | arm_mpu_v7_internal.h | 18 /* Global MPU configuration at system initialization. */ 21 /* No specific configuration at init for ARMv7-M MPU. */ in mpu_init() 24 /* This internal function performs MPU region initialization. 47 MPU->RBAR = (region_conf->base & MPU_RBAR_ADDR_Msk) in region_init() 49 MPU->RASR = region_conf->attr.rasr | MPU_RASR_ENABLE_Msk; in region_init() 58 * MPU region start address and size. 67 * MPU region size. Start address of the in mpu_partition_is_valid() 109 * This internal function is utilized by the MPU driver to combine a given 111 * structure with the correct MPU region configuration. 117 /* in ARMv7-M MPU the base address is not required in get_region_attr_from_mpu_partition_info() [all …]
|
D | arm_core_mpu.c | 17 LOG_MODULE_REGISTER(mpu); 23 * Maximum number of dynamic memory partitions that may be supplied to the MPU 25 * available MPU regions for dynamic programming depends on the number of the 26 * static MPU regions currently being programmed, and the total number of HW- 27 * available MPU regions. This macro is only used internally in function 101 /* Main stack MPU guard to detect overflow. 104 * under CONFIG_MULTITHREADING=n, so the MPU guard (if 118 * @brief Use the HW-specific MPU driver to program 119 * the static MPU regions. 121 * Program the static MPU regions using the HW-specific MPU driver. The [all …]
|
D | arm_mpu_v8_internal.h | 19 * memory areas where dynamic MPU programming 28 * Global array, holding the MPU region index of 37 MPU->MAIR0 = mair0; in mpu_set_mair0() 42 MPU->RNR = rnr; in mpu_set_rnr() 47 MPU->RBAR = rbar; in mpu_set_rbar() 52 return MPU->RBAR; in mpu_get_rbar() 57 MPU->RLAR = rlar; in mpu_set_rlar() 62 return MPU->RLAR; in mpu_get_rlar() 67 uint32_t type = MPU->TYPE; in mpu_get_num_regions() 137 /* Global MPU configuration at system initialization. */ [all …]
|
/Zephyr-Core-3.5.0/arch/arc/core/mpu/ |
D | Kconfig | 1 # Memory Protection Unit (MPU) configuration options 7 int "ARC MPU version" 11 ARC MPU has several versions. For MPU v2, the minimum region is 2048 bytes; 13 v6 supports up to 32 regions. Note: MPU v5 & v7 are not supported. 16 bool "ARC Core MPU functionalities" 18 ARC core MPU functionalities 24 Enable thread stack guards via MPU. ARC supports built-in stack protection. 25 If your core supports that, it is preferred over MPU stack guard. 30 bool "ARC MPU Support" 31 select MPU [all …]
|
D | arc_mpu_common_internal.h | 14 #error "Unsupported MPU version" 18 * @brief configure the base address and size for an MPU region 20 * @param type MPU region type 36 * For ARC MPU, MPU regions can be overlapped, smaller in _mpu_configure() 44 /* ARC Core MPU Driver API Implementation for ARC MP */ 47 * @brief enable the MPU 51 /* Enable MPU */ in arc_core_mpu_enable() 57 * @brief disable the MPU 61 /* Disable MPU */ in arc_core_mpu_disable() 67 * @brief configure the thread's MPU regions [all …]
|
D | arc_mpu_v4_internal.h | 15 /* For MPU version 4, the minimum protection region size is 32 bytes */ 21 /* ARC MPU version 4 does not support mpu region overlap in hardware 22 * so if we want to allocate MPU region dynamically, e.g. thread stack, 27 * As a trade off, we can use the default mpu region as the background region 30 * explicit mpu entry. Considering memory protection is mainly used to 32 * thread switch performance through default mpu region. 52 * memory areas where dynamic MPU programming is allowed. 65 * Global array, holding the MPU region index of 75 /* \todo through secure service to access mpu */ 111 * This internal function probes the given addr's MPU index.if not [all …]
|
/Zephyr-Core-3.5.0/arch/arm64/core/cortex_r/ |
D | Kconfig | 1 # Memory Protection Unit (MPU) configuration options 11 bool "ARM MPU Support" 13 select MPU 18 MPU implements Memory Protection Unit. 21 The ARMv8-R MPU architecture requires a power-of-two alignment 22 of MPU region base address and size(64 bytes aligned). 24 The ARMv8-R MPU requires the active MPU regions be non-overlapping. 25 As a result of this, the ARMv8-R MPU needs to fully partition the 32 By not enforcing full partition, MPU may leave part of kernel 41 of full partitioning the default behavior for the ARMv8-R MPU [all …]
|
/Zephyr-Core-3.5.0/include/zephyr/arch/arc/v2/mpu/ |
D | arc_core_mpu.h | 14 * The defines below represent the region types. The MPU driver is responsible 18 * Each MPU is different and has a different set of attributes, hence instead 22 * of operations and attributes for each MPU and it is responsibility of the 23 * MPU driver to select the correct ones. 28 * be managed inside the MPU driver and not escalated. 38 /* ARC Core MPU Driver API */ 41 * This API has to be implemented by all the MPU drivers that have 46 * @brief enable the MPU 51 * @brief disable the MPU 56 * @brief configure the thread's mpu regions [all …]
|
/Zephyr-Core-3.5.0/arch/arm/core/mpu/cortex_m/ |
D | arm_mpu_internal.h | 9 * Get the number of supported MPU regions. 17 * have a fixed number of 8 MPU regions. in get_num_regions() 24 uint32_t type = MPU->TYPE; in get_num_regions() 34 MPU->RNR = index; in set_region_number() 39 MPU->RNR = index; in mpu_region_get_base() 40 return MPU->RBAR & MPU_RBAR_ADDR_Msk; in mpu_region_get_base() 65 MPU->RNR = index; in is_enabled_region() 66 rasr = MPU->RASR; in is_enabled_region() 73 * This internal function returns the access permissions of an MPU region 86 MPU->RNR = r_index; in get_region_ap() [all …]
|
/Zephyr-Core-3.5.0/arch/arm/include/cortex_m/ |
D | cmse.h | 38 * @brief Get the MPU region number of an address 40 * Return the non-negative MPU region that the address maps to, 41 * or -EINVAL to indicate that an invalid MPU region was retrieved. 46 * - the MPU is implemented and enabled 47 * - the given address matches a single, enabled MPU region 49 * @param addr The address for which the MPU region is requested 51 * @return a valid MPU region number or -EINVAL 59 * permissions of the current state MPU and the specified operation mode. 63 * - if the address matches multiple MPU regions. 78 * to the permissions of the current state MPU and the specified operation [all …]
|
/Zephyr-Core-3.5.0/samples/arch/mpu/mpu_test/ |
D | README.rst | 3 Memory Protection Unit (MPU) Sample 8 This application provides a set options to check the correct MPU configuration 15 If the MPU configuration is correct each option selected ends up in an MPU 24 :zephyr-app: samples/arch/mpu/mpu_test 33 :zephyr-app: samples/arch/mpu/mpu_test 51 uart:~$ mpu read 66 uart:~$ mpu write 68 <err> os: ***** MPU FAULT ***** 82 uart:~$ mpu run 83 <err> os: ***** MPU FAULT ***** [all …]
|
D | sample.yaml | 2 name: MPU Test 4 sample.mpu.mpu_test: 7 tags: mpu
|
/Zephyr-Core-3.5.0/doc/kernel/usermode/ |
D | mpu_stack_objects.rst | 3 MPU Stack Objects 11 For architectures which utilize memory protection unit (MPU) hardware, 16 requirements for MPU regions. This is discussed in the memory placement 24 The MPU provides a fixed number of regions. Each region contains information 28 Stack guards are implemented by using a single MPU region and setting the 41 The main source of the memory constraints is the MPU design for the SoC. The 42 MPU design may require specific constraints on the region definition. These 51 v7m MPU will have these constraints. 53 Some ARM MPUs use start and end addresses to define MPU regions and both the 55 MPU is found in the NXP FRDM K64F.
|
/Zephyr-Core-3.5.0/dts/bindings/mmu_mpu/ |
D | arm,armv7m-mpu.yaml | 1 description: ARMv7-M Memory Protection Unit (MPU) 3 compatible: "arm,armv7m-mpu" 11 arm,num-mpu-regions: 14 description: number of MPU regions supported by hardware
|
D | arm,armv8m-mpu.yaml | 1 description: ARMv8-M MPU (Memory Protection Unit) 3 compatible: "arm,armv8m-mpu" 11 arm,num-mpu-regions: 14 description: number of MPU regions supported by hardware
|
D | arm,armv8.1m-mpu.yaml | 1 description: ARMv8.1-M MPU (Memory Protection Unit) 3 compatible: "arm,armv8.1m-mpu" 11 arm,num-mpu-regions: 14 description: number of MPU regions supported by hardware
|
D | arm,armv6m-mpu.yaml | 4 description: ARMv6-M Memory Protection Unit (MPU) 6 compatible: "arm,armv6m-mpu" 14 arm,num-mpu-regions: 18 description: number of MPU regions supported by hardware
|
/Zephyr-Core-3.5.0/include/zephyr/arch/arm/mpu/ |
D | arm_mpu.h | 14 #include <zephyr/arch/arm/mpu/arm_mpu_v7m.h> 19 #include <zephyr/arch/arm/mpu/arm_mpu_v8.h> 40 /* MPU configuration data structure */ 65 /* Reference to the MPU configuration. 68 * and holds the build-time configuration information for the fixed MPU 69 * regions enabled during kernel initialization. Dynamic MPU regions (e.g.
|
/Zephyr-Core-3.5.0/soc/arm/ |
D | Kconfig | 10 This option is enabled when the CPU has a Memory Protection Unit (MPU) 17 This option is enabled when the CPU has a Memory Protection Unit (MPU) 21 bool "Custom fixed SoC MPU region definition" 24 define and configure its own fixed MPU regions in the 25 SoC definition. These fixed MPU regions are currently
|
/Zephyr-Core-3.5.0/soc/arm/st_stm32/stm32mp1/ |
D | Kconfig.series | 1 # ST Microelectronics STM32MP1 MPU series 7 bool "STM32MP15 Series MPU" 16 Enable support for STM32MP1 MPU series
|
/Zephyr-Core-3.5.0/samples/application_development/code_relocation_nocopy/src/ |
D | main.c | 28 MPU->RNR = index; in disable_mpu_rasr_xn() 30 if (MPU->RBAR & MPU_RBAR_XN_Msk) { in disable_mpu_rasr_xn() 31 MPU->RBAR ^= MPU_RBAR_XN_Msk; in disable_mpu_rasr_xn() 34 if (MPU->RASR & MPU_RASR_XN_Msk) { in disable_mpu_rasr_xn() 35 MPU->RASR ^= MPU_RASR_XN_Msk; in disable_mpu_rasr_xn()
|