summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brown2011-05-17 23:48:52 +0200
committerMichael Brown2011-05-17 23:48:52 +0200
commitd4f0c5d088ccbeb762496f08fd85a9e68a2d5a20 (patch)
tree1306539043ea06a3ae21a532d616040e518d654b /src
parent[romprefix] Do not fall back to hooking INT19 by default (diff)
downloadipxe-d4f0c5d088ccbeb762496f08fd85a9e68a2d5a20.tar.gz
ipxe-d4f0c5d088ccbeb762496f08fd85a9e68a2d5a20.tar.xz
ipxe-d4f0c5d088ccbeb762496f08fd85a9e68a2d5a20.zip
[romprefix] Force PnP header to a 16-byte boundary for IBM BIOSes
IBM BIOSes ignore the PnP header offset stored at address 0x1a and instead scan for the $PnP signature on a 16-byte boundary. (This alignment is not mandated by the PnP specification.) Force PnP header to a 16-byte boundary to work around these BIOSes. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src')
-rw-r--r--src/arch/i386/prefix/romprefix.S5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/arch/i386/prefix/romprefix.S b/src/arch/i386/prefix/romprefix.S
index 421aa027..aa3465b2 100644
--- a/src/arch/i386/prefix/romprefix.S
+++ b/src/arch/i386/prefix/romprefix.S
@@ -104,6 +104,11 @@ pciheader_runtime_length:
.long 0
.previous
+ /* PnP doesn't require any particular alignment, but IBM
+ * BIOSes will scan on 16-byte boundaries rather than using
+ * the offset stored at 0x1a
+ */
+ .align 16
pnpheader:
.ascii "$PnP" /* Signature */
.byte 0x01 /* Structure revision */