aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/powerpc/powerpc32/sysdep.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc/powerpc32/sysdep.h')
-rw-r--r--sysdeps/powerpc/powerpc32/sysdep.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/sysdeps/powerpc/powerpc32/sysdep.h b/sysdeps/powerpc/powerpc32/sysdep.h
index 829eec2..a3fc1f0 100644
--- a/sysdeps/powerpc/powerpc32/sysdep.h
+++ b/sysdeps/powerpc/powerpc32/sysdep.h
@@ -92,7 +92,10 @@ GOT_LABEL: ; \
#define DO_CALL(syscall) \
li 0,syscall; \
- sc
+ DO_CALL_SC
+
+#define DO_CALL_SC \
+ sc
#undef JUMPTARGET
#ifdef PIC
@@ -106,14 +109,20 @@ GOT_LABEL: ; \
# define HIDDEN_JUMPTARGET(name) __GI_##name##@local
#endif
+#define TAIL_CALL_SYSCALL_ERROR \
+ b __syscall_error@local
+
#define PSEUDO(name, syscall_name, args) \
.section ".text"; \
ENTRY (name) \
DO_CALL (SYS_ify (syscall_name));
+#define RET_SC \
+ bnslr+;
+
#define PSEUDO_RET \
- bnslr+; \
- b __syscall_error@local
+ RET_SC; \
+ TAIL_CALL_SYSCALL_ERROR
#define ret PSEUDO_RET
#undef PSEUDO_END