Use byte 6 for the checksum, rather than byte 5. (Byte 5 may be part of
authorMichael Brown <mcb30@etherboot.org>
Tue, 6 Jun 2006 15:29:14 +0000 (15:29 +0000)
committerMichael Brown <mcb30@etherboot.org>
Tue, 6 Jun 2006 15:29:14 +0000 (15:29 +0000)
the jmp instruction).

src/util/makerom.pl

index 9d751e1..2bd8e1f 100755 (executable)
@@ -131,9 +131,9 @@ sub writerom ($$) {
 sub checksum ($) {
        my ($romref) = @_;
 
-       substr($$romref, 5, 1) = "\x00";
+       substr($$romref, 6, 1) = "\x00";
        my $sum = unpack('%8C*', $$romref);
-       substr($$romref, 5, 1) = chr(256 - $sum);
+       substr($$romref, 6, 1) = chr(256 - $sum);
        # Double check
        $sum = unpack('%8C*', $$romref);
        if ($sum != 0) {
@@ -168,14 +168,10 @@ sub makerom () {
                        $romsize = ($filesize + 511) & ~511
                }
        } else {
-               $romsize = getromsize(\$rom);
-               # 0 put there by *loader.S means makerom should pick the size
-               if ($romsize == 0) {
-                       # Shrink romsize down to the smallest power of two that will do
-                       for ($romsize = MAXROMSIZE;
-                               $romsize > MINROMSIZE and $romsize >= 2*$filesize;
-                               $romsize /= 2) { }
-               }
+               # Shrink romsize down to the smallest power of two that will do
+               for ($romsize = MAXROMSIZE;
+                    $romsize > MINROMSIZE and $romsize >= 2*$filesize;
+                    $romsize /= 2) { }
        }
        if ($filesize > $romsize) {
                print STDERR "ROM size of $romsize not big enough for data, ";