aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/powerpc/sysdep.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/powerpc/sysdep.h')
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sysdep.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/sysdeps/unix/sysv/linux/powerpc/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/sysdep.h
index c08e3d8060..d6d33bf7af 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sysdep.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sysdep.h
@@ -41,13 +41,21 @@
li 0,syscall; \
sc
+#ifdef PIC
+#define PSEUDO(name, syscall_name, args) \
+ .text; \
+ ENTRY (name) \
+ DO_CALL (SYS_ify (syscall_name)); \
+ bnslr; \
+ b __syscall_error@plt
+#else
#define PSEUDO(name, syscall_name, args) \
.text; \
ENTRY (name) \
DO_CALL (SYS_ify (syscall_name)); \
- bnslr; \
+ bnslr; \
b __syscall_error
-
+#endif
#define ret /* Nothing (should be 'blr', but never reached). */
#endif /* ASSEMBLER */