[syslinux] INT22h/000Dh
Piotr Romaniuk
piotr.romaniuk at elesoftrom.com.pl
Wed Sep 5 11:59:51 PDT 2012
Hi Geert,
Thank you for the response. I added further information inlined in the text.
Please note that this is a test code to ensure that something is not
working (because of malfunction of syslinux or
incorrect setup of arguments). I tried to isolate the cause, simplifying
the test as much as possible.
Previously I tried to start other code that prints something on the
screen and is working in real mode.
W dniu 2012-09-05 18:57, Geert Stappers pisze:
> On Wed, Sep 05, 2012 at 10:43:44AM +0200, Piotr Romaniuk wrote:
>
>> On 09/04/2012 03:12 PM, Sebastian Herbszt wrote:
>>
>>> Piotr Romaniuk wrote:
>>>
>>>> Why this function is disabled?
>>>>
>>> It was likely an oversight in commit
>>> 1656aefeb6b7195db38d25065137c4f37655f33a [1]:
>>>
>>> COMBOOT interface to the new shuffler; resurrect comapi_chainboot as
>>> that functionality is still potentially relevant.
>>>
>>> [1] http://git.kernel.org/?p=boot/syslinux/syslinux.git;a=commit;h=1656aefeb6b7195db38d25065137c4f37655f33a
>>>
>>>
>> I added proper entry in vector table (i.e. comapi_chainboot), but
>> after I call int22h/000Dh it hangs and does not start my code. Am I
>> doing something wrong in setup of this interrupt arguments?
>>
>> com32sys_t input_regs, output_regs;
>> input_regs.eax.l=0xd;
>> input_regs.edx.l=0x0;
>> input_regs.edi.l=OFFS(buffer);
>> input_regs.ecx.l=512;
>> input_regs.ebx.l=0x80;
>> input_regs.esi.l=0x0;
>> input_regs.ds=0;
>> input_regs.es=0;
>>
>> __com32.cs_intcall(0x22,&input_regs,&output_regs);
>>
>> The buffer contained simple code, just to signal if it is executed on GPIO:
>> buffer:
>> cli
>>
> Why this "clear interrupt"?
>
>
Just to be sure, that only this code is executed.
>
>> mov $GPIO_PORT, dx
>> mov $GPIO_VALUE, al
>> out al, (dx)
>>
> Those are byte wide actions.
>
The port is byte wide.
> What else is connected to the General Purpose Input/Output pins?
>
>
Only GPIOs.
> What was the previous value of the GPIO register?
>
There was zero.
> In other words: How is ensured that something new is written to "output"?
>
It is not written, because code is not executed,
or I did not observed "1" (GPIO_VALUE contains ones) on selected pin,
hence I concluded that code had been not executed.
I tested the state of the pin by voltage meter.
>> L: jmp L
>>
> That matches 'it hangs'
>
It is done on purpose, I did not want to execute anything else, just to
check if it had been run or not.
>
>> Regards
>> Piotr Romaniuk
>>
>> PS
>> I run this on Atom E640.
>>
>>
> And most likely there are more factors that effect "is my code executed?"
>
> My advice is to go to something that works and the make small (very small) steps
> to what you want. Keep in mind that if it is easy, every could do it.
>
> And a plea: allow people to read in the discussion order.
> So please, reply below the previous text.
>
>
> Groeten
> Geert Stappers
>
Regards
Piotr Romaniuk
More information about the Syslinux
mailing list