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.
This commit is contained in:
Carlos O'Donell 2012-10-29 23:04:43 -04:00
parent f0b8ce0c73
commit 4ebdb01027
2 changed files with 10 additions and 10 deletions

View File

@ -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>

View File

@ -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