#include "uart.h" #include "demo_functionality.h" #include "paging.h" void kernel_main(uint32_t r0, uint32_t r1, uint32_t atags) { // Declare as unused (void) r0; (void) r1; (void) atags; uart_init(); // When we attach screen session after loading kernel with socat // we miss kernel's greeting... So we'll make the kernel wait for // one char we're going to send from within screen uart_getc(); uart_puts("Hello, kernel World!\r\n"); // prints some info demo_paging_support(); // prints some info demo_current_mode(); // prints some info and sets upp translation table, turns on MMU setup_flat_map(); demo_setup_PL0(); demo_setup_interrupts(); // prints some info and sets up a section for PL0 code, loads a blob // there and jumps to it... never, ever, ever returns demo_go_unprivileged(); while(1); while (1) { char c = uart_getc(); uart_putc(c); if (c == '\r') uart_putc('\n'); } }