about summary refs log tree commit diff
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 */