On 4/21/06, Russ Cox <[EMAIL PROTECTED]> wrote:
> > Actually, this code violates the ABI.  The stack needs to be aligned
> > on a 16byte address.
> >
> > http://developer.apple.com/documentation/DeveloperTools/Conceptual/LowLevelABI/index.html
> >
> > So the assembly block should be:
> >
> >        asm(
> >                "pushal\n"
> >                "movl 8(%ebp), %ebx\n"
> >                "movl 12(%ebp), %eax\n"
> >                "xchgl %esp, %eax\n"
> >               "subl $0xc, %esp\n"  //need to align the stack... can't just 
> > pushl
> >                "pushl %eax\n"
> >                "call *%ebx\n"
> >                "popl %esp\n"
> >                "popal\n"
> >        );
> >
> > Just don't compile with -Os because gcc freaking inlines runonstack.
> > Whom to throttle for that one?
>
> The real version doesn't use inline assembly, so it's not a problem.
> I just wanted a single file demonstrating the problem.
>
> After aligning the stack pointer properly, the x86 OS X code
> now in CVS does appear to work.
>
> Thanks very much for tracking this down.
>

Hey no problem... I want to use it on my new system :)  Thanks for
"making it go".

> Russ
>
>

Reply via email to