[pxe] Invoke INT 1a,564e when PXE stack is activated
authorMichael Brown <mcb30@ipxe.org>
Tue, 15 Sep 2015 12:20:17 +0000 (13:20 +0100)
committerMichael Brown <mcb30@ipxe.org>
Tue, 15 Sep 2015 12:33:44 +0000 (13:33 +0100)
commit3b586c8e29d471553a0e206de875923ef4deb6b8
tree7e05d677d22c1362093926d10759b9c93934fa73
parentfdad22a1ed0cefcc975f9f6d2a6153d3b47bc78a
[pxe] Invoke INT 1a,564e when PXE stack is activated

Invoke INT 1a,564e whenever a PXE stack is activated, passing the
address of the PXENV+ structure in %es:%bx.  This is designed to allow
a BIOS to be notified when a PXE stack has been installed, providing
an opportunity for start-of-day commands such as setting the MAC
address according to a policy chosen by the BIOS.

PXE defines INT 1a,5650 as a means of locating the PXENV+ structure:
this call returns %ax=0x564e and the address of the PXENV+ structure
in %es:%bx.  We choose INT 1a,564e as a fairly natural notification
call, using the parameters as would be returned by INT 1a,5650.

The full calling convention (documented as per section 3.1 of the PXE
specification) is:

  INT 1a,564e - PXE installation notification
  Enter:
    %ax = 0x564e
    %es = 16-bit segment address of the PXENV+ structure
    %bx = 16-bit offset of the PXENV+ structure
  Exit:
    %edx may be trashed (as is the case for INT 1a,5650)
    All other register contents must be preserved
    CF is cleared
    IF is preserved
    All other flags are undefined

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/arch/i386/interface/pxe/pxe_call.c