281 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			281 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
/*
 | 
						|
 * 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)
 |