diff options
author | Carlos O'Donell <carlos@systemhalted.org> | 2012-10-29 23:04:43 -0400 |
---|---|---|
committer | Carlos O'Donell <carlos@systemhalted.org> | 2012-10-29 23:11:06 -0400 |
commit | 4ebdb0102714696914e9425bf2e4c40666ee9beb (patch) | |
tree | d8274b221b3f08ae4c13cb5a1ed85027a1e843b2 /ports | |
parent | f0b8ce0c73a9871c3f90c575c0c8f8c1048371e3 (diff) | |
download | glibc-4ebdb0102714696914e9425bf2e4c40666ee9beb.tar.gz glibc-4ebdb0102714696914e9425bf2e4c40666ee9beb.tar.xz 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.
Diffstat (limited to 'ports')
-rw-r--r-- | ports/ChangeLog.hppa | 6 | ||||
-rw-r--r-- | ports/sysdeps/unix/sysv/linux/hppa/sysdep.h | 14 |
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 |