summaryrefslogtreecommitdiff
path: root/mit-pthreads/machdep/syscall-template-i386-netbsd-1.3.S
diff options
context:
space:
mode:
Diffstat (limited to 'mit-pthreads/machdep/syscall-template-i386-netbsd-1.3.S')
-rw-r--r--mit-pthreads/machdep/syscall-template-i386-netbsd-1.3.S56
1 files changed, 56 insertions, 0 deletions
diff --git a/mit-pthreads/machdep/syscall-template-i386-netbsd-1.3.S b/mit-pthreads/machdep/syscall-template-i386-netbsd-1.3.S
new file mode 100644
index 00000000000..d6dffc35132
--- /dev/null
+++ b/mit-pthreads/machdep/syscall-template-i386-netbsd-1.3.S
@@ -0,0 +1,56 @@
+#include <machine/asm.h>
+#include <sys/syscall.h>
+
+#ifdef SYS___sigsuspend14
+#define SYS_sigsuspend SYS___sigsuspend14
+#endif
+#ifdef SYS___sigprocmask14
+#define SYS_sigprocmask SYS___sigprocmask14
+#endif
+
+#ifdef __STDC__
+
+#define SYSCALL(x) \
+ .globl _C_LABEL(machdep_sys_##x); \
+ \
+_C_LABEL(machdep_sys_##x):; \
+ \
+ movl $(SYS_##x), %eax; \
+ int $0x80; \
+ jb 1b; \
+ ret;
+
+#else
+
+#define _SYSCALL(x) \
+ .globl _C_LABEL(machdep_sys_/**/x); \
+ \
+_C_LABEL(machdep_sys_/**/x):; \
+ \
+ movl $(SYS_/**/x), %eax; \
+ int $0x80; \
+ jb 1b; \
+ ret;
+
+#endif
+
+
+/*
+ * Initial asm stuff for all functions.
+ */
+ .text
+ .align 2
+
+
+/* ==========================================================================
+ * error code for all syscalls. The error value is returned as the negative
+ * of the errno value.
+ */
+
+1:
+ neg %eax
+ ret
+
+#define XSYSCALL(NAME) SYSCALL(NAME)
+
+XSYSCALL(SYSCALL_NAME)