]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2010-01-26 Robert Millan <rmh.grub@aybabtu.com>
authorRobert Millan <rmh@aybabtu.com>
Tue, 26 Jan 2010 16:39:37 +0000 (16:39 +0000)
committerRobert Millan <rmh@aybabtu.com>
Tue, 26 Jan 2010 16:39:37 +0000 (16:39 +0000)
* include/grub/i386/pc/boot.h (GRUB_BOOT_MACHINE_PXE_DL): New macro.

* boot/i386/pc/pxeboot.S: Include `<grub/machine/boot.h>'.
(_start): Macroify `0x7F'.

* kern/i386/pc/init.c: Include `<grub/machine/boot.h>'.
(make_install_device): Use "(pxe)" as fallback prefix when booting
via PXE.

ChangeLog
boot/i386/pc/pxeboot.S
include/grub/i386/pc/boot.h
kern/i386/pc/init.c

index aabc66370c3652c5007a285de6b0daa66f23ace5..293e40a4087ee934997e85717076f041c8ba11ac 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2010-01-26  Robert Millan  <rmh.grub@aybabtu.com>
+
+       * include/grub/i386/pc/boot.h (GRUB_BOOT_MACHINE_PXE_DL): New macro.
+
+       * boot/i386/pc/pxeboot.S: Include `<grub/machine/boot.h>'.
+       (_start): Macroify `0x7F'.
+
+       * kern/i386/pc/init.c: Include `<grub/machine/boot.h>'.
+       (make_install_device): Use "(pxe)" as fallback prefix when booting
+       via PXE.
+
 2010-01-26  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * configure.ac: Reset LIBS after check for libgcc symbols.
index 28c90e29b59493455a7c92436ea5ddf70526d05c..446bfc781a3ac0524678a44ddbe47a81a000330b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  GRUB  --  GRand Unified Bootloader
- *  Copyright (C) 2000,2005,2007,2008,2009   Free Software Foundation, Inc.
+ *  Copyright (C) 2000,2005,2007,2008,2009,2010   Free Software Foundation, Inc.
  *
  *  GRUB is free software: you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -16,6 +16,8 @@
  *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <grub/machine/boot.h>
+
        .file   "pxeboot.S"
        .text
 
@@ -28,7 +30,7 @@ _start:
 start:
 
        /* Use drive number 0x7F for PXE */
-        movb   $0x7F, %dl
+        movb   $GRUB_BOOT_MACHINE_PXE_DL, %dl
 
        /* Jump to the real world */
        ljmp    $0, $0x8200
index 508b107422d1b0055f8057d293cadf3994af1d73..e88c62b71cf2a896d3addecaf15857e325cefd1b 100644 (file)
@@ -66,6 +66,8 @@
 /* The size of a block list used in the kernel startup code.  */
 #define GRUB_BOOT_MACHINE_LIST_SIZE    12
 
+#define GRUB_BOOT_MACHINE_PXE_DL       0x7f
+
 #ifndef ASM_FILE
 
 /* This is the blocklist used in the diskboot image.  */
index e45ad39719350fb8d5f918a0b87718e202c3d0a2..1707049fe5f616a6576388530b6c97e3da5eccd8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  GRUB  --  GRand Unified Bootloader
- *  Copyright (C) 2002,2003,2004,2005,2006,2007,2008,2009  Free Software Foundation, Inc.
+ *  Copyright (C) 2002,2003,2004,2005,2006,2007,2008,2009,2010  Free Software Foundation, Inc.
  *
  *  GRUB is free software: you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -18,6 +18,7 @@
 
 #include <grub/kernel.h>
 #include <grub/mm.h>
+#include <grub/machine/boot.h>
 #include <grub/machine/init.h>
 #include <grub/machine/memory.h>
 #include <grub/machine/console.h>
@@ -62,22 +63,28 @@ make_install_device (void)
     {
       /* No hardcoded root partition - make it from the boot drive and the
         partition number encoded at the install time.  */
-      grub_snprintf (dev, sizeof (dev),
-                   "(%cd%u", (grub_boot_drive & 0x80) ? 'h' : 'f',
-                   grub_boot_drive & 0x7f);
-      ptr += grub_strlen (ptr);
-
-      if (grub_install_dos_part >= 0)
-       grub_snprintf (ptr, sizeof (dev) - (ptr - dev),
-                      ",%u", grub_install_dos_part + 1);
-
-      ptr += grub_strlen (ptr);
-
-      if (grub_install_bsd_part >= 0)
-       grub_snprintf (ptr, sizeof (dev) - (ptr - dev), ",%c",
-                      grub_install_bsd_part + 'a');
-
-      ptr += grub_strlen (ptr);
+      if (grub_boot_drive == GRUB_BOOT_MACHINE_PXE_DL)
+       {
+         grub_strcpy (dev, "(pxe");
+         ptr += sizeof ("(pxe") - 1;
+       }
+      else
+       {
+         grub_snprintf (dev, sizeof (dev),
+                        "(%cd%u", (grub_boot_drive & 0x80) ? 'h' : 'f',
+                        grub_boot_drive & 0x7f);
+         ptr += grub_strlen (ptr);
+
+         if (grub_install_dos_part >= 0)
+           grub_snprintf (ptr, sizeof (dev) - (ptr - dev),
+                          ",%u", grub_install_dos_part + 1);
+         ptr += grub_strlen (ptr);
+
+         if (grub_install_bsd_part >= 0)
+           grub_snprintf (ptr, sizeof (dev) - (ptr - dev), ",%c",
+                          grub_install_bsd_part + 'a');
+         ptr += grub_strlen (ptr);
+       }
 
       grub_snprintf (ptr, sizeof (dev) - (ptr - dev), ")%s", grub_prefix);
       grub_strcpy (grub_prefix, dev);