Message ID | Y99nfeBrTubZL9oi@jupiter.tail36e24.ts.net |
---|---|
State | New |
Headers | show |
Series | Move RETURN_TO to x86/sysdep.h and implement x86_64 version. | expand |
Please cc libc-alpha when the patch is proposed for commit, so they can get a look even after I commit it. Applied, thanks! Flavio Cruz, le dim. 05 févr. 2023 03:23:25 -0500, a ecrit: > --- > sysdeps/mach/i386/sysdep.h | 34 ---------------------------------- > sysdeps/mach/x86/sysdep.h | 17 +++++++++++++++++ > 2 files changed, 17 insertions(+), 34 deletions(-) > delete mode 100644 sysdeps/mach/i386/sysdep.h > > diff --git a/sysdeps/mach/i386/sysdep.h b/sysdeps/mach/i386/sysdep.h > deleted file mode 100644 > index 33bd5ee402..0000000000 > --- a/sysdeps/mach/i386/sysdep.h > +++ /dev/null > @@ -1,34 +0,0 @@ > -/* Copyright (C) 1991-2023 Free Software Foundation, Inc. > - > - This file is part of the GNU C Library. > - > - The GNU C Library is free software; you can redistribute it and/or > - modify it under the terms of the GNU Lesser General Public > - License as published by the Free Software Foundation; either > - version 2.1 of the License, or (at your option) any later version. > - > - The GNU C Library is distributed in the hope that it will be useful, > - but WITHOUT ANY WARRANTY; without even the implied warranty of > - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > - Lesser General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - License along with the GNU C Library; if not, see > - <https://www.gnu.org/licenses/>. */ > - > -#ifndef _MACH_I386_SYSDEP_H > -#define _MACH_I386_SYSDEP_H 1 > - > -#include <sysdeps/mach/x86/sysdep.h> > - > -#define RETURN_TO(sp, pc, retval) \ > - asm volatile ("movl %0, %%esp; jmp %*%1 # %2" \ > - : : "g" (sp), "r" (pc), "a" (retval)) > - > -/* This should be rearranged, but at the moment this file provides > - the most useful definitions for assembler syntax details. */ > -#undef ENTRY > -#undef ALIGN > -#include <sysdeps/unix/i386/sysdep.h> > - > -#endif /* mach/i386/sysdep.h */ > diff --git a/sysdeps/mach/x86/sysdep.h b/sysdeps/mach/x86/sysdep.h > index 90f295b27d..7ad785234f 100644 > --- a/sysdeps/mach/x86/sysdep.h > +++ b/sysdeps/mach/x86/sysdep.h > @@ -44,4 +44,21 @@ > /* Get the machine-independent Mach definitions. */ > #include <sysdeps/mach/sysdep.h> > > +#undef ENTRY > +#undef ALIGN > + > +#ifdef __x86_64__ > +#define RETURN_TO(sp, pc, retval) \ > + asm volatile ("movq %0, %%rsp; jmp %*%1 # %2" \ > + : : "g" (sp), "r" (pc), "a" (retval)) > +/* This should be rearranged, but at the moment this file provides > + the most useful definitions for assembler syntax details. */ > +#include <sysdeps/unix/x86_64/sysdep.h> > +#else > +#define RETURN_TO(sp, pc, retval) \ > + asm volatile ("movl %0, %%esp; jmp %*%1 # %2" \ > + : : "g" (sp), "r" (pc), "a" (retval)) > +#include <sysdeps/unix/i386/sysdep.h> > +#endif > + > #endif /* mach/x86/sysdep.h */ > -- > 2.39.1 > >
diff --git a/sysdeps/mach/i386/sysdep.h b/sysdeps/mach/i386/sysdep.h deleted file mode 100644 index 33bd5ee402..0000000000 --- a/sysdeps/mach/i386/sysdep.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 1991-2023 Free Software Foundation, Inc. - - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <https://www.gnu.org/licenses/>. */ - -#ifndef _MACH_I386_SYSDEP_H -#define _MACH_I386_SYSDEP_H 1 - -#include <sysdeps/mach/x86/sysdep.h> - -#define RETURN_TO(sp, pc, retval) \ - asm volatile ("movl %0, %%esp; jmp %*%1 # %2" \ - : : "g" (sp), "r" (pc), "a" (retval)) - -/* This should be rearranged, but at the moment this file provides - the most useful definitions for assembler syntax details. */ -#undef ENTRY -#undef ALIGN -#include <sysdeps/unix/i386/sysdep.h> - -#endif /* mach/i386/sysdep.h */ diff --git a/sysdeps/mach/x86/sysdep.h b/sysdeps/mach/x86/sysdep.h index 90f295b27d..7ad785234f 100644 --- a/sysdeps/mach/x86/sysdep.h +++ b/sysdeps/mach/x86/sysdep.h @@ -44,4 +44,21 @@ /* Get the machine-independent Mach definitions. */ #include <sysdeps/mach/sysdep.h> +#undef ENTRY +#undef ALIGN + +#ifdef __x86_64__ +#define RETURN_TO(sp, pc, retval) \ + asm volatile ("movq %0, %%rsp; jmp %*%1 # %2" \ + : : "g" (sp), "r" (pc), "a" (retval)) +/* This should be rearranged, but at the moment this file provides + the most useful definitions for assembler syntax details. */ +#include <sysdeps/unix/x86_64/sysdep.h> +#else +#define RETURN_TO(sp, pc, retval) \ + asm volatile ("movl %0, %%esp; jmp %*%1 # %2" \ + : : "g" (sp), "r" (pc), "a" (retval)) +#include <sysdeps/unix/i386/sysdep.h> +#endif + #endif /* mach/x86/sysdep.h */