PATCH: Re: Inefficient ia64 system call implementation in glibc

Andreas Schwab schwab@suse.de
Wed Sep 24 20:36:00 GMT 2003


"H. J. Lu" <hjl@lucon.org> writes:

> On Wed, Sep 24, 2003 at 10:36:21AM +0200, Andreas Schwab wrote:
>> "H. J. Lu" <hjl@lucon.org> writes:
>> 
>> > On Mon, Sep 22, 2003 at 04:21:23PM -0700, Richard Henderson wrote:
>> >> On Mon, Sep 22, 2003 at 12:39:18PM -0700, H. J. Lu wrote:
>> >> > Can I get char * from char [300]?
>> >> 
>> >> x+0 would work in this case; I'd guess it'd work for most of the
>> >> cases that syscalls need to handle.
>> >> 
>> >
>> > This patch works for me.
>> >
>> >
>> > H.J.
>> > ---
>> > 2003-09-22  H.J. Lu  <hongjiu.lu@intel.com>
>> >
>> > 	* sysdeps/unix/sysv/linux/ia64/sysdep.h (LOAD_ARGS_1): Use
>> > 	__typeof ((outX) + 0) instead of long.
>> 
>> Hopefully we don't have any occurences of LOAD_ARGS_n(...,0,..) where the
>> kernel expects long.
>> 
>
> I don't think it will be the problem. Compiler will do
>
> 	addl outN = constant, r0
>
> to pass a constant to the function, regardless what the type is. Am I
> correct?

It doesn't have to be a constant, it can be an arbitrary expression of the
wrong (narrower) type.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



More information about the Libc-alpha mailing list