[syslinux] [PATCH 9/9] Workaround for a buggy get info BIOS
Frediano Ziglio
frediano.ziglio at citrix.com
Wed Oct 3 07:26:14 PDT 2012
This issue drive parameters only one time to avoid to have disk read failure.
This happened just on a specific machine, probably the BIOS is buggy but
the fix didn't have any regression.
Signed-off-by: Frediano Ziglio <frediano.ziglio at citrix.com>
---
core/adv.inc | 35 ++++++++++++++++++-----------------
1 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/core/adv.inc b/core/adv.inc
index a714800..ab29fde 100644
--- a/core/adv.inc
+++ b/core/adv.inc
@@ -351,6 +351,23 @@ adv_read_write:
jne .noedd
test cl,1
jz .noedd
+
+ push 512
+ sub sp, 14h
+ push 0
+ push 1ah
+ mov si,sp
+ mov ah,48h ; EDD get drive parameters
+ mov dl,[ADVDrive]
+ push ds
+ push ss
+ pop ds
+ int 13h
+ pop ds
+ add sp,18h
+ pop ax
+ mov [ADVSsz], ax
+
mov si,.ebios
.noedd:
@@ -375,23 +392,6 @@ adv_read_write:
extern xfer_buf_seg
.ebios:
- pusha
- sub sp,1ch
- push 1eh
- mov si,sp
- mov ah,48h ; EDD get drive parameters
- mov dl,[ADVDrive]
- push ds
- push ss
- pop ds
- mov word [si+18h], 512
- int 13h
- mov ax, [si+18h]
- pop ds
- mov [ADVSsz], ax
- add sp,1eh
- popa
-
mov cx,adv_retries
.eb_retry:
; Form DAPA on stack
@@ -450,6 +450,7 @@ adv_read_write:
; copy it back
pusha
push ds
+ cld
mov si, di
mov di, bx
push xfer_buf_seg
--
1.7.5.4
More information about the Syslinux
mailing list