aboutsummaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/i386/prefix/mromprefix.S12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/arch/i386/prefix/mromprefix.S b/src/arch/i386/prefix/mromprefix.S
index d7b7fc3..abe1c9e 100644
--- a/src/arch/i386/prefix/mromprefix.S
+++ b/src/arch/i386/prefix/mromprefix.S
@@ -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