summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS6
-rw-r--r--comboot.doc8
-rw-r--r--comboot.inc9
-rw-r--r--pxelinux.asm2
4 files changed, 23 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index 6b0bc189..425c2331 100644
--- a/NEWS
+++ b/NEWS
@@ -3,7 +3,11 @@ apply to that specific program only; other changes apply to all of
them.
Changes in 3.08:
- * SYSLINUX: Fix performance regression (-s mode always enabled.)
+ * SYSLINUX: Fix performance regression (-s mode always
+ enabled.)
+ * Add API function for idle loop.
+ * libutil: Add do_idle() function for idle loop, make
+ get_key() use it.
Changes in 3.07:
* Fix chainloading (chain.c32).
diff --git a/comboot.doc b/comboot.doc
index 8e25e8bd..ee2ca07e 100644
--- a/comboot.doc
+++ b/comboot.doc
@@ -575,3 +575,11 @@ AX=0012h [3.05] Cleanup, shuffle and boot
were set up by the PXE ROM.
+AX=0013h [3.08] Idle loop call
+ Input: AX 0013h
+ Output: None
+
+ Call this routine while sitting in an idle loop. It performs
+ any periodic activities required by the filesystem code. At
+ the moment, this is a no-op on all derivatives except
+ PXELINUX, where it executes PXE calls to answer ARP queries.
diff --git a/comboot.inc b/comboot.inc
index d8a55a8a..dfe57b64 100644
--- a/comboot.inc
+++ b/comboot.inc
@@ -644,6 +644,14 @@ comapi_shuffle:
stc
ret
+;
+; INT 22h AX=0013h Idle call
+;
+comapi_idle:
+ DO_IDLE
+ clc
+ ret
+
int21_table:
int21 00h, comboot_return
int21 01h, comboot_getkey
@@ -678,6 +686,7 @@ int22_table:
dw comapi_dnsresolv ; 0010 resolve hostname
dw comapi_maxshuffle ; 0011 maximum shuffle descriptors
dw comapi_shuffle ; 0012 cleanup, shuffle and boot
+ dw comapi_idle ; 0013 idle call
int22_count equ ($-int22_table)/2
APIKeyWait db 0
diff --git a/pxelinux.asm b/pxelinux.asm
index e8c38062..a48093fc 100644
--- a/pxelinux.asm
+++ b/pxelinux.asm
@@ -2343,7 +2343,7 @@ check_for_arp:
mov word [pxe_udp_read_pkt.buffersize],packet_buf_size
mov eax,[MyIP]
mov [pxe_udp_read_pkt.dip],eax
- mov [pxe_udp_read_pkt.lport],ax ; 0
+ mov word [pxe_udp_read_pkt.lport],htons(9) ; discard port
mov di,pxe_udp_read_pkt
mov bx,PXENV_UDP_READ
call pxenv