Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions tests/arch/riscv/pmp/isr-stack-guard/prj.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CONFIG_ZTEST=y
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,30 @@ void k_sys_fatal_error_handler(unsigned int reason, const struct arch_esf *pEsf)
}

#ifdef CONFIG_PMP_STACK_GUARD

#ifdef CONFIG_MULTITHREADING

static void check_isr_stack_guard(void)
{
char *isr_stack = (char *)z_interrupt_stacks[_current_cpu->id];

valid_fault = true;
*isr_stack = 42;
}

static void check_main_stack_guard(void)
{
struct k_thread *current_thread_ptr = k_current_get();
uintptr_t stack_bottom = current_thread_ptr->stack_info.start - K_KERNEL_STACK_RESERVED;

char *main_stack = (char *)stack_bottom;

valid_fault = true;
*main_stack = 42;
}

#else /* CONFIG_MULTITHREADING */

static void check_isr_stack_guard(void)
{
char *isr_stack = (char *)z_interrupt_stacks;
Expand All @@ -40,7 +64,9 @@ static void check_main_stack_guard(void)
*main_stack = 42;
}

#else
#endif /* CONFIG_MULTITHREADING */

#else /* CONFIG_PMP_STACK_GUARD */

static void check_isr_stack_guard(void)
{
Expand All @@ -65,7 +91,7 @@ static const pmp_test_func_t pmp_test_func[] = {
* @brief Verify RISC-V specific PMP stack guard regions.
* @details Manually write to the protected stack region to trigger fatal error.
*/
ZTEST(riscv_pmp_no_mt, test_pmp)
ZTEST(riscv_pmp_isr_main_stack, test_pmp)
{
#ifndef PMP_TEST_FUNC_IDX
#define PMP_TEST_FUNC_IDX 0
Expand All @@ -76,4 +102,4 @@ ZTEST(riscv_pmp_no_mt, test_pmp)
TC_END_REPORT(TC_FAIL);
}

ZTEST_SUITE(riscv_pmp_no_mt, NULL, NULL, NULL, NULL, NULL);
ZTEST_SUITE(riscv_pmp_isr_main_stack, NULL, NULL, NULL, NULL, NULL);
25 changes: 25 additions & 0 deletions tests/arch/riscv/pmp/isr-stack-guard/testcase.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
common:
platform_allow:
- qemu_riscv32
- qemu_riscv32e
- qemu_riscv64
filter: CONFIG_RISCV_PMP
ignore_faults: true

tests:
arch.riscv.pmp.no-mt.isr-stack-guard:
extra_args: EXTRA_CFLAGS=-DPMP_TEST_FUNC_IDX=0
extra_configs:
- CONFIG_MULTITHREADING=n
arch.riscv.pmp.no-mt.main-stack-guard:
extra_args: EXTRA_CFLAGS=-DPMP_TEST_FUNC_IDX=1
extra_configs:
- CONFIG_MULTITHREADING=n
arch.riscv.pmp.mt.isr-stack-guard:
extra_args: EXTRA_CFLAGS=-DPMP_TEST_FUNC_IDX=0
extra_configs:
- CONFIG_MULTITHREADING=y
arch.riscv.pmp.mt.main-stack-guard:
extra_args: EXTRA_CFLAGS=-DPMP_TEST_FUNC_IDX=1
extra_configs:
- CONFIG_MULTITHREADING=y
2 changes: 0 additions & 2 deletions tests/arch/riscv/pmp/no-multithreading/prj.conf

This file was deleted.

13 changes: 0 additions & 13 deletions tests/arch/riscv/pmp/no-multithreading/testcase.yaml

This file was deleted.