| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* $Id: sunos_asm.S,v 1.15 2000/01/11 17:33:21 jj Exp $ | 
 | 2 |  * sunos_asm.S: SunOS system calls which must have a low-level | 
 | 3 |  *              entry point to operate correctly. | 
 | 4 |  * | 
 | 5 |  * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 
 | 6 |  * | 
 | 7 |  * Based upon preliminary work which is: | 
 | 8 |  * | 
 | 9 |  * Copyright (C) 1995 Adrian M. Rodriguez (adrian@remus.rutgers.edu) | 
 | 10 |  */ | 
 | 11 |  | 
 | 12 | #include <asm/ptrace.h> | 
 | 13 |  | 
 | 14 | 	.text | 
 | 15 | 	.align 4 | 
 | 16 |  | 
 | 17 | 	/* When calling ret_sys_call, %o0 should contain the same | 
 | 18 | 	 * value as in [%sp + STACKFRAME_SZ + PT_I0] */ | 
 | 19 |  | 
 | 20 | 	/* SunOS getpid() returns pid in %o0 and ppid in %o1 */ | 
 | 21 | 	.globl	sunos_getpid | 
 | 22 | sunos_getpid: | 
 | 23 | 	call	sys_getppid | 
 | 24 | 	 nop | 
 | 25 |  | 
 | 26 | 	call	sys_getpid | 
 | 27 | 	 st	%o0, [%sp + STACKFRAME_SZ + PT_I1] | 
 | 28 |  | 
 | 29 | 	b	ret_sys_call | 
 | 30 | 	 st	%o0, [%sp + STACKFRAME_SZ + PT_I0] | 
 | 31 |  | 
 | 32 | 	/* SunOS getuid() returns uid in %o0 and euid in %o1 */ | 
 | 33 | 	.globl	sunos_getuid | 
 | 34 | sunos_getuid: | 
 | 35 | 	call	sys_geteuid16 | 
 | 36 | 	 nop | 
 | 37 |  | 
 | 38 | 	call	sys_getuid16 | 
 | 39 | 	 st	%o0, [%sp + STACKFRAME_SZ + PT_I1] | 
 | 40 |  | 
 | 41 | 	b	ret_sys_call | 
 | 42 | 	 st	%o0, [%sp + STACKFRAME_SZ + PT_I0] | 
 | 43 |  | 
 | 44 | 	/* SunOS getgid() returns gid in %o0 and egid in %o1 */ | 
 | 45 | 	.globl	sunos_getgid | 
 | 46 | sunos_getgid: | 
 | 47 | 	call	sys_getegid16 | 
 | 48 | 	 nop | 
 | 49 |  | 
 | 50 | 	call	sys_getgid16 | 
 | 51 | 	 st	%o0, [%sp + STACKFRAME_SZ + PT_I1] | 
 | 52 |  | 
 | 53 | 	b	ret_sys_call | 
 | 54 | 	 st	%o0, [%sp + STACKFRAME_SZ + PT_I0] | 
 | 55 |  | 
 | 56 | 	/* SunOS's execv() call only specifies the argv argument, the | 
 | 57 | 	 * environment settings are the same as the calling processes. | 
 | 58 | 	 */ | 
 | 59 | 	.globl	sunos_execv | 
 | 60 | sunos_execv: | 
 | 61 | 	st	%g0, [%sp + STACKFRAME_SZ + PT_I2] | 
 | 62 |  | 
 | 63 | 	call	sparc_execve | 
 | 64 | 	 add	%sp, STACKFRAME_SZ, %o0 | 
 | 65 |  | 
 | 66 | 	b	ret_sys_call | 
 | 67 | 	 ld	[%sp + STACKFRAME_SZ + PT_I0], %o0 |