summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/arch/i386/interface/pxe/pxe_call.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/arch/i386/interface/pxe/pxe_call.c b/src/arch/i386/interface/pxe/pxe_call.c
index 104313666..2d89cc4d4 100644
--- a/src/arch/i386/interface/pxe/pxe_call.c
+++ b/src/arch/i386/interface/pxe/pxe_call.c
@@ -265,6 +265,9 @@ struct init_fn pxe_init_fn __init_fn ( INIT_NORMAL ) = {
* @v netdev Net device to use as PXE net device
*/
void pxe_activate ( struct net_device *netdev ) {
+ uint32_t discard_a;
+ uint32_t discard_b;
+ uint32_t discard_d;
/* Ensure INT 1A is hooked */
if ( ! int_1a_hooked ) {
@@ -276,6 +279,15 @@ void pxe_activate ( struct net_device *netdev ) {
/* Set PXE network device */
pxe_set_netdev ( netdev );
+
+ /* Notify BIOS of installation */
+ __asm__ __volatile__ ( REAL_CODE ( "pushw %%cs\n\t"
+ "popw %%es\n\t"
+ "int $0x1a\n\t" )
+ : "=a" ( discard_a ), "=b" ( discard_b ),
+ "=d" ( discard_d )
+ : "0" ( 0x564e ),
+ "1" ( __from_text16 ( &pxenv ) ) );
}
/**