Guidance please: static or extern __inline__
Mike Stump
mrs@apple.com
Fri Jul 29 21:18:00 GMT 2005
On Friday, July 29, 2005, at 01:23 PM, Kean Johnston wrote:
>> [ cough ]
>> #if _FILE_OFFSET_BITS - 0 == 32
>> int open (const char *, int, int) asm ("open32");
>> #elif _FILE_OFFSET_BITS - 0 == 64
>> int open (const char *, int, int) asm ("open64");
>> #else
>> int open (const char *, int, int) asm ("__open");
>> #endif
>
> That's a pretty neat trick.
I know, we've filed a patent for it, wait for it, no, wait, ok, just
kidding... :-)
> I dont suppose I could trouble you to give me the voodoo required for
> inserting an extra pushl before the call could I?
Not sure exactly what you want, but with the below I think it will be
obvious how to do it.
void ioctl(int, unsigned long, char *) __attribute__((always_inline));
asm inline void ioctl(int fd, unsigned long m, char *buf) {
movl #42, 12($esp)
movl fd, 8($esp)
movl m, 4($esp)
movl buf, ($esp)
call _xioctl
xorl $eax, $eax
leave
ret
}
main() {
ioctl (0, 0, "hi");
}
though, you may need nakky and to spell the inline slightly
differently, the above uses CW style assembly.
More information about the Gcc
mailing list