From ffcff6e28c3277f7d17bd8da2af2f2c060156f31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 20 Apr 2004 23:52:17 +0000 Subject: [PATCH] Added platform_start_kernel() function. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7268 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kernel/boot/platform/bios_ia32/start.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/kernel/boot/platform/bios_ia32/start.c b/src/kernel/boot/platform/bios_ia32/start.c index 6cf684f16f..d245f44221 100644 --- a/src/kernel/boot/platform/bios_ia32/start.c +++ b/src/kernel/boot/platform/bios_ia32/start.c @@ -10,6 +10,7 @@ #include #include #include +#include #include @@ -51,6 +52,24 @@ platform_user_menu_requested(void) } +void +platform_start_kernel(void) +{ + mmu_init_for_kernel(); + printf("kernel args at %p\n", &gKernelArgs); + + asm("movl %0, %%eax; " // move stack out of way + "movl %%eax, %%esp; " + : : "m" (gKernelArgs.cpu_kstack[0].start + gKernelArgs.cpu_kstack[0].size)); + asm("pushl $0x0; " // we're the BSP cpu (0) + "pushl %0; " // kernel args + "pushl $0x0;" // dummy retval for call to main + "pushl %1; " // this is the start address + "ret; " // jump. + : : "g" (&gKernelArgs), "g" (gKernelEntry)); +} + + void _start(void) {