/* $Id$ * sunos_asm.S: SunOS system calls which must have a low-level * entry point to operate correctly. * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) * * Based upon preliminary work which is: * * Copyright (C) 1995 Adrian M. Rodriguez (adrian@remus.rutgers.edu) */ #include .text .align 4 /* When calling ret_sys_call, %o0 should contain the same * value as in [%sp + STACKFRAME_SZ + PT_I0] */ /* SunOS getpid() returns pid in %o0 and ppid in %o1 */ .globl sunos_getpid sunos_getpid: call sys_getppid nop call sys_getpid st %o0, [%sp + STACKFRAME_SZ + PT_I1] b ret_sys_call st %o0, [%sp + STACKFRAME_SZ + PT_I0] /* SunOS getuid() returns uid in %o0 and euid in %o1 */ .globl sunos_getuid sunos_getuid: call sys_geteuid16 nop call sys_getuid16 st %o0, [%sp + STACKFRAME_SZ + PT_I1] b ret_sys_call st %o0, [%sp + STACKFRAME_SZ + PT_I0] /* SunOS getgid() returns gid in %o0 and egid in %o1 */ .globl sunos_getgid sunos_getgid: call sys_getegid16 nop call sys_getgid16 st %o0, [%sp + STACKFRAME_SZ + PT_I1] b ret_sys_call st %o0, [%sp + STACKFRAME_SZ + PT_I0] /* SunOS's execv() call only specifies the argv argument, the * environment settings are the same as the calling processes. */ .globl sunos_execv sunos_execv: st %g0, [%sp + STACKFRAME_SZ + PT_I2] call sparc_execve add %sp, STACKFRAME_SZ, %o0 b ret_sys_call ld [%sp + STACKFRAME_SZ + PT_I0], %o0