aboutsummaryrefslogtreecommitdiffstats
path: root/pxelinux.asm
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2008-05-28 09:47:44 -0700
committerH. Peter Anvin <hpa@zytor.com>2008-05-28 09:47:44 -0700
commitff747ef4c75c9e55c9d5c5552126d994c96da245 (patch)
tree16394b6d9dc027b24f7cd3c2da1c2caf58be6efe /pxelinux.asm
parent80001b1d2acc06b33bb6de05474ce54682dacfb6 (diff)
downloadsyslinux.git-ff747ef4c75c9e55c9d5c5552126d994c96da245.tar.gz
syslinux.git-ff747ef4c75c9e55c9d5c5552126d994c96da245.tar.xz
syslinux.git-ff747ef4c75c9e55c9d5c5552126d994c96da245.zip
pxenv: save away the PXE return code so COMBOOT can return itsyslinux-3.70-pre10
PXELINUX itself doesn't actually use the PXE return code, but the COMBOOT interface is supposed to return it. Accordingly, make sure it is stashed away so we can return it; for code that doesn't care, it just writes a dedicated status variable which can be safely ignored.
Diffstat (limited to 'pxelinux.asm')
-rw-r--r--pxelinux.asm9
1 files changed, 9 insertions, 0 deletions
diff --git a/pxelinux.asm b/pxelinux.asm
index 8be844fa..c4feee2e 100644
--- a/pxelinux.asm
+++ b/pxelinux.asm
@@ -1712,6 +1712,7 @@ pxenv:
push bx
.jump: call 0:0
add sp,6
+ mov [cs:PXEStatus],ax
add ax,-1 ; Set CF unless AX was 0
%if USE_PXE_PROVIDED_STACK == 0
@@ -1722,6 +1723,8 @@ pxenv:
; except for testing it against zero (and setting CF),
; which we did above. For anything else,
; use the Status field in the reply.
+ ; For the COMBOOT function, the value is saved in
+ ; the PXEStatus variable.
popad
cld ; Make sure DF <- 0
ret
@@ -1729,6 +1732,12 @@ pxenv:
; Must be after function def due to NASM bug
PXEEntry equ pxenv.jump+1
+ section .bss
+ alignb 2
+PXEStatus resb 2
+
+ section .text
+
;
; getfssec: Get multiple clusters from a file, given the starting cluster.
;