Browse Source

[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>
tags/v1.20.1
Michael Brown 13 years ago
parent
commit
d4f0c5d088
1 changed files with 5 additions and 0 deletions
  1. 5
    0
      src/arch/i386/prefix/romprefix.S

+ 5
- 0
src/arch/i386/prefix/romprefix.S View File

@@ -104,6 +104,11 @@ pciheader_runtime_length:
104 104
 	.long	0
105 105
 	.previous
106 106
 
107
+	/* PnP doesn't require any particular alignment, but IBM
108
+	 * BIOSes will scan on 16-byte boundaries rather than using
109
+	 * the offset stored at 0x1a
110
+	 */
111
+	.align	16
107 112
 pnpheader:
108 113
 	.ascii	"$PnP"			/* Signature */
109 114
 	.byte	0x01			/* Structure revision */

Loading…
Cancel
Save