diff options
author | H. Peter Anvin <hpa@zytor.com> | 2008-09-05 15:00:40 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2008-09-05 15:00:40 -0700 |
commit | ae73971d97f9fe3cc49f690e44962f32bd8eea37 (patch) | |
tree | d46f9e465110af851921c03dafb89a0bf6ee00c0 /core/isolinux.asm | |
parent | 058dd028ac7d8ae217d1b3b00213751d63034195 (diff) | |
download | syslinux-ae73971d97f9fe3cc49f690e44962f32bd8eea37.tar.gz |
ISOLINUX: fix EBIOS information passing in hybrid HDD mode
We were incorrectly not passing the EBIOS flag in hybrid HDD mode;
also compute the EBIOS LBA correctly in hybrid HDD mode. Allow a
34-bit LBA for this, that way we still support up to 2^32 CD-ROM
sectors (8 TB).
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'core/isolinux.asm')
-rw-r--r-- | core/isolinux.asm | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/core/isolinux.asm b/core/isolinux.asm index 060a3cf8..cb581e98 100644 --- a/core/isolinux.asm +++ b/core/isolinux.asm @@ -235,7 +235,7 @@ bi_end: ; entry stack: ; - CBIOS Heads ; - CBIOS Sectors - ; - CBIOS flag + ; - EBIOS flag ; - DX (including drive number) ; - DI ; - ES @@ -749,6 +749,8 @@ getlinsec: jmp word [cs:GetlinsecPtr] ; getlinsec implementation for floppy/HDD EBIOS (EDD) ; getlinsec_ebios: + xor edx,edx + shld edx,eax,2 shl eax,2 ; Convert to HDD sectors shl bp,2 @@ -781,6 +783,7 @@ getlinsec_ebios: jc .error pop bp add eax,edi ; Advance sector pointer + adc edx,0 sub bp,di ; Sectors left shl di,9 ; 512-byte sectors add bx,di ; Advance buffer pointer |