summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/sparc/unified.S
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/dietlibc/sparc/unified.S')
-rw-r--r--mdk-stage1/dietlibc/sparc/unified.S28
1 files changed, 28 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/sparc/unified.S b/mdk-stage1/dietlibc/sparc/unified.S
new file mode 100644
index 000000000..53b1612a9
--- /dev/null
+++ b/mdk-stage1/dietlibc/sparc/unified.S
@@ -0,0 +1,28 @@
+#include <dietfeatures.h>
+
+.text
+.global __unified_syscall
+__unified_syscall:
+ ta 0x10
+
+ bcc 1f
+ save %sp, -104, %sp
+
+ neg %i0, %i0
+1:
+ add %i0, 0xff, %l2
+ cmp %l2, 0xfe
+ bgu 2f
+ neg %i0, %l3
+#ifdef WANT_THREAD_SAVE
+ call __errno_location
+ nop
+#else
+ sethi %hi(errno), %o0
+ or %o0, %lo(errno), %o0
+#endif
+ st %l3, [ %o0 ]
+ mov -1, %o0
+2:
+ ret
+ restore