diff options
-rw-r--r-- | nuttx/arch/arm/src/a1x/Make.defs | 3 | ||||
-rw-r--r-- | nuttx/arch/arm/src/armv7-a/pgalloc.h | 15 | ||||
-rw-r--r-- | nuttx/arch/arm/src/sama5/Make.defs | 3 | ||||
-rw-r--r-- | nuttx/arch/arm/src/sama5/sam_pgalloc.c | 2 | ||||
-rw-r--r-- | nuttx/arch/arm/src/sama5/sam_pgalloc.h | 4 |
5 files changed, 27 insertions, 0 deletions
diff --git a/nuttx/arch/arm/src/a1x/Make.defs b/nuttx/arch/arm/src/a1x/Make.defs index 939ab357d..82ba23bc5 100644 --- a/nuttx/arch/arm/src/a1x/Make.defs +++ b/nuttx/arch/arm/src/a1x/Make.defs @@ -102,6 +102,9 @@ endif ifeq ($(CONFIG_MM_PGALLOC),y) CMN_CSRCS += arm_physpgaddr.c +ifeq ($(CONFIG_ARCH_PGPOOL_MAPPING),y) +CMN_CSRCS += arm_virtpgaddr.c +endif endif ifeq ($(CONFIG_ELF),y) diff --git a/nuttx/arch/arm/src/armv7-a/pgalloc.h b/nuttx/arch/arm/src/armv7-a/pgalloc.h index ee39f100f..3991b92fe 100644 --- a/nuttx/arch/arm/src/armv7-a/pgalloc.h +++ b/nuttx/arch/arm/src/armv7-a/pgalloc.h @@ -43,6 +43,8 @@ #include <nuttx/config.h> #include <stdint.h> +#include <stdbool.h> +#include <assert.h> #include <nuttx/addrenv.h> @@ -154,5 +156,18 @@ static inline bool arm_uservaddr(uintptr_t vaddr) uintptr_t arm_physpgaddr(uintptr_t vaddr); +/**************************************************************************** + * Name: arm_virtpgaddr + * + * Description: + * Check if the physical address lies in the page pool and, if so + * get the mapping to the virtual address in the user data area. + * + ****************************************************************************/ + +#ifdef CONFIG_ARCH_PGPOOL_MAPPING +uintptr_t arm_virtpgaddr(uintptr_t paddr); +#endif + #endif /* CONFIG_MM_PGALLOC */ #endif /* __ARCH_ARM_SRC_ARMV7_A_PGALLOC_H */ diff --git a/nuttx/arch/arm/src/sama5/Make.defs b/nuttx/arch/arm/src/sama5/Make.defs index 6feae083d..ba8012837 100644 --- a/nuttx/arch/arm/src/sama5/Make.defs +++ b/nuttx/arch/arm/src/sama5/Make.defs @@ -104,6 +104,9 @@ endif ifeq ($(CONFIG_MM_PGALLOC),y) CMN_CSRCS += arm_physpgaddr.c +ifeq ($(CONFIG_ARCH_PGPOOL_MAPPING),y) +CMN_CSRCS += arm_virtpgaddr.c +endif endif ifeq ($(CONFIG_ELF),y) diff --git a/nuttx/arch/arm/src/sama5/sam_pgalloc.c b/nuttx/arch/arm/src/sama5/sam_pgalloc.c index a90582cb3..5fbaac8a9 100644 --- a/nuttx/arch/arm/src/sama5/sam_pgalloc.c +++ b/nuttx/arch/arm/src/sama5/sam_pgalloc.c @@ -124,6 +124,7 @@ void up_allocate_pgheap(FAR void **heap_start, size_t *heap_size) * ****************************************************************************/ +#ifndef CONFIG_ARCH_PGPOOL_MAPPING uintptr_t sam_virtpgaddr(uintptr_t paddr) { uintptr_t poolstart; @@ -146,5 +147,6 @@ uintptr_t sam_virtpgaddr(uintptr_t paddr) return 0; } +#endif /* !CONFIG_ARCH_PGPOOL_MAPPING */ #endif /* CONFIG_MM_PGALLOC */ diff --git a/nuttx/arch/arm/src/sama5/sam_pgalloc.h b/nuttx/arch/arm/src/sama5/sam_pgalloc.h index b79ba1a85..75f4f90f1 100644 --- a/nuttx/arch/arm/src/sama5/sam_pgalloc.h +++ b/nuttx/arch/arm/src/sama5/sam_pgalloc.h @@ -88,7 +88,11 @@ extern "C" * ****************************************************************************/ +#ifdef CONFIG_ARCH_PGPOOL_MAPPING +# define sam_virtpgaddr(vaddr) arm_virtpgaddr(vaddr) +#else uintptr_t sam_virtpgaddr(uintptr_t paddr); +#endif #undef EXTERN #ifdef __cplusplus |