summaryrefslogtreecommitdiff
path: root/mit-pthreads/machdep/syscall-romp-bsd.S
diff options
context:
space:
mode:
Diffstat (limited to 'mit-pthreads/machdep/syscall-romp-bsd.S')
-rw-r--r--mit-pthreads/machdep/syscall-romp-bsd.S327
1 files changed, 327 insertions, 0 deletions
diff --git a/mit-pthreads/machdep/syscall-romp-bsd.S b/mit-pthreads/machdep/syscall-romp-bsd.S
new file mode 100644
index 00000000000..233f0b9430b
--- /dev/null
+++ b/mit-pthreads/machdep/syscall-romp-bsd.S
@@ -0,0 +1,327 @@
+/* ==== syscall.S ============================================================
+ * Copyright (c) 1993 by John F. Carr, jfc@mit.edu
+ *
+ * 1.00 93/09/xx proven
+ * -Started coding this file.
+ */
+
+#ifndef lint
+static const char rcsid[] = "$Id$";
+#endif
+
+/* DO NOT USE COLONS IN THIS FILE, GCC CAN'T HANDLE THEM */
+/* #include <copyright.h> */
+
+ .globl .oVncs
+ .text
+ .align 2
+
+/* ==========================================================================
+ * machdep_sys_write()
+ */
+ .globl _machdep_sys_write
+ .globl _.machdep_sys_write
+
+ .text 2
+_machdep_sys_write:
+ .long _.machdep_sys_write
+
+ .text
+_.machdep_sys_write:
+ lcs r0,0(r3)
+ svc 4(r0)
+ bntbr r15
+ store r2,_errno,r5
+ brx r15
+ cal r2,-1(r0)
+
+
+/* ==========================================================================
+ * machdep_sys_read()
+ */
+ .globl _machdep_sys_read
+ .globl _.machdep_sys_read
+
+ .text 2
+_machdep_sys_read:
+ .long _.machdep_sys_read
+
+ .text
+_.machdep_sys_read:
+ lcs r0,0(r3)
+ svc 3(r0)
+ bntbr r15
+ store r2,_errno,r5
+ brx r15
+ cal r2,-1(r0)
+
+
+/* ==========================================================================
+ * machdep_sys_open()
+ */
+ .globl _machdep_sys_open
+ .globl _.machdep_sys_open
+
+ .text 2
+_machdep_sys_open:
+ .long _.machdep_sys_open
+
+ .text
+_.machdep_sys_open:
+ lcs r0,0(r2)
+ svc 5(r0)
+ bntbr r15
+ store r2,_errno,r5
+ brx r15
+ cal r2,-1(r0)
+
+
+/* ==========================================================================
+ * machdep_sys_bind()
+ */
+ .globl _machdep_sys_bind
+ .globl _.machdep_sys_bind
+
+ .text 2
+_machdep_sys_bind:
+ .long _.machdep_sys_bind
+
+ .text
+_.machdep_sys_bind:
+ ls r0,0(r3)
+ svc 104(r0)
+ bntbr r15
+ store r2,_errno,r5
+ brx r15
+ cal r2,-1(r0)
+
+
+/* ==========================================================================
+ * machdep_sys_socket()
+ */
+ .globl _machdep_sys_socket
+ .globl _.machdep_sys_socket
+
+ .text 2
+_machdep_sys_socket:
+ .long _.machdep_sys_socket
+
+ .text
+ .align 2
+_.machdep_sys_socket:
+ svc 97(r0)
+ bntbr r15
+ store r2,_errno,r5
+ brx r15
+ cal r2,-1(r0)
+
+
+/* ==========================================================================
+ * machdep_sys_close()
+ */
+ .globl _machdep_sys_close
+ .globl _.machdep_sys_close
+
+ .text 2
+_machdep_sys_close:
+ .long _.machdep_sys_close
+
+ .text
+ .align 2
+_.machdep_sys_close:
+ svc 6(r0)
+ bntbr r15
+ store r2,_errno,r5
+ brx r15
+ cal r2,-1(r0)
+
+
+/* ==========================================================================
+ * machdep_sys_connect()
+ */
+ .globl _machdep_sys_connect
+ .globl _.machdep_sys_connect
+
+ .text 2
+_machdep_sys_connect:
+ .long _.machdep_sys_connect
+
+ .text
+_.machdep_sys_connect:
+ lcs r0,0(r3)
+ svc 98(r0)
+ bntbr r15
+ store r2,_errno,r5
+ brx r15
+ cal r2,-1(r0)
+
+/* ==========================================================================
+ * machdep_sys_accept()
+ */
+ .globl _machdep_sys_accept
+ .globl _.machdep_sys_accept
+
+ .text 2
+_machdep_sys_accept:
+ .long _.machdep_sys_accept
+
+ .text
+_.machdep_sys_accept:
+ lcs r0,0(r3)
+ svc 99(r0)
+ bntbr r15
+ store r2,_errno,r5
+ cal r2,-1(r0)
+
+/* ==========================================================================
+ * machdep_sys_listen()
+ */
+ .globl _machdep_sys_listen
+ .globl _.machdep_sys_listen
+
+ .text 2
+ .align 2
+_machdep_sys_listen:
+ .long _.machdep_sys_listen
+
+ .text
+ .align 2
+_.machdep_sys_listen:
+ svc 106(r0)
+ bntbr r15
+ brx r15
+ twoc r2,r2
+
+/* ==========================================================================
+ * machdep_sys_fcntl()
+ */
+ .globl _.machdep_sys_fcntl
+ .globl _machdep_sys_fcntl
+
+ .text 2
+_machdep_sys_fcntl:
+ .long _.machdep_sys_fcntl
+ .text
+_.machdep_sys_fcntl:
+ lcs r0,0(sp)
+ svc 92(r0)
+ bntbr r15
+ store r2,_errno,r5
+ brx r15
+ cal r2,-1(r0)
+
+/* ==========================================================================
+ * machdep_sys_getpeername()
+ */
+ .globl _machdep_sys_getpeername
+ .globl _.machdep_sys_getpeername
+
+ .text 2
+_machdep_sys_getpeername:
+ .long _.machdep_sys_getpeername
+
+ .text
+_.machdep_sys_getpeername:
+ ls r0,0(sp)
+ svc 141(r0)
+ bntbr r15
+ brx r15
+ twoc r2,r2
+
+
+/* ==========================================================================
+ * machdep_sys_getsockopt()
+ */
+ .globl _machdep_sys_getsockopt
+ .globl _.machdep_sys_getsockopt
+
+ .text 2
+_machdep_sys_getsockopt:
+ .long _.machdep_sys_getsockopt
+
+ .text
+_.machdep_sys_getsockopt:
+ ls r0,0(sp)
+ svc 118(r0)
+ bntbr r15
+ brx r15
+ twoc r2,r2
+
+
+/* ==========================================================================
+ * machdep_sys_select()
+ */
+
+ .globl _.machdep_sys_select
+ .globl _machdep_sys_select
+
+ .text 2
+_machdep_sys_select:
+ .long _.machdep_sys_select
+ .text
+_.machdep_sys_select:
+ svc 93(r0)
+ bntbr r15
+ brx r15
+ twoc r2,r2
+
+/* ==========================================================================
+ * __tsh()
+ */
+ .globl _._tsh
+ .globl __tsh
+ .text 2
+__tsh: .long _._tsh
+ .text
+ .align 2
+_._tsh:
+ brx r15
+ tsh r2,0(r2)
+
+
+/* ==========================================================================
+ * __pthread_save()
+ */
+ .globl __pthread_save
+ .globl _._pthread_save
+ .text 2
+__pthread_save:
+ .long _._pthread_save
+ .text
+ .align 2
+_._pthread_save:
+ ail r5,r4,0
+ jne 1f
+ mr r4,sp
+ lis r5,0
+ stm r4,0(r2)
+ brx r15
+ lis r2,0
+1:
+ mr r0,r15 # save old return address
+ ls r15,0(r4) # new return address
+ mr r5,r4 # r0 to restore
+ mr r4,r3 # sp to restore
+ stm r4,0(r2)
+ brx r0
+ lis r2,0
+
+
+/* ==========================================================================
+ * __pthread_restore()
+ */
+ .globl __pthread_restore
+ .globl _._pthread_restore
+ .text 2
+__pthread_restore:
+ .long _._pthread_restore
+ .text
+ .align 2
+_._pthread_restore:
+ lm r4,0(r2)
+ mr r0,r5
+ lis r2,1
+ brx r15
+ mr sp,r4
+
+