[parisc-linux] INLINE_SYSCALL/gcc-bug? (Was Re: pipes)

Jason Eckhardt jle@cygnus.com
Wed, 7 Mar 2001 10:10:07 -0800 (PST)


Hi,

On Wed, 7 Mar 2001, Paul Bame wrote:

> 
> Help!  Probable gcc bug!
> 
>     #define INLINE_SYSCALL(name, nr, args...)       ({              \
> 	    unsigned long __sys_res;                                \
> 	    {                                                       \
> 		    register unsigned long __res asm("r28");        \
> 		    LOAD_ARGS_##nr(args)                            \
> 		    asm volatile(                                   \
> 			    "ble  0x100(%%sr2, %%r0)\n\t"   \
> 			    " ldi %1, %%r20"                        \
> 			    : "=r" (__res)                          \
> 			    : "i" (SYS_ify(name)) ASM_ARGS_##nr     \
> 			     );                                     \
> 		    __sys_res = __res;                              \
> 	    }                                                       \
> 	    if (__sys_res >= (unsigned long)-4095) {                \
> 		    __set_errno(-__sys_res);                        \
> 		    __sys_res == (unsigned long)-1;                 \

                             ^^^^
     Perhaps this is why no code is generated to set __sys_res to -1?
     Or am I out of my mind?

     
> 	    }                                                       \
> 	    __sys_res;                                              \
>     })
>