david/ipxe
Archived
1
0

[mromprefix] Allow for .mrom images larger than 128kB

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>
This commit is contained in:
Michael Brown 2014-08-26 12:33:40 +01:00
parent 3937274cfb
commit 8049a52840

View File

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