aboutsummaryrefslogtreecommitdiffstats
path: root/core/isolinux.asm
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2010-05-12 21:23:13 -0700
committerH. Peter Anvin <hpa@zytor.com>2010-05-12 21:23:13 -0700
commitae197a98b905a7da7872eef29dcbb0f822fa81de (patch)
tree8749bdaf86105d27506361cb673212e1ae2bc946 /core/isolinux.asm
parentc6bebc44627afe5a652d4e305527ca12e90ff768 (diff)
downloadsyslinux-ae197a98b905a7da7872eef29dcbb0f822fa81de.tar.gz
diskio: make maxtransfer per-device, cap to 127, imported from headsyslinux-4.00-pre43
Make the maxtransfer per device, as it should be; properly imported from the head loader (in case it is patched with -s). Also enforce capping to 127 for EBIOS and 63 for CBIOS. This is structured so that once EDD4 is approved we can remove the capping for that particular subcase. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'core/isolinux.asm')
-rw-r--r--core/isolinux.asm8
1 files changed, 7 insertions, 1 deletions
diff --git a/core/isolinux.asm b/core/isolinux.asm
index d1d5bf8d..d2ba81d9 100644
--- a/core/isolinux.asm
+++ b/core/isolinux.asm
@@ -1093,7 +1093,6 @@ bios_ebios: dw getlinsec_ebios, bios_ebios_str
%endif
; Maximum transfer size
- global MaxTransfer
MaxTransfer dw 127 ; Hard disk modes
MaxTransferCD dw 32 ; CD mode
@@ -1154,11 +1153,18 @@ all_read:
; (which will be at 16 only for a single-session disk!); from the PVD
; we should be able to find the rest of what we need to know.
;
+init_fs:
pushad
mov eax,ROOT_FS_OPS
mov dl,[DriveNumber]
cmp word [BIOSType],bios_cdrom
sete dh ; 1 for cdrom, 0 for hybrid mode
+ jne .hybrid
+ movzx ebp,word [MaxTransferCD]
+ jmp .common
+.hybrid:
+ movzx ebp,word [MaxTransfer]
+.common:
mov ecx,[bsHidden]
mov ebx,[bsHidden+4]
mov si,[bsHeads]