blob: 45e2314a989bbfc8faef193219072a0a9854f808 [file] [log] [blame]
/* SPDX-License-Identifier: Apache-2.0
*
* Copyright (c) 2021 Lexmark International, Inc.
*/
#include <zephyr/kernel.h>
#include <zephyr/syscall_handler.h>
#include <zephyr/ztest.h>
ZTEST_BMEM char user_stack[256];
/**
* @brief Test sys_call does not write to user stack
*
* @ingroup kernel_memprotect_tests
*/
ZTEST_USER(arm_mem_protect, test_user_corrupt_stack_pointer)
{
int ret = 0;
uint32_t saved_sp;
size_t i;
saved_sp = __get_SP();
__set_SP((uint32_t)&user_stack[0] + (sizeof(user_stack) / 2));
arch_syscall_invoke0(K_SYSCALL_K_YIELD);
__set_SP(saved_sp);
for (i = 0; i < sizeof(user_stack); ++i) {
if (user_stack[i] != 0U) {
ret = -1;
break;
}
}
zassert_equal(ret, 0, "svc exception wrote to user stack");
}
ZTEST_SUITE(arm_mem_protect, NULL, NULL, NULL, NULL, NULL);