diff options
author | Dmitriy Korovkin <dmitriy.korovkin@windriver.com> | 2016-10-06 15:50:40 -0400 |
---|---|---|
committer | Anas Nashif <nashif@linux.intel.com> | 2016-10-22 01:27:01 +0000 |
commit | 3c90651fd87a76d2ace2f320cea7a503e64962a4 (patch) | |
tree | 3b6c7442f854c9a0b85a252880e81c44ef02c331 /include | |
parent | 909bfffda92bbe811177f9d9a052729611f1c913 (diff) |
unified/arc: add memory pools support for ARC architecture
ARC does not align data structures by 4 bytes by default.
Add necessary linker sections.
Change-Id: I3bf7aa38b9bc8cba56f824469040c027968fa564
Signed-off-by: Dmitriy Korovkin <dmitriy.korovkin@windriver.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/arch/arc/v2/linker.ld | 11 | ||||
-rw-r--r-- | include/kernel.h | 2 |
2 files changed, 13 insertions, 0 deletions
diff --git a/include/arch/arc/v2/linker.ld b/include/arch/arc/v2/linker.ld index 548e8a4eb..34d8d603c 100644 --- a/include/arch/arc/v2/linker.ld +++ b/include/arch/arc/v2/linker.ld @@ -221,6 +221,17 @@ SECTION_DATA_PROLOGUE (_k_task_list, (OPTIONAL),) _k_event_list_end = .; } GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION) + SECTION_PROLOGUE(_k_memory_pool, (OPTIONAL),) + { + *(._k_memory_pool.struct*) + KEEP(*(SORT_BY_NAME("._k_memory_pool.struct*"))) + + _k_mem_pool_start = .; + *(._k_memory_pool.*) + KEEP(*(SORT_BY_NAME("._k_memory_pool*"))) + _k_mem_pool_end = .; + } GROUP_LINK_IN(RAMABLE_REGION) + __data_ram_end = .; SECTION_PROLOGUE(_BSS_SECTION_NAME,(NOLOAD),) { diff --git a/include/kernel.h b/include/kernel.h index ff9d6c93c..b7221edb7 100644 --- a/include/kernel.h +++ b/include/kernel.h @@ -1665,6 +1665,7 @@ __asm__(".macro __do_recurse macro_name, name, n_max\n\t" * __memory_pool_quad_block_size - sizeof(struct k_mem_pool_quad_block) */ __asm__(".macro _build_quad_blocks n_max, name\n\t" + ".balign 4\n\t" "_mem_pool_quad_blocks_\\name\\()_\\n_max:\n\t" ".skip __memory_pool_quad_block_size * \\n_max >> 2\n\t" ".if \\n_max % 4\n\t\t" @@ -1735,6 +1736,7 @@ __asm__(".macro _build_mem_pool name, min_size, max_size, n_max\n\t" __asm__("__memory_pool_max_block_size = " STRINGIFY(max_size) "\n\t"); \ __asm__(".pushsection ._k_memory_pool.struct,\"aw\"," \ _SECTION_TYPE_SIGN "progbits\n\t"); \ + __asm__(".balign 4\n\t"); \ __asm__("_mem_pool_block_sets_" STRINGIFY(name) ":\n\t"); \ __asm__("_build_block_set " STRINGIFY(n_max) " " \ STRINGIFY(name) "\n\t"); \ |