aboutsummaryrefslogtreecommitdiff
path: root/PL0_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'PL0_test.c')
-rw-r--r--PL0_test.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/PL0_test.c b/PL0_test.c
index 1a3d49d..7609294 100644
--- a/PL0_test.c
+++ b/PL0_test.c
@@ -1,9 +1,25 @@
#include "uart.h"
+#include "psr.h"
void PL0_main(void)
{
- uart_puts("hello PL0!\n\r");
+ uart_puts("hello PL0! Switching to user mode!\n\r");
+ asm("cps #0b10000\n\r"
+ "isb" ::: "memory");
+
+ // if all went correct, Success! gets printed
+ uart_puts("Success!\n\r");
+
+ // if we're indeed i PL0, we should crash now, when trying to access
+ // memory we're not allowed to
+ char first_kernel_byte[2];
+
+ first_kernel_byte[0] = *(char*) ((uint32_t) 0x8000);
+ first_kernel_byte[1] = '\0';
+
+ uart_puts(first_kernel_byte);
+
while (1)
{
char c;