7#ifndef ZEPHYR_INCLUDE_KERNEL_INTERNAL_MM_H
8#define ZEPHYR_INCLUDE_KERNEL_INTERNAL_MM_H
41#define K_MEM_VIRT_OFFSET ((CONFIG_KERNEL_VM_BASE + CONFIG_KERNEL_VM_OFFSET) - \
42 (CONFIG_SRAM_BASE_ADDRESS + CONFIG_SRAM_OFFSET))
41#define K_MEM_VIRT_OFFSET ((CONFIG_KERNEL_VM_BASE + CONFIG_KERNEL_VM_OFFSET) - \ …
44#define K_MEM_VIRT_OFFSET 0
47#if CONFIG_SRAM_BASE_ADDRESS != 0
48#define IS_SRAM_ADDRESS_LOWER(ADDR) ((ADDR) >= CONFIG_SRAM_BASE_ADDRESS)
50#define IS_SRAM_ADDRESS_LOWER(ADDR) true
54#if (CONFIG_SRAM_BASE_ADDRESS + (CONFIG_SRAM_SIZE * 1024UL)) != 0
55#define IS_SRAM_ADDRESS_UPPER(ADDR) \
56 ((ADDR) < (CONFIG_SRAM_BASE_ADDRESS + \
57 (CONFIG_SRAM_SIZE * 1024UL)))
59#define IS_SRAM_ADDRESS_UPPER(ADDR) false
62#define IS_SRAM_ADDRESS(ADDR) \
63 (IS_SRAM_ADDRESS_LOWER(ADDR) && \
64 IS_SRAM_ADDRESS_UPPER(ADDR))
62#define IS_SRAM_ADDRESS(ADDR) \ …
75#define K_MEM_PHYS_ADDR(virt) ((virt) - K_MEM_VIRT_OFFSET)
86#define K_MEM_VIRT_ADDR(phys) ((phys) + K_MEM_VIRT_OFFSET)
88#if K_MEM_VIRT_OFFSET != 0
92#define K_MEM_IS_VM_KERNEL 1
94#error "XIP and a virtual memory kernel are not allowed"
120#if defined(CONFIG_KERNEL_VM_USE_CUSTOM_MEM_RANGE_CHECK)
122 "address %p not in permanent mappings", virt);
123#elif defined(CONFIG_MMU)
125#
if CONFIG_KERNEL_VM_BASE != 0
126 (addr >= CONFIG_KERNEL_VM_BASE) &&
128#
if (CONFIG_KERNEL_VM_BASE + CONFIG_KERNEL_VM_SIZE) != 0
129 (addr < (CONFIG_KERNEL_VM_BASE +
130 (CONFIG_KERNEL_VM_SIZE))),
134 "address %p not in permanent mappings", virt);
138 "physical address 0x%lx not in RAM",
139 (
unsigned long)addr);
162#if defined(CONFIG_KERNEL_VM_USE_CUSTOM_MEM_RANGE_CHECK)
164 "physical address 0x%lx not in RAM", (
unsigned long)phys);
167 "physical address 0x%lx not in RAM", (
unsigned long)phys);
void * k_mem_map_phys_guard(uintptr_t phys, size_t size, uint32_t flags, bool is_anon)
Map memory into virtual address space with guard pages.
#define K_MEM_PHYS_ADDR(virt)
Get physical address from virtual address.
Definition mm.h:75
#define K_MEM_VIRT_ADDR(phys)
Get virtual address from physical address.
Definition mm.h:86
void k_mem_map_phys_bare(uint8_t **virt_ptr, uintptr_t phys, size_t size, uint32_t flags)
Map a physical memory region into the kernel's virtual address space.
void k_mem_unmap_phys_guard(void *addr, size_t size, bool is_anon)
Un-map memory mapped via k_mem_map_phys_guard().
static uintptr_t k_mem_phys_addr(void *virt)
Get physical address from virtual address.
Definition mm.h:116
#define IS_SRAM_ADDRESS(ADDR)
Definition mm.h:62
void k_mem_unmap_phys_bare(uint8_t *virt, size_t size)
Unmap a virtual memory region from kernel's virtual address space.
static void * k_mem_virt_addr(uintptr_t phys)
Get virtual address from physical address.
Definition mm.h:160
bool sys_mm_is_virt_addr_in_range(void *virt)
Check if a virtual address is within range of virtual memory.
bool sys_mm_is_phys_addr_in_range(uintptr_t phys)
Check if a physical address is within range of physical memory.
flags
Definition parser.h:97
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINTPTR_TYPE__ uintptr_t
Definition stdint.h:105