[syslinux] [syslinux:pathbased] comboot: fix comapi_open
Sebastian Herbszt
herbszt at gmx.de
Fri May 14 11:07:39 PDT 2010
Geert Stappers wrote:
> Op 20100514 om 10:03 schreef syslinux-bot for Sebastian Herbszt:
>> Gitweb: http://syslinux.zytor.com/commit/7d7b2bc2cdb8d99eee9ef41c21612a60728a7713
>>
>> Fix breakage introduced by commit e375515ddc712f1f69ee21337db2a3267caa5d49
>> (Add 32-bit versions of open file/close file).
>>
>> --- a/core/comboot.inc
>> +++ b/core/comboot.inc
>> @@ -517,7 +517,12 @@ comapi_textmode:
>> ; INT 22h AX=0006h Open file
>> ;
>> comapi_open:
>> + mov es,P_ES
>> + mov si,P_SI
>> pm_call pm_open_file
>> + mov P_EAX,eax
>> + mov P_CX,cx
>> + mov P_SI,si
>> ret
>>
>> ;
>>
>
> That looks like ( ( } } )
>
>
>
> Stappers
> expecting something like
>> ; INT 22h AX=0006h Open file
>> ;
>> comapi_open:
>> + mov es,P_ES
>> + mov si,P_SI
> * + mov cx,P_CX
> * + mov eax,P_EAX
>> pm_call pm_open_file
>> + mov P_EAX,eax
>> + mov P_CX,cx
>> + mov P_SI,si
> * + mov P_ES,es
>> ret
>>
>> ;
>From doc/comboot.txt
AX=0006h [2.08] Open file
Input: AX 0006h
ES:SI null-terminated filename
Output: SI file handle
EAX length of file in bytes, or -1
CX file block size
My patch only cares about the output registers (EAX, CX and SI) and only ES and SI
are used inside pm_open_file(). So there is no need to pass (correct) EAX and CX
register values to pm_open_file() nor restore ES; P_ES should still contain the correct
input value on exit.
Sebastian
More information about the Syslinux
mailing list