diff --git a/src/system/boot/platform/raspberrypi_arm/start.cpp b/src/system/boot/platform/raspberrypi_arm/start.cpp index daf40aef77..e55549f3de 100644 --- a/src/system/boot/platform/raspberrypi_arm/start.cpp +++ b/src/system/boot/platform/raspberrypi_arm/start.cpp @@ -13,10 +13,14 @@ #include "serial.h" #include + +#include + #include #include #include -#include + +#include #include @@ -86,7 +90,21 @@ platform_boot_options(void) void platform_start_kernel(void) { - #warning IMPLEMENT platform_start_kernel + preloaded_elf32_image *image = static_cast( + gKernelArgs.kernel_image.Pointer()); + + addr_t kernelEntry = image->elf_header.e_entry; + addr_t stackTop + = gKernelArgs.cpu_kstack[0].start + gKernelArgs.cpu_kstack[0].size; + + serial_cleanup(); + mmu_init_for_kernel(); + + dprintf("kernel entry at %lx\n", kernelEntry); + + status_t error = arch_start_kernel(&gKernelArgs, kernelEntry, + stackTop); + panic("kernel returned!\n"); }