[PATCH 7/8] ARC: sigaction: fold default sigrestorer into "C"

Vineet Gupta <[email protected]>
Newsgroups gmane.comp.lib.uclibc.general
Message-ID <[email protected]>
Signed-off-by: Vineet Gupta <[email protected]>
---
 libc/sysdeps/linux/arc/Makefile.arch |  3 +--
 libc/sysdeps/linux/arc/sigaction.c   | 14 +++++++-------
 libc/sysdeps/linux/arc/sigrestorer.S | 21 ---------------------
 3 files changed, 8 insertions(+), 30 deletions(-)
 delete mode 100644 libc/sysdeps/linux/arc/sigrestorer.S

diff --git a/libc/sysdeps/linux/arc/Makefile.arch b/libc/sysdeps/linux/arc/Makefile.arch
index 656ea3518c18..1a52fc9bf433 100644
--- a/libc/sysdeps/linux/arc/Makefile.arch
+++ b/libc/sysdeps/linux/arc/Makefile.arch
@@ -7,5 +7,4 @@
 
 CSRC-y := syscall.c sigaction.c __syscall_error.c cacheflush.c
 
-SSRC-y := sigrestorer.S __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
-	vfork.S clone.S
+SSRC-y := __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S vfork.S clone.S
diff --git a/libc/sysdeps/linux/arc/sigaction.c b/libc/sysdeps/linux/arc/sigaction.c
index a4204432489a..4a4c9e2d0821 100644
--- a/libc/sysdeps/linux/arc/sigaction.c
+++ b/libc/sysdeps/linux/arc/sigaction.c
@@ -10,8 +10,13 @@
 #include <sys/syscall.h>
 #include <bits/kernel_sigaction.h>
 
-extern void __default_rt_sa_restorer(void);
-//libc_hidden_proto(__default_rt_sa_restorer);
+/*
+ * Default sigretrun stub if user doesn't specify SA_RESTORER
+ */
+static void __default_rt_sa_restorer(void)
+{
+	INTERNAL_SYSCALL_NCS(__NR_rt_sigreturn, , 0);
+}
 
 #define SA_RESTORER	0x04000000
 
@@ -25,11 +30,6 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
 	/*
 	 * SA_RESTORER is only relevant for act != NULL case
 	 * (!act means caller only wants to know @oact)
-	 *
-	 * For the normal/default cases (user not providing SA_RESTORER) use
-	 * a real sigreturn stub to avoid kernel synthesizing one on user stack
-	 * at runtime, which needs PTE permissions update (hence TLB entry
-	 * update) and costly cache line flushes for code modification
 	 */
 	if (act && !(act->sa_flags & SA_RESTORER)) {
 		kact.sa_restorer = __default_rt_sa_restorer;
diff --git a/libc/sysdeps/linux/arc/sigrestorer.S b/libc/sysdeps/linux/arc/sigrestorer.S
deleted file mode 100644
index 24531d89d054..000000000000
--- a/libc/sysdeps/linux/arc/sigrestorer.S
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
- *
- * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
- */
-
-#include <sysdep.h>
-#include <sys/syscall.h>
-
-/*
- * Provide a real sigreturn stub to avoid kernel synthesizing one
- * on user stack at runtime, which needs PTE permissions update
- * (hence TLB entry update) and costly cache line flushes for
- * code modification
- */
-
-ENTRY(__default_rt_sa_restorer)
-    mov r8, __NR_rt_sigreturn
-    ARC_TRAP_INSN
-END(__default_rt_sa_restorer)
-libc_hidden_def(__default_rt_sa_restorer)
-- 
1.9.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.