blob: 9709c9e99cbec12fd5b8d03b1ca42be514d7c93b [file] [log] [blame]
/*
* Copyright (c) 2020 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/kernel.h>
#include "mem_protect.h"
/* Add volatile to disable pre-calculation in compile stage in some
* toolchain, such as arcmwdt toolchain.
*/
static volatile K_APP_DMEM(ztest_mem_partition) int var = 1356;
static volatile K_APP_BMEM(ztest_mem_partition) int zeroed_var = 20420;
static volatile K_APP_BMEM(ztest_mem_partition) int bss_var;
/**
* @brief Test assigning global data and BSS variables to memory partitions
*
* @details Test that system supports application assigning global data and BSS
* variables using macros K_APP_BMEM() and K_APP_DMEM
*
* @ingroup kernel_memprotect_tests
*/
void test_mem_part_assign_bss_vars_zero(void)
{
/* The global variable var will be inside the bounds of
* ztest_mem_partition and be initialized with 1356 at boot.
*/
zassert_true(var == 1356, NULL);
/* The global variable zeroed_var will be inside the bounds of
* ztest_mem_partition and must be zeroed at boot size K_APP_BMEM() was
* used, indicating a BSS variable.
*/
zassert_true(zeroed_var == 0, NULL);
/* The global variable var will be inside the bounds of
* ztest_mem_partition and must be zeroed at boot size K_APP_BMEM() was
* used, indicating a BSS variable.
*/
zassert_true(bss_var == 0, NULL);
}
K_APPMEM_PARTITION_DEFINE(part_arch);
K_APP_BMEM(part_arch) uint8_t __aligned(MEM_REGION_ALLOC)
buf_arc[MEM_REGION_ALLOC];
/**
* @brief Test partitions sized per the constraints of the MPU hardware
*
* @details
* - MEM_REGION_ALLOC is pre-sized to naturally fit in the target hardware's
* memory management granularity. Show that the partition size matches.
* - Show that the base address of the partition is properly set, it should
* match the base address of buf_arc.
*
* @ingroup kernel_memprotect_tests
*/
void test_mem_part_auto_determ_size(void)
{
zassert_true(part_arch.size == MEM_REGION_ALLOC, NULL);
zassert_true(part_arch.start == (uintptr_t)buf_arc,
"Base address of memory partition not determined at build time");
}