This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 08/15] nios2: Use Linux kABI for syscall return
- From: Vineet Gupta <Vineet dot Gupta1 at synopsys dot com>
- To: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>, "libc-alpha at sourceware dot org" <libc-alpha at sourceware dot org>
- Cc: arcml <linux-snps-arc at lists dot infradead dot org>
- Date: Wed, 19 Feb 2020 21:40:25 +0000
- Subject: Re: [PATCH 08/15] nios2: Use Linux kABI for syscall return
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=synopsys.com; dmarc=pass action=none header.from=synopsys.com; dkim=pass header.d=synopsys.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lt/1XZ3wwu4hG/VVwHQgO9UUyyFHYFydWOkFHpUJd8s=; b=IVp4hZU77jZNi5m8eOevzXmue08znNNHg6l4loTHU0cP1lcBEghQbdB/1qdQciVX9Y0jNKjrOD2Sh/qNOd6a23hVDPJFoMBTlcQB0KcQx5Ffai6Av6RF4p32y8KStGoLWFsnSUSR+cUbDrgZifIxoBTGZ9iRxu4+OLbW3lhwUhI9n4J2OYFnAR0U11mc26AXa8JkYuDDTzMtVVM2E8cL+fQnq7NBqXnUm+lpraQJykOf84TlBgCqEY8n6sRrJlTk6VRoDwsDaA/64tVY6q46Bz1QhY4PgqY9PtKtxT2bLHHH53LYn+BmlHtqDB/eaRvwYZAvyR7kA0gmQgBUtRMtLQ==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KyH+i5MrypfOiIx3RPKQW8lNKjU2RrJIqbXWnQfP0yyRzW5EvJVnMjd0pPM8Ty5HXmHMFXs9ucl6uxv/MXn4RytELCwI3M2wZrnHfFU4F1xLf5L/68yA67UXz6z6tzjIVgN2tsVi8yc3ufzbFLa1qCFXHLrrGch7/PAVrHB8h8ej1fLFj/513+SMi6dim2GA1GfomjrXqy/WUJu19t5qDVve8kG71cIdkspkptl9qj8qOaJA8hSV5Cx1boxWrJx6nGBH5Mc+gtkmEPD848FPmzFUfSXpR0aczYf3RiCtWeUReHEfF3UdNkBxIgXHz2caYwytTjdZSL0zgAqxOH49WQ==
- References: <20200210192038.23588-1-adhemerval.zanella@linaro.org> <20200210192038.23588-8-adhemerval.zanella@linaro.org>
On 2/10/20 11:20 AM, Adhemerval Zanella wrote:
> It changes the nios INTERNAL_SYSCALL_RAW macro to return a negative
> value instead of 'r2' register value on 'err' macro argument.
>
> The macro INTERNAL_SYSCALL_DECL is no longer required, and the
> INTERNAL_SYSCALL_ERROR_P follows the other Linux kABIS.
>
> Checked with a build against nios2-linux-gnu.
> ---
> sysdeps/unix/sysv/linux/nios2/sysdep.h | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/sysdeps/unix/sysv/linux/nios2/sysdep.h b/sysdeps/unix/sysv/linux/nios2/sysdep.h
> index b02730bd23..eab888df32 100644
> --- a/sysdeps/unix/sysv/linux/nios2/sysdep.h
> +++ b/sysdeps/unix/sysv/linux/nios2/sysdep.h
> @@ -157,13 +157,14 @@
> (int) result_var; })
>
> #undef INTERNAL_SYSCALL_DECL
> -#define INTERNAL_SYSCALL_DECL(err) unsigned int err __attribute__((unused))
> +#define INTERNAL_SYSCALL_DECL(err) do { } while (0)
>
> #undef INTERNAL_SYSCALL_ERROR_P
> -#define INTERNAL_SYSCALL_ERROR_P(val, err) ((void) (val), (unsigned int) (err))
> +#define INTERNAL_SYSCALL_ERROR_P(val, err) \
> + ((unsigned long) (val) >= (unsigned long) -4095)
>
> #undef INTERNAL_SYSCALL_ERRNO
> -#define INTERNAL_SYSCALL_ERRNO(val, err) ((void) (err), val)
> +#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val))
>
> #undef INTERNAL_SYSCALL_RAW
> #define INTERNAL_SYSCALL_RAW(name, err, nr, args...) \
> @@ -180,8 +181,7 @@
> : "+r" (_r2), "=r" (_err) \
> : ASM_ARGS_##nr \
> : __SYSCALL_CLOBBERS); \
> - _sys_result = _r2; \
> - err = _err; \
> + _sys_result = _err != 0 ? -_r2 : -_r2; \
Is there a typo here ? both cases seem to be -ve
> } \
> (int) _sys_result; })
>
>