aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos O'Donell <carlos@systemhalted.org>2012-10-29 23:04:43 -0400
committerCarlos O'Donell <carlos@systemhalted.org>2012-10-29 23:11:06 -0400
commit4ebdb0102714696914e9425bf2e4c40666ee9beb (patch)
treed8274b221b3f08ae4c13cb5a1ed85027a1e843b2
parentf0b8ce0c73a9871c3f90c575c0c8f8c1048371e3 (diff)
downloadglibc-4ebdb0102714696914e9425bf2e4c40666ee9beb.tar
glibc-4ebdb0102714696914e9425bf2e4c40666ee9beb.tar.gz
glibc-4ebdb0102714696914e9425bf2e4c40666ee9beb.tar.bz2
glibc-4ebdb0102714696914e9425bf2e4c40666ee9beb.zip
hppa: Optimize syscall sequence.
We remove an extraneous nop from the syscall sequence. No DO_CALL* may end in an instruction with a delay slot.
-rw-r--r--ports/ChangeLog.hppa6
-rw-r--r--ports/sysdeps/unix/sysv/linux/hppa/sysdep.h14
2 files changed, 10 insertions, 10 deletions
diff --git a/ports/ChangeLog.hppa b/ports/ChangeLog.hppa
index 62f41477ee..6d5d5a33c1 100644
--- a/ports/ChangeLog.hppa
+++ b/ports/ChangeLog.hppa
@@ -1,5 +1,11 @@
2012-10-29 Carlos O'Donell <carlos@systemhalted.org>
+ * sysdeps/unix/sysv/linux/hppa/sysdep.h: Don't include sys/syscall.h.
+ Document nop removal.
+ (PSEUDO): Remove nop.
+ (PSEUDO_NOERRNO): Likeise.
+ (PSEUDO_ERRVAL): Likewise.
+
* sysdeps/unix/sysv/linux/hppa/sysdep.h: Remove trailing whitespace.
2012-10-26 Andreas Jaeger <aj@suse.de>
diff --git a/ports/sysdeps/unix/sysv/linux/hppa/sysdep.h b/ports/sysdeps/unix/sysv/linux/hppa/sysdep.h
index 9ef8b50303..5c0db64b7e 100644
--- a/ports/sysdeps/unix/sysv/linux/hppa/sysdep.h
+++ b/ports/sysdeps/unix/sysv/linux/hppa/sysdep.h
@@ -20,7 +20,6 @@
#include <asm/unistd.h>
#include <sysdeps/generic/sysdep.h>
-#include <sys/syscall.h>
/* In order to get __set_errno() definition in INLINE_SYSCALL. */
#ifndef __ASSEMBLER__
@@ -168,9 +167,7 @@
which means
ENTRY(name)
DO_CALL(...)
- nop
- bv 0(2)
- nop
+ bv,n 0(2)
*/
#define PSEUDO(name, syscall_name, args) \
@@ -178,8 +175,7 @@
/* If necc. load args from stack */ ASM_LINE_SEP \
DOARGS_##args ASM_LINE_SEP \
DO_CALL (syscall_name, args) ASM_LINE_SEP \
- UNDOARGS_##args ASM_LINE_SEP \
- nop ASM_LINE_SEP
+ UNDOARGS_##args ASM_LINE_SEP
#define ret \
/* Return value set by ERRNO code */ ASM_LINE_SEP \
@@ -194,8 +190,7 @@
ENTRY_LEAF (name) ASM_LINE_SEP \
DOARGS_##args ASM_LINE_SEP \
DO_CALL_NOERRNO (syscall_name, args) ASM_LINE_SEP \
- UNDOARGS_##args ASM_LINE_SEP \
- nop ASM_LINE_SEP
+ UNDOARGS_##args ASM_LINE_SEP
#define ret_NOERRNO ret
@@ -209,8 +204,7 @@
ENTRY_LEAF (name) ASM_LINE_SEP \
DOARGS_##args ASM_LINE_SEP \
DO_CALL_ERRVAL (syscall_name, args) ASM_LINE_SEP \
- UNDOARGS_##args ASM_LINE_SEP \
- nop ASM_LINE_SEP
+ UNDOARGS_##args ASM_LINE_SEP
#define ret_ERRVAL ret