/* 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);
