tests: add CONFIG_APPLICATION_MEMORY test

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
Andrew Boie 2017-09-25 14:43:10 -07:00 committed by Andrew Boie
parent eeba84b5b5
commit b60867fb32
5 changed files with 88 additions and 0 deletions

View file

@ -0,0 +1,4 @@
BOARD ?= qemu_x86
CONF_FILE = prj.conf
include ${ZEPHYR_BASE}/Makefile.test

View file

@ -0,0 +1,3 @@
CONFIG_APPLICATION_MEMORY=y
CONFIG_ZTEST=y

View file

@ -0,0 +1,3 @@
include $(ZEPHYR_BASE)/tests/Makefile.test
obj-y += main.o

View file

@ -0,0 +1,74 @@
/*
* Copyright (c) 2017 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr.h>
#include <tc_util.h>
#include <linker/linker-defs.h>
#include <ztest.h>
struct test_struct {
int foo;
int bar;
char *baz;
};
/* Check that the __kenrnel* macros work properly */
struct test_struct __kernel kernel_data = {1, 2, NULL};
struct test_struct __kernel_bss kernel_bss;
struct test_struct __kernel_noinit kernel_noinit;
/* Real kernel variable, check it is in the right place */
extern volatile u64_t _sys_clock_tick_count;
struct test_struct app_data = {3, 4, NULL};
struct test_struct app_bss;
struct test_struct __noinit app_noinit;
int data_loc(char *start, char *end, void *ptr)
{
if ((char *)ptr >= start && (char *)ptr < end) {
return 1;
}
printk("Address %p outside range %p - %p\n", ptr, start, end);
return 0;
}
int app_loc(void *ptr)
{
return data_loc(__app_ram_start, __app_ram_end, ptr);
}
int kernel_loc(void *ptr)
{
return data_loc(__kernel_ram_start, __kernel_ram_end, ptr);
}
void test_app_memory(void)
{
printk("Memory bounds:\n");
printk("Application %p - %p\n", __app_ram_start, __app_ram_end);
printk("Kernel %p - %p\n", __kernel_ram_start, __kernel_ram_end);
zassert_true(app_loc(&app_data), "not in app memory");
zassert_true(app_loc(&app_bss), "not in app memory");
zassert_true(app_loc(&app_noinit), "not in app memory");
zassert_true(kernel_loc(&kernel_data), "not in kernel memory");
zassert_true(kernel_loc(&kernel_bss), "not in kernel memory");
zassert_true(kernel_loc(&kernel_noinit), "not in kernel memory");
zassert_true(kernel_loc((void *)&_sys_clock_tick_count),
"not in kernel memory");
}
void test_main(void)
{
ztest_test_suite(app_memory,
ztest_unit_test(test_app_memory));
ztest_run_test_suite(app_memory);
}

View file

@ -0,0 +1,4 @@
tests:
- test:
tags: core security
arch_whitelist: x86 arm