qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] fix linuxboot.bin and multiboot.bin to not hija


From: Gleb Natapov
Subject: Re: [Qemu-devel] [PATCH] fix linuxboot.bin and multiboot.bin to not hijack int19
Date: Mon, 31 Jan 2011 13:50:17 +0200

On Mon, Jan 31, 2011 at 12:41:46PM +0100, Alexander Graf wrote:
> > Signed-off-by: Gleb Natapov <address@hidden>
> The idea behind the OPTION_ROM and BOOT_ROM split was to have a generic 
> header that can be used as template for random option roms or boot roms 
> alike. Your patch munges those two use-cases together by providing bev logic 
> in the generic option rom part.
> 
> Please split it out into the BOOT_ROM macro, or - if necessary - create a new 
> macro.
> 
> 
Like this?

diff --git a/pc-bios/optionrom/linuxboot.S b/pc-bios/optionrom/linuxboot.S
index c109363..79b3ae8 100644
--- a/pc-bios/optionrom/linuxboot.S
+++ b/pc-bios/optionrom/linuxboot.S
@@ -22,6 +22,8 @@
 
 #include "optionrom.h"
 
+#define PRODUCT "Linux loader"
+
 BOOT_ROM_START
 
 run_linuxboot:
diff --git a/pc-bios/optionrom/multiboot.S b/pc-bios/optionrom/multiboot.S
index 9131837..069c4e8 100644
--- a/pc-bios/optionrom/multiboot.S
+++ b/pc-bios/optionrom/multiboot.S
@@ -20,6 +20,8 @@
 
 #include "optionrom.h"
 
+#define PRODUCT "multiboot loader"
+
 #define MULTIBOOT_MAGIC                0x2badb002
 
 #define GS_PROT_JUMP           0
diff --git a/pc-bios/optionrom/optionrom.h b/pc-bios/optionrom/optionrom.h
index fbdd48a..2d4f40e 100644
--- a/pc-bios/optionrom/optionrom.h
+++ b/pc-bios/optionrom/optionrom.h
@@ -97,27 +97,37 @@
 
 #define BOOT_ROM_START                                 \
        OPTION_ROM_START                                \
-       push            %eax;                           \
-       push            %ds;                            \
-                                                       \
-       /* setup ds so we can access the IVT */         \
-       xor             %ax, %ax;                       \
-       mov             %ax, %ds;                       \
-                                                       \
-       /* install our int 19 handler */                \
-       movw            $int19_handler, (0x19*4);       \
-       mov             %cs, (0x19*4+2);                \
-                                                       \
-       pop             %ds;                            \
-       pop             %eax;                           \
        lret;                                           \
-                                                       \
-    int19_handler:;                                    \
+       .org            0x18;                           \
+       .short          0;                              \
+       .short          _pnph;                          \
+    _pnph:                                             \
+       .ascii          "$PnP";                         \
+       .byte           0x01;                           \
+       .byte           ( _pnph_len / 16 );             \
+       .short          0x0000;                         \
+       .byte           0x00;                           \
+       .byte           0x00;                           \
+       .long           0x00000000;                     \
+       .short          _manufacturer;                  \
+       .short          _product;                       \
+       .long           0x00000000;                     \
+       .short          0x0000;                         \
+       .short          0x0000;                         \
+       .short          _bev;                           \
+       .short          0x0000;                         \
+       .short          0x0000;                         \
+       .equ            _pnph_len, . - _pnph;
+    _bev:;                                             \
        /* DS = CS */                                   \
        movw            %cs, %ax;                       \
        movw            %ax, %ds;
 
 #define OPTION_ROM_END                                 \
+    _manufacturer:;                                    \
+        .asciz "QEMU";                                 \
+    _product:;                                         \
+        .asciz PRODUCT;                                        \
     .align 512, 0;                                     \
     _end:
 
--
                        Gleb.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]