aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2009-06-14 16:21:33 -0700
committerH. Peter Anvin <hpa@zytor.com>2009-06-14 16:21:33 -0700
commitaba4633355325e8415daf0081da0ae94ec51c90c (patch)
treeb13af0f135fb8aabd0ac2529c8fb21e4cdf8f562
parent79c5c65e1dcd3ab954d564876f571794768263d1 (diff)
parent6bb2cbbf970aec9cb480de6e0df4918ffc766c0b (diff)
downloadsyslinux-elf-aba4633355325e8415daf0081da0ae94ec51c90c.tar.gz
syslinux-elf-aba4633355325e8415daf0081da0ae94ec51c90c.tar.xz
syslinux-elf-aba4633355325e8415daf0081da0ae94ec51c90c.zip
Merge branch 'master' into core32
Resolved Conflicts: version Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r--NEWS6
-rw-r--r--core/bootsect.inc21
2 files changed, 24 insertions, 3 deletions
diff --git a/NEWS b/NEWS
index 5a18525b..b6c37f1c 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,12 @@ Starting with 1.47, changes marked with SYSLINUX, PXELINUX, ISOLINUX
or EXTLINUX apply to that specific program only; other changes apply
to all derivatives.
+Changes in 3.83:
+ * PXELINUX: clear memory before handing over to a chainloaded
+ NBP. This may help avoid a bug in Windows RIS.
+ * PXELINUX: fix localboot after NBP chainloading on certain
+ BIOSes (including ASUS A8N-E, but possibly others.)
+
Changes in 3.82:
* isohybrid: fix the -partok logic for loading from a partition.
* ISOLINUX: deal with systems which return from INT 13h with
diff --git a/core/bootsect.inc b/core/bootsect.inc
index e820fa0d..4d70998c 100644
--- a/core/bootsect.inc
+++ b/core/bootsect.inc
@@ -74,21 +74,36 @@ load_bootsec:
xor ax,ax
rep movsw
pop si ; DS:SI points to partition info
+ xor bx,bx
%elif IS_ISOLINUX
mov dl,[DriveNumber]
+ xor bx,bx
%elif IS_PXELINUX
mov byte [KeepPXE],03h ; Chainloading + keep PXE
call reset_pxe
+ lfs si,[InitStack]
+ ; Put restore DS, EDX and ESI to the true initial values
+ mov bx,[fs:si+6]
+ mov edx,[fs:si+28]
+ mov esi,[fs:si+12]
%endif
- xor bx,bx
;
; replace_bootstrap for the special case where we have exactly one
-; descriptor.
+; descriptor, based in low memory. We will generate a second descriptor
+; to clear remaining FBM.
;
replace_bootstrap_one:
- push word 1 ; Length of descriptor list
+ mov eax,[trackbuf] ; Base address
+ add eax,[trackbuf+8] ; Length
+ movzx ecx,word [BIOS_fbm]
+ shl ecx,10 ; Free Base Memory
+ sub ecx,eax
+ mov [trackbuf+12],eax
+ or dword [trackbuf+16],-1 ; Zero memory
+ mov [trackbuf+20],ecx
+ push word 2 ; Length of descriptor list
; Fall through
;