summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown2014-08-21 16:59:11 +0200
committerMichael Brown2014-08-22 16:05:05 +0200
commit16e235987fae94e53db293990ad4f2d816b72326 (patch)
treef184c3e5ee33aed4696f22d0a04c2d129b36cd96
parent[efi] Dump details of any calls to our dummy block and disk I/O protocols (diff)
downloadipxe-16e235987fae94e53db293990ad4f2d816b72326.tar.gz
ipxe-16e235987fae94e53db293990ad4f2d816b72326.tar.xz
ipxe-16e235987fae94e53db293990ad4f2d816b72326.zip
[romprefix] Do not preserve unused register %di
Since some PnP BIOSes fail to set %es:di to point to the PnP signature on entry, we identify a PnP BIOS by scanning through the top 64kB of base memory looking for the PnP structure. We therefore don't actually use the values of %es:di provided to the initialisation entry point, and so there is no need to preserve them. Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/arch/i386/prefix/romprefix.S9
1 files changed, 1 insertions, 8 deletions
diff --git a/src/arch/i386/prefix/romprefix.S b/src/arch/i386/prefix/romprefix.S
index ae18f05d0..999944013 100644
--- a/src/arch/i386/prefix/romprefix.S
+++ b/src/arch/i386/prefix/romprefix.S
@@ -208,15 +208,8 @@ init:
pushw %cs
popw %ds
- /* Shuffle some registers around. We need %di available for
- * the print_xxx functions, and in a register that's
- * addressable from %es, so shuffle as follows:
- *
- * %di (pointer to PnP structure) => %bx
- * %bx (runtime segment address, for PCI 3.0) => %gs
- */
+ /* Store PCI 3.0 runtime segment address for later use */
movw %bx, %gs
- movw %di, %bx
/* Store PCI bus:dev.fn address */
movw %ax, init_pci_busdevfn