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 <colin.k...@ubuntu.com> 2010-02-10 Colin Watson <cjwat...@ubuntu.com> 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 [cjwat...@ubuntu.com] _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel