Zephyr API Documentation  3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
xtensa_mmu.h File Reference
#include <stdint.h>

Go to the source code of this file.

Data Structures

struct  xtensa_mmu_range
 Struct used to map a memory region. More...
 

Macros

#define XTENSA_MMU_MAP_USER   BIT(4)
 Software only bit to indicate a memory region can be accessed by user thread(s).
 
#define XTENSA_MMU_MAP_SHARED   BIT(30)
 Software only bit to indicate a memory region is shared by all threads.
 
Memory region permission and caching mode.
#define XTENSA_MMU_PERM_X   BIT(0)
 Memory region is executable.
 
#define XTENSA_MMU_PERM_W   BIT(1)
 Memory region is writable.
 
#define XTENSA_MMU_PERM_WX   (XTENSA_MMU_PERM_W | XTENSA_MMU_PERM_X)
 Memory region is both executable and writable.
 
#define XTENSA_MMU_CACHED_WB   BIT(2)
 Memory region has write-back cache.
 
#define XTENSA_MMU_CACHED_WT   BIT(3)
 Memory region has write-through cache.
 

Functions

void xtensa_mmu_init (void)
 Initialize hardware MMU.
 
void xtensa_mmu_reinit (void)
 Re-initialize hardware MMU.
 
void xtensa_mmu_tlb_ipi (void)
 Tell other processors to flush TLBs.
 
void xtensa_mmu_tlb_shootdown (void)
 Invalidate cache to page tables and flush TLBs.
 

Variables

const struct xtensa_mmu_range xtensa_soc_mmu_ranges []
 Additional memory regions required by SoC.
 
int xtensa_soc_mmu_ranges_num
 Number of SoC additional memory regions.
 

Memory domain and partitions

#define K_MEM_PARTITION_IS_EXECUTABLE(attr)   (((attr) & XTENSA_MMU_PERM_X) != 0)
 
#define K_MEM_PARTITION_IS_WRITABLE(attr)   (((attr) & XTENSA_MMU_PERM_W) != 0)
 
#define K_MEM_PARTITION_IS_USER(attr)   (((attr) & XTENSA_MMU_MAP_USER) != 0)
 
#define K_MEM_PARTITION_P_RW_U_RW    ((k_mem_partition_attr_t) {XTENSA_MMU_PERM_W | XTENSA_MMU_MAP_USER})
 
#define K_MEM_PARTITION_P_RW_U_NA    ((k_mem_partition_attr_t) {0})
 
#define K_MEM_PARTITION_P_RO_U_RO    ((k_mem_partition_attr_t) {XTENSA_MMU_MAP_USER})
 
#define K_MEM_PARTITION_P_RO_U_NA    ((k_mem_partition_attr_t) {0})
 
#define K_MEM_PARTITION_P_NA_U_NA    ((k_mem_partition_attr_t) {0})
 
#define K_MEM_PARTITION_P_RX_U_RX    ((k_mem_partition_attr_t) {XTENSA_MMU_PERM_X})
 
typedef uint32_t k_mem_partition_attr_t