diff mbox series

[v2,5/8] mips: Consolidate INTERNAL_VSYSCALL_CALL

Message ID 20190905205620.4646-5-adhemerval.zanella@linaro.org
State New
Headers show
Series [v2,1/8] Remove PREPARE_VERSION and PREPARE_VERSION_KNOW | expand

Commit Message

Adhemerval Zanella Sept. 5, 2019, 8:56 p.m. UTC
This patch consolidates the mips, mips64, and mips64-n32
INTERNAL_VSYSCALL_CALL on a single implementation.

No semantic changes. I checked against a build for mips-linux-gnu,
mips64-linux-gnu, and mips64-n32-linux-gnu.

	* sysdeps/unix/sysv/linux/mips/mips32/sysdep.h
	(INTERNAL_VSYSCALL_CALL): Remove.
	* sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h
	(INTERNAL_VSYSCALL_CALL): Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h
	(INTERNAL_VSYSCALL_CALL): Likewise.
	* sysdeps/unix/sysv/linux/mips/sysdep.h (INTERNAL_VSYSCALL_CALL):
	New macro.
---
 sysdeps/unix/sysv/linux/mips/mips32/sysdep.h     | 12 ------------
 sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h | 12 ------------
 sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h | 12 ------------
 sysdeps/unix/sysv/linux/mips/sysdep.h            | 16 ++++++++++++++++
 4 files changed, 16 insertions(+), 36 deletions(-)

-- 
2.17.1

Comments

Adhemerval Zanella Sept. 17, 2019, 2:24 p.m. UTC | #1
I will commit this shortly if no one opposes, after I tested on the affected
architectures.

On 05/09/2019 17:56, Adhemerval Zanella wrote:
> This patch consolidates the mips, mips64, and mips64-n32

> INTERNAL_VSYSCALL_CALL on a single implementation.

> 

> No semantic changes. I checked against a build for mips-linux-gnu,

> mips64-linux-gnu, and mips64-n32-linux-gnu.

> 

> 	* sysdeps/unix/sysv/linux/mips/mips32/sysdep.h

> 	(INTERNAL_VSYSCALL_CALL): Remove.

> 	* sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h

> 	(INTERNAL_VSYSCALL_CALL): Likewise.

> 	* sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h

> 	(INTERNAL_VSYSCALL_CALL): Likewise.

> 	* sysdeps/unix/sysv/linux/mips/sysdep.h (INTERNAL_VSYSCALL_CALL):

> 	New macro.

> ---

>  sysdeps/unix/sysv/linux/mips/mips32/sysdep.h     | 12 ------------

>  sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h | 12 ------------

>  sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h | 12 ------------

>  sysdeps/unix/sysv/linux/mips/sysdep.h            | 16 ++++++++++++++++

>  4 files changed, 16 insertions(+), 36 deletions(-)

> 

> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h

> index ebe397b701..bfcb916f15 100644

> --- a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h

> +++ b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h

> @@ -349,18 +349,6 @@ libc_hidden_proto (__mips_syscall7, nomips16)

>  #define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", \

>  	"$14", "$15", "$24", "$25", "hi", "lo", "memory"

>  

> -/* Standard MIPS syscalls have an error flag, and return a positive errno

> -   when the error flag is set. Emulate this behaviour for vsyscalls so that

> -   the INTERNAL_SYSCALL_{ERROR_P,ERRNO} macros work correctly.  */

> -#define INTERNAL_VSYSCALL_CALL(funcptr, err, nr, args...)		\

> -  ({									\

> -    long _ret = funcptr (args);						\

> -    err = ((unsigned long) (_ret) >= (unsigned long) -4095L);		\

> -    if (err)								\

> -      _ret = -_ret;							\

> -    _ret;								\

> -  })

> -

>  #endif /* __ASSEMBLER__ */

>  

>  /* Pointer mangling is not yet supported for MIPS.  */

> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h

> index bb49429c30..49e94a1706 100644

> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h

> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h

> @@ -297,18 +297,6 @@

>  #define __SYSCALL_CLOBBERS "$1", "$3", "$10", "$11", "$12", "$13", \

>  	"$14", "$15", "$24", "$25", "hi", "lo", "memory"

>  

> -/* Standard MIPS syscalls have an error flag, and return a positive errno

> -   when the error flag is set. Emulate this behaviour for vsyscalls so that

> -   the INTERNAL_SYSCALL_{ERROR_P,ERRNO} macros work correctly.  */

> -#define INTERNAL_VSYSCALL_CALL(funcptr, err, nr, args...)		\

> -  ({									\

> -    long _ret = funcptr (args);						\

> -    err = ((unsigned long) (_ret) >= (unsigned long) -4095L);		\

> -    if (err)								\

> -      _ret = -_ret;							\

> -    _ret;								\

> -  })

> -

>  #endif /* __ASSEMBLER__ */

>  

>  /* Pointer mangling is not yet supported for MIPS.  */

> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h

> index 84a1ff186b..5911a62e5b 100644

> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h

> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h

> @@ -293,18 +293,6 @@

>  #define __SYSCALL_CLOBBERS "$1", "$3", "$10", "$11", "$12", "$13", \

>  	"$14", "$15", "$24", "$25", "hi", "lo", "memory"

>  

> -/* Standard MIPS syscalls have an error flag, and return a positive errno

> -   when the error flag is set. Emulate this behaviour for vsyscalls so that

> -   the INTERNAL_SYSCALL_{ERROR_P,ERRNO} macros work correctly.  */

> -#define INTERNAL_VSYSCALL_CALL(funcptr, err, nr, args...)		\

> -  ({									\

> -    long _ret = funcptr (args);						\

> -    err = ((unsigned long) (_ret) >= (unsigned long) -4095L);		\

> -    if (err)								\

> -      _ret = -_ret;							\

> -    _ret;								\

> -  })

> -

>  #endif /* __ASSEMBLER__ */

>  

>  /* Pointer mangling is not yet supported for MIPS.  */

> diff --git a/sysdeps/unix/sysv/linux/mips/sysdep.h b/sysdeps/unix/sysv/linux/mips/sysdep.h

> index 58a7244581..77b1f9c2fb 100644

> --- a/sysdeps/unix/sysv/linux/mips/sysdep.h

> +++ b/sysdeps/unix/sysv/linux/mips/sysdep.h

> @@ -22,3 +22,19 @@

>  /* List of system calls which are supported as vsyscalls.  */

>  #define HAVE_CLOCK_GETTIME_VSYSCALL     "__vdso_gettimeofday"

>  #define HAVE_GETTIMEOFDAY_VSYSCALL      "__vdso_clock_gettime"

> +

> +#ifndef __ASSEMBLER__

> +

> +/* Standard MIPS syscalls have an error flag, and return a positive errno

> +   when the error flag is set. Emulate this behaviour for vsyscalls so that

> +   the INTERNAL_SYSCALL_{ERROR_P,ERRNO} macros work correctly.  */

> +#define INTERNAL_VSYSCALL_CALL(funcptr, err, nr, args...)		\

> +  ({									\

> +    long _ret = funcptr (args);						\

> +    err = ((unsigned long) (_ret) >= (unsigned long) -4095L);		\

> +    if (err)								\

> +      _ret = -_ret;							\

> +    _ret;								\

> +  })

> +

> +#endif /* __ASSEMBLER__  */

>
diff mbox series

Patch

diff --git a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h
index ebe397b701..bfcb916f15 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h
+++ b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h
@@ -349,18 +349,6 @@  libc_hidden_proto (__mips_syscall7, nomips16)
 #define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", \
 	"$14", "$15", "$24", "$25", "hi", "lo", "memory"
 
-/* Standard MIPS syscalls have an error flag, and return a positive errno
-   when the error flag is set. Emulate this behaviour for vsyscalls so that
-   the INTERNAL_SYSCALL_{ERROR_P,ERRNO} macros work correctly.  */
-#define INTERNAL_VSYSCALL_CALL(funcptr, err, nr, args...)		\
-  ({									\
-    long _ret = funcptr (args);						\
-    err = ((unsigned long) (_ret) >= (unsigned long) -4095L);		\
-    if (err)								\
-      _ret = -_ret;							\
-    _ret;								\
-  })
-
 #endif /* __ASSEMBLER__ */
 
 /* Pointer mangling is not yet supported for MIPS.  */
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h
index bb49429c30..49e94a1706 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h
@@ -297,18 +297,6 @@ 
 #define __SYSCALL_CLOBBERS "$1", "$3", "$10", "$11", "$12", "$13", \
 	"$14", "$15", "$24", "$25", "hi", "lo", "memory"
 
-/* Standard MIPS syscalls have an error flag, and return a positive errno
-   when the error flag is set. Emulate this behaviour for vsyscalls so that
-   the INTERNAL_SYSCALL_{ERROR_P,ERRNO} macros work correctly.  */
-#define INTERNAL_VSYSCALL_CALL(funcptr, err, nr, args...)		\
-  ({									\
-    long _ret = funcptr (args);						\
-    err = ((unsigned long) (_ret) >= (unsigned long) -4095L);		\
-    if (err)								\
-      _ret = -_ret;							\
-    _ret;								\
-  })
-
 #endif /* __ASSEMBLER__ */
 
 /* Pointer mangling is not yet supported for MIPS.  */
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h
index 84a1ff186b..5911a62e5b 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h
@@ -293,18 +293,6 @@ 
 #define __SYSCALL_CLOBBERS "$1", "$3", "$10", "$11", "$12", "$13", \
 	"$14", "$15", "$24", "$25", "hi", "lo", "memory"
 
-/* Standard MIPS syscalls have an error flag, and return a positive errno
-   when the error flag is set. Emulate this behaviour for vsyscalls so that
-   the INTERNAL_SYSCALL_{ERROR_P,ERRNO} macros work correctly.  */
-#define INTERNAL_VSYSCALL_CALL(funcptr, err, nr, args...)		\
-  ({									\
-    long _ret = funcptr (args);						\
-    err = ((unsigned long) (_ret) >= (unsigned long) -4095L);		\
-    if (err)								\
-      _ret = -_ret;							\
-    _ret;								\
-  })
-
 #endif /* __ASSEMBLER__ */
 
 /* Pointer mangling is not yet supported for MIPS.  */
diff --git a/sysdeps/unix/sysv/linux/mips/sysdep.h b/sysdeps/unix/sysv/linux/mips/sysdep.h
index 58a7244581..77b1f9c2fb 100644
--- a/sysdeps/unix/sysv/linux/mips/sysdep.h
+++ b/sysdeps/unix/sysv/linux/mips/sysdep.h
@@ -22,3 +22,19 @@ 
 /* List of system calls which are supported as vsyscalls.  */
 #define HAVE_CLOCK_GETTIME_VSYSCALL     "__vdso_gettimeofday"
 #define HAVE_GETTIMEOFDAY_VSYSCALL      "__vdso_clock_gettime"
+
+#ifndef __ASSEMBLER__
+
+/* Standard MIPS syscalls have an error flag, and return a positive errno
+   when the error flag is set. Emulate this behaviour for vsyscalls so that
+   the INTERNAL_SYSCALL_{ERROR_P,ERRNO} macros work correctly.  */
+#define INTERNAL_VSYSCALL_CALL(funcptr, err, nr, args...)		\
+  ({									\
+    long _ret = funcptr (args);						\
+    err = ((unsigned long) (_ret) >= (unsigned long) -4095L);		\
+    if (err)								\
+      _ret = -_ret;							\
+    _ret;								\
+  })
+
+#endif /* __ASSEMBLER__  */