summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/sparc/fork.S
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/dietlibc/sparc/fork.S')
-rw-r--r--mdk-stage1/dietlibc/sparc/fork.S19
1 files changed, 19 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/sparc/fork.S b/mdk-stage1/dietlibc/sparc/fork.S
new file mode 100644
index 000000000..150839971
--- /dev/null
+++ b/mdk-stage1/dietlibc/sparc/fork.S
@@ -0,0 +1,19 @@
+#include "syscalls.h"
+
+.text
+.global fork
+fork:
+ mov 2, %g1
+ ta 0x10
+ bcc,a 1f
+ nop
+
+ sethi %hi(errno), %o3
+ or %o3, %lo(errno), %o3
+ st %i0, [%o3]
+
+ retl
+ mov -1, %o0
+1: dec %o1
+ retl
+ and %o0, %o1, %o0