david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[romprefix] Allow .mrom image to be placed anywhere within the BAR

A .mrom image currently assumes that it is the first image within the
expansion ROM BAR, which may not be correct when multiple images are
present.

Fix by scanning through the BAR until we locate an image matching our
build ID.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2012-06-10 19:01:20 +01:00
parent 9e8d431a0d
commit b58374fe91
1 changed files with 12 additions and 0 deletions

View File

@ -154,6 +154,18 @@ find_mem_bar:
movw $PCI_BAR_EXPROM, %di
call pci_write_config_dword
/* Locate our ROM image */
1: addr32 es cmpw $0xaa55, (%eax)
stc
jne 99f
addr32 es cmpl $_build_id, build_id(%eax)
je 2f
addr32 es movzbl 2(%eax), %ecx
shll $9, %ecx
addl %ecx, %eax
jmp 1b
2:
/* Copy payload to buffer, or set buffer address to BAR address */
testl %esi, %esi
jz 1f