/*
 * solaris-syscall.S -- System call stubs for Solaris.
 *
 * Copyright (c) 1996 Cygnus Support
 *
 * The authors hereby grant permission to use, copy, modify, distribute,
 * and license this software and its documentation for any purpose, provided
 * that existing copyright notices are retained in all copies and that this
 * notice is included verbatim in any distributions. No written agreement,
 * license, or royalty fee is required for any of the authorized uses.
 * Modifications to this software may be copyrighted by their authors
 * and need not follow the licensing terms described here, provided that
 * the new terms are clearly indicated on the first page of each file where
 * they apply.
 */

#include "ppc-asm.h"

	.file	"solaris-syscall.S"

#define	SYS_syscall		0
#define	SYS_exit		1
#define	SYS_fork		2
#define	SYS_read		3
#define	SYS_write		4
#define	SYS_open		5
#define	SYS_close		6
#define	SYS_wait		7
#define	SYS_creat		8
#define	SYS_link		9
#define	SYS_unlink		10
#define	SYS_exec		11
#define	SYS_chdir		12
#define	SYS_time		13
#define	SYS_mknod		14
#define	SYS_chmod		15
#define	SYS_chown		16
#define	SYS_brk			17
#define	SYS_stat		18
#define	SYS_lseek		19
#define	SYS_getpid		20
#define	SYS_mount		21
#define	SYS_umount		22
#define	SYS_setuid		23
#define	SYS_getuid		24
#define	SYS_stime		25
#define	SYS_ptrace		26
#define	SYS_alarm		27
#define	SYS_fstat		28
#define	SYS_pause		29
#define	SYS_utime		30
#define	SYS_stty		31
#define	SYS_gtty		32
#define	SYS_access		33
#define	SYS_nice		34
#define	SYS_statfs		35
#define	SYS_sync		36
#define	SYS_kill		37
#define	SYS_fstatfs		38
#define	SYS_pgrpsys		39
#define	SYS_xenix		40
#define	SYS_dup			41
#define	SYS_pipe		42
#define	SYS_times		43
#define	SYS_profil		44
#define	SYS_plock		45
#define	SYS_setgid		46
#define	SYS_getgid		47
#define	SYS_signal		48
#define	SYS_msgsys		49
#define	SYS_syssun		50
#define	SYS_sysi86		50
#define	SYS_sysppc		50
#define	SYS_acct		51
#define	SYS_shmsys		52
#define	SYS_semsys		53
#define	SYS_ioctl		54
#define	SYS_uadmin		55
#define	SYS_utssys		57
#define	SYS_fdsync		58
#define	SYS_execve		59
#define	SYS_umask		60
#define	SYS_chroot		61
#define	SYS_fcntl		62
#define	SYS_ulimit		63
#define	SYS_rmdir		79
#define	SYS_mkdir		80
#define	SYS_getdents		81
#define	SYS_sysfs		84
#define	SYS_getmsg		85
#define	SYS_putmsg		86
#define	SYS_poll		87
#define	SYS_lstat		88
#define	SYS_symlink		89
#define	SYS_readlink		90
#define	SYS_setgroups		91
#define	SYS_getgroups		92
#define	SYS_fchmod		93
#define	SYS_fchown		94
#define	SYS_sigprocmask		95
#define	SYS_sigsuspend		96
#define	SYS_sigaltstack		97
#define	SYS_sigaction		98
#define	SYS_sigpending		99
#define	SYS_context		100
#define	SYS_evsys		101
#define	SYS_evtrapret		102
#define	SYS_statvfs		103
#define	SYS_fstatvfs		104
#define	SYS_nfssys		106
#define	SYS_waitsys		107
#define	SYS_sigsendsys		108
#define	SYS_hrtsys		109
#define	SYS_acancel		110
#define	SYS_async		111
#define	SYS_priocntlsys		112
#define	SYS_pathconf		113
#define	SYS_mincore		114
#define	SYS_mmap		115
#define	SYS_mprotect		116
#define	SYS_munmap		117
#define	SYS_fpathconf		118
#define	SYS_vfork		119
#define	SYS_fchdir		120
#define	SYS_readv		121
#define	SYS_writev		122
#define	SYS_xstat		123
#define	SYS_lxstat		124
#define	SYS_fxstat		125
#define	SYS_xmknod		126
#define	SYS_clocal		127
#define	SYS_setrlimit		128
#define	SYS_getrlimit		129
#define	SYS_lchown		130
#define	SYS_memcntl		131
#define	SYS_getpmsg		132
#define	SYS_putpmsg		133
#define	SYS_rename		134
#define	SYS_uname		135
#define	SYS_setegid		136
#define	SYS_sysconfig		137
#define	SYS_adjtime		138
#define	SYS_systeminfo		139
#define	SYS_seteuid		141
#define	SYS_vtrace		142
#define	SYS_fork1		143
#define	SYS_sigtimedwait	144
#define	SYS_lwp_info		145
#define	SYS_yield		146
#define	SYS_lwp_sema_wait	147
#define	SYS_lwp_sema_post	148
#define	SYS_modctl		152
#define	SYS_fchroot		153
#define	SYS_utimes		154
#define	SYS_vhangup		155
#define	SYS_gettimeofday	156
#define	SYS_getitimer		157
#define	SYS_setitimer		158
#define	SYS_lwp_create		159
#define	SYS_lwp_exit		160
#define	SYS_lwp_suspend		161
#define	SYS_lwp_continue	162
#define	SYS_lwp_kill		163
#define	SYS_lwp_self		164
#define	SYS_lwp_setprivate	165
#define	SYS_lwp_getprivate	166
#define	SYS_lwp_wait		167
#define	SYS_lwp_mutex_unlock	168
#define	SYS_lwp_mutex_lock	169
#define	SYS_lwp_cond_wait	170
#define	SYS_lwp_cond_signal	171
#define	SYS_lwp_cond_broadcast	172
#define	SYS_pread		173
#define	SYS_pwrite		174
#define	SYS_llseek		175
#define	SYS_inst_sync		176
#define	SYS_kaio		178
#define	SYS_tsolsys		184
#define	SYS_acl			185
#define	SYS_auditsys		186
#define	SYS_processor_bind	187
#define	SYS_processor_info	188
#define	SYS_p_online		189
#define	SYS_sigqueue		190
#define	SYS_clock_gettime	191
#define	SYS_clock_settime	192
#define	SYS_clock_getres	193
#define	SYS_timer_create	194
#define	SYS_timer_delete	195
#define	SYS_timer_settime	196
#define	SYS_timer_gettime	197
#define	SYS_timer_getoverrun	198
#define	SYS_nanosleep		199
#define	SYS_facl		200
#define	SYS_door		201
#define	SYS_setreuid		202
#define	SYS_setregid		203
#define	SYS_install_utrap	204
#define	SYS_signotifywait	210
#define	SYS_lwp_sigredirect	211
#define	SYS_lwp_alarm		212

		.text
FUNC_START(_exit)
	li	r0,SYS_exit
	sc

/*
 * Insure that the debugger tells the client that the PC is in _exit,
 * not whatever function happens to follow this function.
 */

0:	trap
	b	0b			/* we never should return, but... */
FUNC_END(_exit)

#define SYSCALL(syscall,name) \
FUNC_START(name); \
	li	r0,syscall; \
	sc; \
	bns+ 0f; \
	b FUNC_NAME(_cerror); \
0:	blr; \
FUNC_END(name)

SYSCALL(SYS_access,access)
SYSCALL(SYS_alarm,alarm)
SYSCALL(SYS_brk,brk)
SYSCALL(SYS_chdir,chdir)
SYSCALL(SYS_chmod,chomd)
SYSCALL(SYS_chown,chown)
SYSCALL(SYS_close,close)
SYSCALL(SYS_creat,creat)
SYSCALL(SYS_dup,dup)
SYSCALL(SYS_exec,exec)
SYSCALL(SYS_fork,fork)
SYSCALL(SYS_fstat,_fstat)
SYSCALL(SYS_getpid,getpid)
SYSCALL(SYS_ioctl,ioctl)
SYSCALL(SYS_kill,kill)
SYSCALL(SYS_link,link)
SYSCALL(SYS_lseek,lseek)
SYSCALL(SYS_nice,nice)
SYSCALL(SYS_open,open)
SYSCALL(SYS_pause,pause)
SYSCALL(SYS_pipe,pipe)
SYSCALL(SYS_ptrace,ptrace)
SYSCALL(SYS_read,read)
SYSCALL(SYS_signal,signal)
SYSCALL(SYS_stat,_stat)
SYSCALL(SYS_sync,sync)
SYSCALL(SYS_sysppc,sysppc)
SYSCALL(SYS_time,time)
SYSCALL(SYS_times,times)
SYSCALL(SYS_unlink,unlink)
SYSCALL(SYS_wait,wait)
SYSCALL(SYS_write,write)
SYSCALL(SYS_umask,umask)
SYSCALL(SYS_execve,execve)
SYSCALL(SYS_fcntl,fcntl)
SYSCALL(SYS_ulimit,ulimit)
SYSCALL(SYS_mkdir,mkdir)
SYSCALL(SYS_rmdir,rmdir)
SYSCALL(SYS_getdents,getdents)
SYSCALL(SYS_lstat,_lstat)
SYSCALL(SYS_symlink,symlink)
SYSCALL(SYS_readlink,readlink)
SYSCALL(SYS_sigprocmask,sigprocmask)
SYSCALL(SYS_sigsuspend,sigsuspend)
SYSCALL(SYS_sigaction,sigaction)
SYSCALL(SYS_mmap,mmap)
SYSCALL(SYS_mprotect,mprotect)
SYSCALL(SYS_munmap,munmap)
SYSCALL(SYS_fpathconf,fpathconf)
SYSCALL(SYS_vfork,vfork)
SYSCALL(SYS_setrlimit,setrlimit)
SYSCALL(SYS_getrlimit,getrlimit)
SYSCALL(SYS_rename,rename)
SYSCALL(SYS_utimes,utimes)
SYSCALL(SYS_gettimeofday,gettimeofday)