At Wed, 23 Aug 2006 13:43:06 +0100, Andrew Haley wrote: > > Simon Kagstrom writes: > > and it didn't work because of the > > > > :"r?i" (__builtin_constant_p(a) ? 0xfffd : 0xfffe), "r?i" (a), \ > > > > part. > > But that __builtin_constant_p problem was because you put the call to > it in a function, not because of any other issues. Why not put the > *whole lot* in a macro? There's no need to break it into separate > functions. Why was the function you had before not something like > > #define puts(string) > ({ \ > register unsigned long __v0 asm ("$2"); \ > [...] > > Surely that would work. Yes, it works, I've implemented it this way now. I would have preferred functions because of type checking etc (and because it makes the syscall definitions more readable, I think), but it seems this is the only way to do it properly. Thanks for helping me out with this! I've learned a lot in the process :-) // Simon