summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhpa <hpa>2005-08-23 20:52:43 +0000
committerhpa <hpa>2005-08-23 20:52:43 +0000
commita4c0c06c9fad14b5af79a570e61335ac7ef74dff (patch)
treeccd8945c499c1ae27296f2c1e8dd5a8b8b4fc92f
parent9edb4d65029c36318601762268b9e2c0e0d4cb79 (diff)
downloadsyslinux-a4c0c06c9fad14b5af79a570e61335ac7ef74dff.tar.gz
Revert change to searchdir; document BX and CX trashed.
-rw-r--r--isolinux.asm18
1 files changed, 7 insertions, 11 deletions
diff --git a/isolinux.asm b/isolinux.asm
index f488dba0..a843b478 100644
--- a/isolinux.asm
+++ b/isolinux.asm
@@ -9,7 +9,7 @@
; available. It is based on the SYSLINUX boot loader for MS-DOS
; floppies.
;
-; Copyright (C) 1994-2004 H. Peter Anvin
+; Copyright (C) 1994-2005 H. Peter Anvin
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
@@ -1167,25 +1167,23 @@ local_boot:
; If unsuccessful
; ZF set
;
-
+; Assumes CS == DS == ES, and trashes BX and CX.
;
; searchdir_iso is a special entry point for ISOLINUX only. In addition
; to the above, searchdir_iso passes a file flag mask in AL. This is useful
; for searching for directories.
;
-searchdir_iso.alloc_failure:
+alloc_failure:
xor ax,ax ; ZF <- 1
- jmp searchdir_iso.ret
+ ret
searchdir:
xor al,al
searchdir_iso:
- push bx
- push cx
mov [ISOFlags],al
TRACER 'S'
call allocate_file ; Temporary file structure for directory
- jnz .alloc_failure
+ jnz alloc_failure
push es
push ds
pop es ; ES = DS
@@ -1270,7 +1268,8 @@ searchdir_iso:
.failure: xor eax,eax ; ZF = 1
mov [bx+file_sector],eax
- jmp .ret
+ pop es
+ ret
.success:
mov eax,[si+2] ; Location of extent
@@ -1285,10 +1284,7 @@ searchdir_iso:
shr edx,16
and bx,bx ; ZF = 0
mov si,bx
-.ret:
pop es
- pop cx
- pop bx
ret
.resume: ; We get here if we were only doing part of a lookup