[prev in list] [next in list] [prev in thread] [next in thread] 

List:       uclibc
Subject:    [PATCH 7/8] ARC: sigaction: fold default sigrestorer into "C"
From:       Vineet Gupta <Vineet.Gupta1 () synopsys ! com>
Date:       2015-02-14 9:56:40
Message-ID: 1423907744-2394-8-git-send-email-vgupta () synopsys ! com
[Download RAW message or body]

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
---
 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

_______________________________________________
uClibc mailing list
uClibc@uclibc.org
http://lists.busybox.net/mailman/listinfo/uclibc
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic