[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