grub-devel
[Top][All Lists]
Advanced

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

[PATCH] Trim a few bytes from boot.img


From: Colin Watson
Subject: [PATCH] Trim a few bytes from boot.img
Date: Wed, 10 Feb 2010 11:40:21 +0000
User-agent: Mutt/1.5.18 (2008-05-17)

A while back, I was looking for eight extra bytes in boot.img so that I
could put a keyboard modifier check in there, allowing me to avoid
printing "GRUB loading" by default, which my boss^3 has been asking me
for, without crippling debugging in the process.  I knew I could find a
few by shortening error messages (e.g. "Hard Disk" -> "HD"), but I asked
Colin King, one of our kernel hackers, if he could find a nicer
approach.  He came up with a patch which I massaged a bit into this.
What do people think?

It seems as if it might be generally useful to have a bit of spare space
in here, although I would certainly appreciate it if people didn't use
it all at once. ;-)

2010-02-10  Colin King  <address@hidden>
2010-02-10  Colin Watson  <address@hidden>

        Shrink the pre-partition-table part of boot.img by eight bytes.

        * boot/i386/pc/boot.S (ERR): New macro.
        (chs_mode): Use ERR.
        (geometry_error): Likewise.
        (hd_probe_error): Remove.  This is only used once, so we wrwite
        it inline instead.
        (read_error): Instead of printing read_error_string, just set up
        %si and fall through to ...
        (error_message): ... this new function, also used by ERR.

=== modified file 'boot/i386/pc/boot.S'
--- boot/i386/pc/boot.S 2010-01-03 22:05:07 +0000
+++ boot/i386/pc/boot.S 2010-02-10 11:32:08 +0000
@@ -27,6 +27,7 @@
 
        /* Print message string */
 #define MSG(x) movw $x, %si; call LOCAL(message)
+#define ERR(x) movw $x, %si; jmp LOCAL(error_message)
 
        .file   "boot.S"
 
@@ -233,7 +234,7 @@ LOCAL(chs_mode):
        jz      LOCAL(floppy_probe)
 
        /* Nope, we definitely have a hard disk, and we're screwed. */
-       jmp     LOCAL(hd_probe_error)
+       ERR(hd_probe_error_string)
 
 LOCAL(final_init):
        /* set the mode to zero */
@@ -360,22 +361,15 @@ LOCAL(copy_buffer):
  * BIOS Geometry translation error (past the end of the disk geometry!).
  */
 LOCAL(geometry_error):
-       MSG(geometry_error_string)
-       jmp     LOCAL(general_error)
-
-/*
- * Disk probe failure.
- */
-LOCAL(hd_probe_error):
-       MSG(hd_probe_error_string)
-       jmp     LOCAL(general_error)
+       ERR(geometry_error_string)
 
 /*
  * Read error on the disk.
  */
 LOCAL(read_error):
-       MSG(read_error_string)
-
+       movw    $read_error_string, %si
+LOCAL(error_message):
+       call    LOCAL(message)
 LOCAL(general_error):
        MSG(general_error_string)
 

Thanks,

-- 
Colin Watson                                       address@hidden




reply via email to

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