瀏覽代碼

[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 年之前
父節點
當前提交
d4f0c5d088
共有 1 個檔案被更改,包括 5 行新增0 行删除
  1. 5
    0
      src/arch/i386/prefix/romprefix.S

+ 5
- 0
src/arch/i386/prefix/romprefix.S 查看文件

@@ -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…
取消
儲存