sunos_asm.S
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  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. #include <asm/cprefix.h>
  12. #include <asm/ptrace.h>
  13. .text
  14. .align 4
  15. /* When calling ret_sys_call, %o0 should contain the same
  16.  * value as in [%sp + REGWIN_SZ + PT_I0] */
  17. /* SunOS getpid() returns pid in %o0 and ppid in %o1 */
  18. .globl C_LABEL(sunos_getpid)
  19. C_LABEL(sunos_getpid):
  20. call C_LABEL(sys_getppid)
  21.  nop
  22. call C_LABEL(sys_getpid)
  23.  st %o0, [%sp + REGWIN_SZ + PT_I1]
  24. b C_LABEL(ret_sys_call)
  25.  st %o0, [%sp + REGWIN_SZ + PT_I0]
  26. /* SunOS getuid() returns uid in %o0 and euid in %o1 */
  27. .globl C_LABEL(sunos_getuid)
  28. C_LABEL(sunos_getuid):
  29. call C_LABEL(sys_geteuid16)
  30.  nop
  31. call C_LABEL(sys_getuid16)
  32.  st %o0, [%sp + REGWIN_SZ + PT_I1]
  33. b C_LABEL(ret_sys_call)
  34.  st %o0, [%sp + REGWIN_SZ + PT_I0]
  35. /* SunOS getgid() returns gid in %o0 and egid in %o1 */
  36. .globl C_LABEL(sunos_getgid)
  37. C_LABEL(sunos_getgid):
  38. call C_LABEL(sys_getegid16)
  39.  nop
  40. call C_LABEL(sys_getgid16)
  41.  st %o0, [%sp + REGWIN_SZ + PT_I1]
  42. b C_LABEL(ret_sys_call)
  43.  st %o0, [%sp + REGWIN_SZ + PT_I0]
  44. /* SunOS's execv() call only specifies the argv argument, the
  45.  * environment settings are the same as the calling processes.
  46.  */
  47. .globl C_LABEL(sunos_execv)
  48. C_LABEL(sunos_execv):
  49. st %g0, [%sp + REGWIN_SZ + PT_I2]
  50. call C_LABEL(sparc_execve)
  51.  add %sp, REGWIN_SZ, %o0
  52. b C_LABEL(ret_sys_call)
  53.  ld [%sp + REGWIN_SZ + PT_I0], %o0