syscall-i386-bsdi-2.0.S
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:10k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* ==== syscall.S ============================================================
  2.  * Copyright (c) 1990 The Regents of the University of California.
  3.  * Copyright (c) 1993 Chris Provenzano, proven@mit.edu
  4.  * All rights reserved.
  5.  *
  6.  * This code is derived from software contributed to Berkeley by
  7.  * William Jolitz.
  8.  *
  9.  * Redistribution and use in source and binary forms, with or without
  10.  * modification, are permitted provided that the following conditions
  11.  * are met:
  12.  * 1. Redistributions of source code must retain the above copyright
  13.  *    notice, this list of conditions and the following disclaimer.
  14.  * 2. Redistributions in binary form must reproduce the above copyright
  15.  *    notice, this list of conditions and the following disclaimer in the
  16.  *    documentation and/or other materials provided with the distribution.
  17.  * 3. All advertising materials mentioning features or use of this software
  18.  *    must display the following acknowledgement:
  19.  * This product includes software developed by the University of
  20.  * California, Berkeley and its contributors.
  21.  * 4. Neither the name of the University nor the names of its contributors
  22.  *    may be used to endorse or promote products derived from this software
  23.  *    without specific prior written permission.
  24.  *
  25.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  26.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  27.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  28.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  29.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  30.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  31.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  32.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  33.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  34.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  35.  * SUCH DAMAGE.
  36.  *
  37.  * Description : Machine dependent syscalls for i386/i486/i586
  38.  *
  39.  *  1.00 93/08/26 proven
  40.  *      -Started coding this file.
  41.  *
  42.  * 1.01 93/11/13 proven
  43.  * -The functions readv() and writev() added.
  44.  */
  45. #ifndef lint
  46. .text
  47. .asciz "syscall-i386-netbsd-1.0.S,v 1.56 1995/09/26 21:04:05 raeburn Exp";
  48. #endif
  49.  
  50. #if defined(SYSLIBC_SCCS) && !defined(lint)
  51.         .asciz "@(#)syscall.s   5.1 (Berkeley) 4/23/90"
  52. #endif /* SYSLIBC_SCCS and not lint */
  53. #include <sys/syscall.h>
  54. /*
  55.  * Initial asm stuff for all functions.
  56.  */
  57. .text
  58. .align 2
  59. /* ==========================================================================
  60.  * error code for all syscalls. The error value is returned as the negative
  61.  * of the errno value.
  62.  */
  63. 1:
  64. neg %eax
  65. ret
  66. /* ==========================================================================
  67.  * machdep_sys_fork()
  68.  */
  69. .globl _machdep_sys_fork;
  70. _machdep_sys_fork:;
  71. movl $(SYS_fork), %eax;
  72. .byte 0x9a; .long 0; .word 7;
  73. cmpl $0, %edx
  74. je 2f
  75. movl $0, %eax
  76. 2:
  77. ret;
  78. /* ==========================================================================
  79.  * machdep_sys___syscall()
  80.  */
  81. _machdep_sys___syscall:;
  82. movl $(SYS___syscall), %eax;
  83. .byte 0x9a; .long 0; .word 7;
  84. jb 3f;
  85. ret
  86. /* ==========================================================================
  87.  * machdep_sys_sigsuspend()
  88.  */
  89. .globl _machdep_sys_sigsuspend;
  90. _machdep_sys_sigsuspend:;
  91. movl    4(%esp),%eax            # fetch mask arg
  92.     movl    (%eax),%eax             # indirect to mask arg
  93.     movl    %eax,4(%esp)
  94. movl $(SYS_sigsuspend), %eax;
  95. .byte 0x9a; .long 0; .word 7;
  96. jb 3f;
  97. ret
  98. 3:
  99. neg %eax
  100. movl $0xffffffff,%edx
  101. ret
  102. /* ==========================================================================
  103.  * machdep_sys_lseek()
  104.  */
  105. .globl _machdep_sys_lseek;
  106. _machdep_sys_lseek:;
  107. pushl  %ebp;
  108. movl   %esp,%ebp;
  109. pushl  0x14(%ebp);
  110. pushl  0x10(%ebp);
  111. pushl  0xc(%ebp);
  112. pushl  $0x0;
  113. pushl  0x8(%ebp);
  114. pushl  $0x0;
  115. pushl $(SYS_lseek);
  116. call _machdep_sys___syscall;
  117. leave
  118. ret
  119. /* ==========================================================================
  120.  * machdep_sys_ftruncate() ; Added by Monty
  121.  */
  122.         .globl _machdep_sys_ftruncate;
  123.  
  124. _machdep_sys_ftruncate:;
  125.  
  126.         pushl  %ebp; 
  127.         movl   %esp,%ebp;
  128.         pushl  0x10(%ebp);
  129.         pushl  0xc(%ebp);
  130.         pushl  $0x0; # Why this?
  131.         pushl  0x8(%ebp);
  132.         pushl  $0x0; # And this?
  133.         pushl $(SYS_ftruncate);
  134.         call _machdep_sys___syscall;
  135.         leave
  136.         ret  
  137. /* BSDI DEFS.h,v 2.1 1995/02/03 06:28:24 polk Exp */
  138. /*-
  139.  * Copyright (c) 1990, 1993
  140.  * The Regents of the University of California.  All rights reserved.
  141.  *
  142.  * This code is derived from software contributed to Berkeley by
  143.  * William Jolitz.
  144.  *
  145.  * Redistribution and use in source and binary forms, with or without
  146.  * modification, are permitted provided that the following conditions
  147.  * are met:
  148.  * 1. Redistributions of source code must retain the above copyright
  149.  *    notice, this list of conditions and the following disclaimer.
  150.  * 2. Redistributions in binary form must reproduce the above copyright
  151.  *    notice, this list of conditions and the following disclaimer in the
  152.  *    documentation and/or other materials provided with the distribution.
  153.  * 3. All advertising materials mentioning features or use of this software
  154.  *    must display the following acknowledgement:
  155.  * This product includes software developed by the University of
  156.  * California, Berkeley and its contributors.
  157.  * 4. Neither the name of the University nor the names of its contributors
  158.  *    may be used to endorse or promote products derived from this software
  159.  *    without specific prior written permission.
  160.  *
  161.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  162.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  163.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  164.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  165.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  166.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  167.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  168.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  169.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  170.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  171.  * SUCH DAMAGE.
  172.  *
  173.  * @(#)DEFS.h 8.1 (Berkeley) 6/4/93
  174.  */
  175. #ifdef PROF
  176. #define ENTRY(x) .globl _/**/x; .align 2; _/**/x:  
  177. .data; 1:; .long 0; .text; 
  178. pushl %ebp; movl %esp,%ebp; 
  179. leal 1b,%eax; call mcount; leave
  180. #define ASENTRY(x) .globl x; .align 2; x: 
  181. .data; 1:; .long 0; .text; 
  182. pushl %ebp; movl %esp,%ebp; 
  183. leal 1b,%eax; call mcount; leave
  184. #else
  185. #define ENTRY(x) .globl _/**/x; .align 2; _/**/x: 
  186. #define ASENTRY(x) .globl x; .align 2; x: 
  187. #endif
  188. /*-
  189.  * Copyright (c) 1990, 1993
  190.  * The Regents of the University of California.  All rights reserved.
  191.  *
  192.  * This code is derived from software contributed to Berkeley by
  193.  * William Jolitz.
  194.  *
  195.  * Redistribution and use in source and binary forms, with or without
  196.  * modification, are permitted provided that the following conditions
  197.  * are met:
  198.  * 1. Redistributions of source code must retain the above copyright
  199.  *    notice, this list of conditions and the following disclaimer.
  200.  * 2. Redistributions in binary form must reproduce the above copyright
  201.  *    notice, this list of conditions and the following disclaimer in the
  202.  *    documentation and/or other materials provided with the distribution.
  203.  * 3. All advertising materials mentioning features or use of this software
  204.  *    must display the following acknowledgement:
  205.  * This product includes software developed by the University of
  206.  * California, Berkeley and its contributors.
  207.  * 4. Neither the name of the University nor the names of its contributors
  208.  *    may be used to endorse or promote products derived from this software
  209.  *    without specific prior written permission.
  210.  *
  211.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  212.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  213.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  214.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  215.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  216.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  217.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  218.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  219.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  220.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  221.  * SUCH DAMAGE.
  222.  */
  223. #if defined(LIBC_SCCS) && !defined(lint)
  224. .asciz "@(#)_setjmp.s 8.1 (Berkeley) 6/4/93"
  225. #endif /* LIBC_SCCS and not lint */
  226. /*
  227.  * C library -- _setjmp, _longjmp
  228.  *
  229.  * _longjmp(a,v)
  230.  * will generate a "return(v)" from the last call to
  231.  * _setjmp(a)
  232.  * by restoring registers from the stack.
  233.  * The previous signal state is NOT restored.
  234.  */
  235. .globl __setjmp; /* Patch by Jan Legenhausen  (monty) */
  236. .align 2;
  237. __setjmp:
  238. movl 4(%esp),%eax
  239. movl 0(%esp),%edx
  240. movl %edx, 0(%eax) /* rta */
  241. movl %ebx, 4(%eax)
  242. movl %esp, 8(%eax)
  243. movl %ebp,12(%eax)
  244. movl %esi,16(%eax)
  245. movl %edi,20(%eax)
  246. movl $0,%eax
  247. ret
  248. .globl __longjmp; /* Patch by Jan Legenhausen ?  (monty) */
  249. .align 2;
  250. __longjmp:
  251. movl 4(%esp),%edx
  252. movl 8(%esp),%eax
  253. movl 0(%edx),%ecx
  254. movl 4(%edx),%ebx
  255. movl 8(%edx),%esp
  256. movl 12(%edx),%ebp
  257. movl 16(%edx),%esi
  258. movl 20(%edx),%edi
  259. cmpl $0,%eax
  260. jne 1f
  261. movl $1,%eax
  262. 1: movl %ecx,0(%esp)
  263. ret