This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Guidance please: static or extern __inline__
- From: Mike Stump <mrs at apple dot com>
- To: jkj at sco dot com
- Cc: gcc at gcc dot gnu dot org
- Date: Fri, 29 Jul 2005 14:18:06 -0700
- Subject: Re: Guidance please: static or extern __inline__
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.