[syslinux] com32: custom int3 handler

Jeff Kalikstein jeff at kalikstein.com
Fri Nov 19 12:14:21 PST 2004


I am having problems installing a custom int3 handler
from a com32 app.  Here is what I have tried:

void int3_handler()
{
        put_str("int3!!!");
        __asm__("iret");
}

void init_handlers()
{
        struct {
                unsigned long limit     : 16;
                unsigned long base      : 32;
        } __attribute__((packed)) idtr;

        __asm__("sidt (%0)" :: "r"(&idtr));

        unsigned long *idt = (void*)idtr.base;
        idt[3] = int3_handler;

        put_str("about to try int3");
        anykey();

        __asm__("sti");
        __asm__("int3");
        put_str("DONE!");
        anykey();
}

When I execute the init_handlers function, I see
"DONE!", but not "int3!!!".  put_str() and anykey()
functions do as you expect, and put_str does not call
any interrupts (it writes directly to CGA memory).




More information about the Syslinux mailing list