[PATCH v2 5/5] aarch64: Define __ASSUME_SYSCALL_NAMED_WORKS for Linux
Xi Ruoyao
xry111@xry111.site
Mon Mar 27 13:32:51 GMT 2023
On Mon, 2023-03-27 at 10:06 -0300, Adhemerval Zanella Netto wrote:
>
>
> On 25/03/23 11:08, Xi Ruoyao wrote:
> > AAPCS treats the variable arguments same as named ones, and when
> > each
> > argument is an integer not wider than 8 bytes, the ith argument is
> > in
> > register xi (0 <= i < 8), or the stack slot at (sp + 8 * (i - 8))
> > (i >= 8) no matter how many arguments are passed. So we can define
> > __ASSUME_SYSCALL_NAMED_WORKS to avoid unnecessary stack stores in
> > the
> > syscall wrappers caused by va_start.
>
> This triggered a build failure on i686 patchwork buildbot [1].
Ouch, misused #if as #ifdef.
Will fix and submit v3.
>
> [1] https://www.delorie.com/trybots/32bit/18431/
>
> > ---
> > sysdeps/unix/sysv/linux/aarch64/kernel-features.h | 9 +++++++++
> > 1 file changed, 9 insertions(+)
> >
> > diff --git a/sysdeps/unix/sysv/linux/aarch64/kernel-features.h
> > b/sysdeps/unix/sysv/linux/aarch64/kernel-features.h
> > index 3546f6de96..c39ff39da2 100644
> > --- a/sysdeps/unix/sysv/linux/aarch64/kernel-features.h
> > +++ b/sysdeps/unix/sysv/linux/aarch64/kernel-features.h
> > @@ -21,3 +21,12 @@
> >
> > #undef __ASSUME_CLONE_DEFAULT
> > #define __ASSUME_CLONE_BACKWARDS 1
> > +
> > +/* Define this if the calling convention for passing x named
> > arguments and y
> > + variable arguments is same as passing (x + y) named arguments,
> > while each
> > + argument is either an integer of which the width is less than or
> > equal to
> > + "long", or a pointer; and an argument can be fetched from the
> > same register
> > + or the same offset from the stack pointer no matter how many
> > (maybe zero)
> > + arguments are passed after it. It avoids useless stack stores
> > caused by
> > + usage of va_start. */
> > +#define __ASSUME_SYSCALL_NAMED_WORKS 1
--
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University
More information about the Libc-alpha
mailing list