syscall-template-alpha-osf1.S
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:1k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. #include <asm.h>
  2. #include <regdef.h>
  3. #define COMPAT_43
  4. #include <syscall.h>
  5. #undef SYSCALL
  6. /* Kernel syscall interface:
  7.    Input:
  8. v0 - system call number
  9. a* - arguments, as in C
  10.    Output:
  11. a3 - zero iff successful
  12. v0 - errno value on failure, else result
  13.    This macro is similar to SYSCALL in asm.h, but not completely.
  14.    There's room for optimization, if we assume this will continue to
  15.    be assembled as one file.
  16.    This macro expansions does not include the return instruction.
  17.    If there's no other work to be done, use something like:
  18. SYSCALL(foo) ; ret
  19.    If there is other work to do (in fork, maybe?), do it after the
  20.    SYSCALL invocation.  */
  21. #define SYSCALL(x) 
  22. .align 4 ;
  23. .globl machdep_sys_##x ;
  24. .ent machdep_sys_##x, 0 ;
  25. machdep_sys_##x: ;
  26. .frame sp,0,ra ;
  27. ldiq v0, SYS_##x ;
  28. CHMK() ;
  29. beq a3, 2f ;
  30. br gp, 1f ;
  31. 1: ;
  32. /* Load gp so we can find cerror to jump to.  */;
  33. ldgp gp, 0(gp) ;
  34. jmp zero, machdep_cerror ;
  35. 2:
  36. #define SIMPLE_SYSCALL(x) SYSCALL(x) ; ret ; .end machdep_sys_##x
  37. #define XSYSCALL(x) SIMPLE_SYSCALL(x)
  38. XSYSCALL(SYSCALL_NAME)