]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[mromprefix] Allow for .mrom images larger than 128kB
authorMichael Brown <mcb30@ipxe.org>
Tue, 26 Aug 2014 11:33:40 +0000 (12:33 +0100)
committerMichael Brown <mcb30@ipxe.org>
Tue, 26 Aug 2014 14:17:56 +0000 (15:17 +0100)
The .mrom payload has a code type of 0xff and so the initialisation
length field (single byte at offset 0x02) does not need to be
present.  Use only the PCI header's image length field, which allows
the .mrom payload to be up to 32MB in size.

Inspired-by: Swift Geek <swiftgeek@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/arch/i386/prefix/mromprefix.S

index 43f0d97de1290911540e5984082755b357161d97..4c94457c23ea2762717f039df494371dc3af3b92 100644 (file)
@@ -196,7 +196,7 @@ find_mem_bar:
        movl    %eax, %esi
        addr32 es movzbl 2(%esi), %ecx
        shll    $7, %ecx
-       addr32 es movzbl 2(%esi,%ecx,4), %edx
+       addr32 es movzwl mpciheader_image_length(%esi,%ecx,4), %edx
        shll    $7, %edx
        addl    %edx, %ecx
        addr32 es rep movsl
@@ -463,20 +463,12 @@ pci_set_mem_access:
        .org    0x00
 mromheader:
        .word   0xaa55                  /* BIOS extension signature */
-mromheader_size: .byte 0               /* Size in 512-byte blocks */
        .org    0x18
        .word   mpciheader
        .org    0x1a
        .word   0
        .size   mromheader, . - mromheader
 
-       .section ".zinfo.fixup", "a", @progbits /* Compressor fixups */
-       .ascii  "APPB"
-       .long   mromheader_size
-       .long   512
-       .long   0
-       .previous
-
 mpciheader:
        .ascii  "PCIR"                  /* Signature */
        .word   pci_vendor_id           /* Vendor identification */