Capable of starting a multiboot kernel (albeit without the multiboot
authorMichael Brown <mcb30@etherboot.org>
Thu, 11 Jan 2007 18:41:15 +0000 (18:41 +0000)
committerMichael Brown <mcb30@etherboot.org>
Thu, 11 Jan 2007 18:41:15 +0000 (18:41 +0000)
information table yet).

src/arch/i386/image/multiboot.c

index cbab6a5..cfe4589 100644 (file)
@@ -74,8 +74,21 @@ struct multiboot_header_info {
  * @v image            ELF file
  * @ret rc             Return status code
  */
  * @v image            ELF file
  * @ret rc             Return status code
  */
-static int multiboot_execute ( struct image *image __unused ) {
-       return -ENOTSUP;
+static int multiboot_execute ( struct image *image ) {
+       struct multiboot_info mbinfo;
+
+       /* Populate multiboot information structure */
+       memset ( &mbinfo, 0, sizeof ( mbinfo ) );
+       
+
+       /* Jump to OS with flat physical addressing */
+       __asm__ ( PHYS_CODE ( "call *%%edi\n\t" )
+                 : : "a" ( MULTIBOOT_BOOTLOADER_MAGIC ),
+                     "b" ( virt_to_phys ( &mbinfo ) ),
+                     "D" ( image->entry )
+                 : "ecx", "edx", "esi", "ebp" );
+
+       return -ECANCELED;
 }
 
 /**
 }
 
 /**