mariadb/mit-pthreads/machdep/syscall-romp-bsd.S
bk@work.mysql.com f4c589ff6c Import changeset
2000-07-31 21:29:14 +02:00

327 lines
5.5 KiB
ArmAsm

/* ==== 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