aboutsummaryrefslogtreecommitdiff
path: root/PL0_test.c
blob: 1b930247c80da2ce9c24de583dea85b5d397f017 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "uart.h"
#include "psr.h"

void PL0_main(void)
{
  uart_puts("hello PL0! Switching to user mode!\n\r");

  // 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 = uart_getc();

      uart_putc(c);
      
      if (c == '\r')
	uart_putc('\n');
    }
}