6#ifndef ZEPHYR_INCLUDE_APP_MEMORY_APP_MEMDOMAIN_H_ 
    7#define ZEPHYR_INCLUDE_APP_MEMORY_APP_MEMDOMAIN_H_ 
   13#ifdef CONFIG_USERSPACE 
   23#define K_APP_DMEM_SECTION(id) data_smem_##id##_data 
   33#define K_APP_BMEM_SECTION(id) data_smem_##id##_bss 
   44#define K_APP_DMEM(id) Z_GENERIC_SECTION(K_APP_DMEM_SECTION(id)) 
   54#define K_APP_BMEM(id) Z_GENERIC_SECTION(K_APP_BMEM_SECTION(id)) 
   61#define Z_APP_START(id) z_data_smem_##id##_part_start 
   62#define Z_APP_SIZE(id) z_data_smem_##id##_part_size 
   63#define Z_APP_BSS_START(id) z_data_smem_##id##_bss_start 
   64#define Z_APP_BSS_SIZE(id) z_data_smem_##id##_bss_size 
   80#if defined(CONFIG_ARM) || defined(CONFIG_ARM64) 
   84#define Z_PROGBITS_SYM  "%" 
   86#define Z_PROGBITS_SYM "@" 
   89#if defined(CONFIG_ARC) && defined(__CCAC__) 
   93#define Z_PUSHSECTION_DIRECTIV          ".pushsect" 
   94#define Z_POPSECTION_DIRECTIVE          ".popsect" 
   96#define Z_PUSHSECTION_DIRECTIV          ".pushsection" 
   97#define Z_POPSECTION_DIRECTIVE          ".popsection" 
  100#define Z_APPMEM_PLACEHOLDER(name) \ 
  102                Z_PUSHSECTION_DIRECTIV " " STRINGIFY(K_APP_DMEM_SECTION(name)) \
 
  103                        ",\"aw\"," Z_PROGBITS_SYM "progbits\n\t" \
 
  104                ".global " STRINGIFY(name) "_placeholder\n\t" \
 
  105                STRINGIFY(name) "_placeholder:\n\t" \
 
  106                Z_POPSECTION_DIRECTIVE "\n\t")
 
  120#define K_APPMEM_PARTITION_DEFINE(name) \ 
  121        extern char Z_APP_START(name)[]; \ 
  122        extern char Z_APP_SIZE(name)[]; \ 
  123        struct k_mem_partition name = { \ 
  124                .start = (uintptr_t) &Z_APP_START(name), \ 
  125                .size = (size_t) &Z_APP_SIZE(name), \ 
  126                .attr = K_MEM_PARTITION_P_RW_U_RW \ 
  128        extern char Z_APP_BSS_START(name)[]; \ 
  129        extern char Z_APP_BSS_SIZE(name)[]; \ 
  130        Z_GENERIC_SECTION(.app_regions.name) \ 
  131        const struct z_app_region name##_region = { \ 
  132                .bss_start = &Z_APP_BSS_START(name), \ 
  133                .bss_size = (size_t) &Z_APP_BSS_SIZE(name) \ 
  135        Z_APPMEM_PLACEHOLDER(name) 
  138#define K_APP_BMEM(ptn) 
  139#define K_APP_DMEM(ptn) 
  140#define K_APP_DMEM_SECTION(ptn) .data 
  141#define K_APP_BMEM_SECTION(ptn) .bss 
  142#define K_APPMEM_PARTITION_DEFINE(name) 
Doubly-linked list implementation.