summaryrefslogtreecommitdiffstats
path: root/libpthread/nptl/sysdeps/mips/sysdep.h
diff options
context:
space:
mode:
author"Steven J. Hill" <sjhill@realitydiluted.com>2006-08-21 04:26:01 +0000
committer"Steven J. Hill" <sjhill@realitydiluted.com>2006-08-21 04:26:01 +0000
commit4bdddc9cbfda2acc3da87f7565baca9307ab92f7 (patch)
treeddbbc7e72d72bf78d80f000163011d0c36a07aea /libpthread/nptl/sysdeps/mips/sysdep.h
parentc1a6053c890d37c25fce66ffc65a4ede77093ee0 (diff)
downloaduClibc-alpine-4bdddc9cbfda2acc3da87f7565baca9307ab92f7.tar.bz2
uClibc-alpine-4bdddc9cbfda2acc3da87f7565baca9307ab92f7.tar.xz
Finally check in all the changes I made for NPTL library proper.
Diffstat (limited to 'libpthread/nptl/sysdeps/mips/sysdep.h')
-rw-r--r--libpthread/nptl/sysdeps/mips/sysdep.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/libpthread/nptl/sysdeps/mips/sysdep.h b/libpthread/nptl/sysdeps/mips/sysdep.h
index 9483d8b39..69cecae70 100644
--- a/libpthread/nptl/sysdeps/mips/sysdep.h
+++ b/libpthread/nptl/sysdeps/mips/sysdep.h
@@ -76,4 +76,35 @@
# define L(label) .L ## label
#endif
+/* Note that while it's better structurally, going back to call __syscall_error
+ can make things confusing if you're debugging---it looks like it's jumping
+ backwards into the previous fn. */
+#ifdef __PIC__
+#define PSEUDO(name, syscall_name, args) \
+ .align 2; \
+ 99: la t9,__syscall_error; \
+ jr t9; \
+ ENTRY(name) \
+ .set noreorder; \
+ .cpload t9; \
+ li v0, SYS_ify(syscall_name); \
+ syscall; \
+ .set reorder; \
+ bne a3, zero, 99b; \
+L(syse1):
+#else
+#define PSEUDO(name, syscall_name, args) \
+ .set noreorder; \
+ .align 2; \
+ 99: j __syscall_error; \
+ nop; \
+ ENTRY(name) \
+ .set noreorder; \
+ li v0, SYS_ify(syscall_name); \
+ syscall; \
+ .set reorder; \
+ bne a3, zero, 99b; \
+L(syse1):
+#endif
+
#endif