Skip to content

Commit 5941713

Browse files
carlocaionenashif
authored andcommitted
tests: userspace: Add AArch64 case
Fix tests/kernel/mem_protect/userspace test adding the arch-specific code to support AArch64. Signed-off-by: Carlo Caione <[email protected]>
1 parent 8cbd9c7 commit 5941713

File tree

1 file changed

+25
-1
lines changed
  • tests/kernel/mem_protect/userspace/src

1 file changed

+25
-1
lines changed

tests/kernel/mem_protect/userspace/src/main.c

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
#include <arch/arc/v2/mpu/arc_core_mpu.h>
2323
#endif
2424

25-
#if defined(CONFIG_ARM)
25+
#if defined(CONFIG_ARM) && !defined(CONFIG_ARM64)
2626
extern void arm_core_mpu_disable(void);
2727
#endif
2828

@@ -124,6 +124,19 @@ static void test_write_control(void)
124124
);
125125
#endif
126126
zassert_unreachable("Write to control register did not fault");
127+
128+
#elif defined(CONFIG_ARM64)
129+
uint64_t val = SPSR_MODE_EL1T;
130+
131+
set_fault(K_ERR_CPU_EXCEPTION);
132+
133+
__asm__ volatile("msr spsr_el1, %0"
134+
:
135+
: "r" (val)
136+
: "memory", "cc");
137+
138+
zassert_unreachable("Write to control register did not fault");
139+
127140
#elif defined(CONFIG_ARM)
128141
unsigned int msr_value;
129142

@@ -183,6 +196,17 @@ static void test_disable_mmu_mpu(void)
183196
"mov %eax, %cr0;\n\t"
184197
);
185198
#endif
199+
#elif defined(CONFIG_ARM64)
200+
uint64_t val;
201+
202+
set_fault(K_ERR_CPU_EXCEPTION);
203+
204+
__asm__ volatile("mrs %0, sctlr_el1" : "=r" (val));
205+
__asm__ volatile("msr sctlr_el1, %0"
206+
:
207+
: "r" (val & ~(SCTLR_M_BIT | SCTLR_C_BIT))
208+
: "memory", "cc");
209+
186210
#elif defined(CONFIG_ARM)
187211
#ifndef CONFIG_TRUSTED_EXECUTION_NONSECURE
188212
set_fault(K_ERR_CPU_EXCEPTION);

0 commit comments

Comments
 (0)