Update some of the amd64 parts of libc:
authorPeter Avalos <pavalos@dragonflybsd.org>
Sun, 26 Apr 2009 03:57:31 +0000 (03:57 +0000)
committerPeter Avalos <pavalos@dragonflybsd.org>
Sun, 21 Jun 2009 08:12:07 +0000 (08:12 +0000)
* Change the syscall stub branch orders so that the static branch
prediction will assume that syscalls will succeed rather than fail.

* Add error handling for PSEUDO syscalls.

* Add END() macros for Assembler code. This causes the symbol
table to include the size of the function.

* ldexp:  Fix a typo in the !__GNUC__ case and remove an obsolete
comment.

* setjmp/longjmp changes:
-Save and restore the control part of the MXCSR in addition to the
i387 control word to ensure that the two are consistent.
-Don't clobber the FPU exception flags in longjmp. C99 requires them
to remain unchanged.

Obtained-from: FreeBSD

22 files changed:
lib/libc/amd64/DEFS.h [deleted file]
lib/libc/amd64/SYS.h
lib/libc/amd64/gen/_setjmp.S
lib/libc/amd64/gen/fabs.S
lib/libc/amd64/gen/ldexp.c
lib/libc/amd64/gen/modf.S
lib/libc/amd64/gen/rfork_thread.S
lib/libc/amd64/gen/setjmp.S
lib/libc/amd64/gen/sigsetjmp.S
lib/libc/amd64/sys/brk.S
lib/libc/amd64/sys/exect.S
lib/libc/amd64/sys/pipe.S
lib/libc/amd64/sys/ptrace.S
lib/libc/amd64/sys/reboot.S
lib/libc/amd64/sys/sbrk.S
lib/libc/amd64/sys/setlogin.S
lib/libc/amd64/sys/sigreturn.S
lib/libc/amd64/sys/vfork.S
lib/libc/i386/SYS.h
lib/libc/sys/Makefile.inc
lib/libc_r/arch/amd64/_atomic_lock.S
lib/libstand/i386/_setjmp.S

diff --git a/lib/libc/amd64/DEFS.h b/lib/libc/amd64/DEFS.h
deleted file mode 100644 (file)
index d4cabb0..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *     from: @(#)DEFS.h        5.1 (Berkeley) 4/23/90
- *
- * $FreeBSD: src/lib/libc/i386/DEFS.h,v 1.10 2000/01/20 03:15:00 jasone Exp $
- * $DragonFly: src/lib/libc/amd64/DEFS.h,v 1.1 2006/07/27 00:43:56 corecode Exp $
- */
-
-#include <machine/asm.h>
index 082e249..85f2281 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -34,7 +30,7 @@
  * SUCH DAMAGE.
  *
  *     @(#)SYS.h       5.5 (Berkeley) 5/7/91
- * $FreeBSD: src/lib/libc/amd64/SYS.h,v 1.26 2003/05/24 17:35:23 peter Exp $
+ * $FreeBSD: src/lib/libc/amd64/SYS.h,v 1.30 2008/11/02 01:10:54 peter Exp $
  * $DragonFly: src/lib/libc/amd64/SYS.h,v 1.2 2006/07/27 00:43:42 corecode Exp $
  */
 
 #include <machine/asm.h>
 
 #ifdef PIC
-#define        SYSCALL(x)      2: movq PIC_GOT(HIDENAME(cerror)),%rcx;         \
-                       jmp *%rcx;                                      \
-                       ENTRY(__CONCAT(__sys_,x));                      \
+#define        RSYSCALL(x)     ENTRY(__CONCAT(__sys_,x));                      \
                        .weak CNAME(x);                                 \
                        .set CNAME(x),CNAME(__CONCAT(__sys_,x));        \
                        .weak CNAME(__CONCAT(_,x));                     \
                        .set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \
-                       mov __CONCAT($SYS_,x),%rax; KERNCALL; jb 2b
+                       mov __CONCAT($SYS_,x),%rax; KERNCALL; jb 2f; ret; \
+                       2: movq PIC_GOT(HIDENAME(cerror)),%rcx; jmp *%rcx; \
+                       END(__CONCAT(__sys_,x))
+
+#define        PSEUDO(x)       ENTRY(__CONCAT(__sys_,x));                      \
+                       .weak CNAME(__CONCAT(_,x));                     \
+                       .set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \
+                       mov __CONCAT($SYS_,x),%rax; KERNCALL; jb 2f; ret ; \
+                       2: movq PIC_GOT(HIDENAME(cerror)),%rcx; jmp *%rcx; \
+                       END(__CONCAT(__sys_,x))
 #else
-#define        SYSCALL(x)      2: jmp HIDENAME(cerror);                        \
-                       ENTRY(__CONCAT(__sys_,x));                      \
+#define        RSYSCALL(x)     ENTRY(__CONCAT(__sys_,x));                      \
                        .weak CNAME(x);                                 \
                        .set CNAME(x),CNAME(__CONCAT(__sys_,x));        \
                        .weak CNAME(__CONCAT(_,x));                     \
                        .set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \
-                       mov __CONCAT($SYS_,x),%rax; KERNCALL; jb 2b
-#endif
+                       mov __CONCAT($SYS_,x),%rax; KERNCALL; jb 2f; ret; \
+                       2: jmp HIDENAME(cerror);                        \
+                       END(__CONCAT(__sys_,x))
 
-#define        RSYSCALL(x)     SYSCALL(x); ret
-
-#define        PSEUDO(x,y)     ENTRY(__CONCAT(__sys_,x));                      \
-                       .weak CNAME(x);                                 \
-                       .set CNAME(x),CNAME(__CONCAT(__sys_,x));        \
+#define        PSEUDO(x)       ENTRY(__CONCAT(__sys_,x));                      \
                        .weak CNAME(__CONCAT(_,x));                     \
                        .set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \
-                       mov __CONCAT($SYS_,y),%rax; KERNCALL; ret
+                       mov __CONCAT($SYS_,x),%rax; KERNCALL; jb 2f; ret; \
+                       2: jmp HIDENAME(cerror);                        \
+                       END(__CONCAT(__sys_,x))
+#endif
 
-#define KERNCALL       movq %rcx, %r10; syscall
+#define        KERNCALL        movq %rcx, %r10; syscall
index f7e53af..3e82ac0 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -34,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * @(#)_setjmp.s       5.1 (Berkeley) 4/23/90
- * $FreeBSD: src/lib/libc/amd64/gen/_setjmp.S,v 1.18 2003/06/02 22:37:53 peter Exp $
+ * $FreeBSD: src/lib/libc/amd64/gen/_setjmp.S,v 1.21 2008/11/02 01:10:54 peter Exp $
  * $DragonFly: src/lib/libc/amd64/gen/_setjmp.S,v 1.1 2004/02/02 05:43:14 dillon Exp $
  */
 
@@ -62,13 +58,24 @@ ENTRY(_setjmp)
        movq    %r14,48(%rax)           /* 6; r14 */
        movq    %r15,56(%rax)           /* 7; r15 */
        fnstcw  64(%rax)                /* 8; fpu cw */
+       stmxcsr 68(%rax)                /*    and mxcsr */
        xorq    %rax,%rax
        ret
+END(_setjmp)
 
        .weak   CNAME(_longjmp)
        .set    CNAME(_longjmp),CNAME(___longjmp)
 ENTRY(___longjmp)
        movq    %rdi,%rdx
+       /* Restore the mxcsr, but leave exception flags intact. */
+       stmxcsr -4(%rsp)
+       movl    68(%rdx),%eax
+       andl    $0xffffffc0,%eax
+       movl    -4(%rsp),%edi
+       andl    $0x3f,%edi
+       xorl    %eax,%edi
+       movl    %edi,-4(%rsp)
+       ldmxcsr -4(%rsp)
        movq    %rsi,%rax               /* retval */
        movq    0(%rdx),%rcx
        movq    8(%rdx),%rbx
@@ -78,10 +85,10 @@ ENTRY(___longjmp)
        movq    40(%rdx),%r13
        movq    48(%rdx),%r14
        movq    56(%rdx),%r15
-       fninit
        fldcw   64(%rdx)
        testq   %rax,%rax
        jnz     1f
        incq    %rax
 1:     movq    %rcx,0(%rsp)
        ret
+END(___longjmp)
index 9f9203c..4be6b3e 100644 (file)
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libc/amd64/gen/fabs.S,v 1.3 2004/02/08 21:21:45 peter Exp $
+ * $FreeBSD: src/lib/libc/amd64/gen/fabs.S,v 1.4 2008/11/02 01:10:54 peter Exp $
  * $DragonFly: src/lib/libc/amd64/gen/fabs.S,v 1.2 2006/07/27 00:46:57 corecode Exp $
  */
 
@@ -39,6 +39,7 @@ ENTRY(fabs)
        movsd   signbit(%rip), %xmm0
        andnpd  %xmm1, %xmm0
        ret
+END(fabs)
 
        .data
 signbit:
index 8cadf3f..2783f40 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -34,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * @(#)ldexp.c 8.1 (Berkeley) 6/4/93
- * $FreeBSD: src/lib/libc/amd64/gen/ldexp.c,v 1.11 2003/06/10 21:17:55 obrien Exp $
+ * $FreeBSD: src/lib/libc/amd64/gen/ldexp.c,v 1.14 2007/01/09 00:38:24 imp Exp $
  * $DragonFly: src/lib/libc/amd64/gen/ldexp.c,v 1.1 2004/02/02 05:43:14 dillon Exp $
  */
 
 
 /*
  * We do the conversion in C to let gcc optimize it away, if possible.
- * The "fxch ; fstp" stuff is because value is still on the stack
- * (stupid 8087!).
  */
 double
-ldexp (double value, int exp)
+ldexp(double value, int exp)
 {
        double temp, texp, temp2;
        texp = exp;
@@ -60,7 +54,7 @@ ldexp (double value, int exp)
                : "=u" (temp2), "=t" (temp)
                : "0" (texp), "1" (value));
 #else
-error unknown asm
+#error unknown asm
 #endif
        return (temp);
 }
index db3a370..8b857de 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -33,9 +29,9 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * from: @(#)modf.s    5.5 (Berkeley) 3/18/91
+ *     from: @(#)modf.s        5.5 (Berkeley) 3/18/91
  * $NetBSD: modf.S,v 1.5 1997/07/16 14:37:18 christos Exp $
- * $FreeBSD: src/lib/libc/amd64/gen/modf.S,v 1.2 2003/05/08 03:19:37 peter Exp $
+ * $FreeBSD: src/lib/libc/amd64/gen/modf.S,v 1.4 2008/11/02 01:10:54 peter Exp $
  * $DragonFly: src/lib/libc/amd64/gen/modf.S,v 1.1 2004/02/02 05:43:14 dillon Exp $
  */
 
@@ -89,3 +85,4 @@ ENTRY(modf)
        movsd   -8(%rsp),%xmm0
 
        ret
+END(modf)
index f509c27..eebef2a 100644 (file)
@@ -24,7 +24,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libc/amd64/gen/rfork_thread.S,v 1.1 2003/10/13 20:32:33 alc Exp $
+ * $FreeBSD: src/lib/libc/amd64/gen/rfork_thread.S,v 1.2 2008/11/02 01:10:54 peter Exp $
  * $DragonFly: src/lib/libc/amd64/gen/rfork_thread.S,v 1.1 2004/02/02 05:43:14 dillon Exp $
  */
 
@@ -101,3 +101,4 @@ ENTRY(rfork_thread)
 #else
        jmp     HIDENAME(cerror)
 #endif
+END(rfork_thread)
index b90e720..f854281 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -34,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * @(#)setjmp.s        5.1 (Berkeley) 4/23/90
- * $FreeBSD: src/lib/libc/amd64/gen/setjmp.S,v 1.26 2003/06/02 22:37:53 peter Exp $
+ * $FreeBSD: src/lib/libc/amd64/gen/setjmp.S,v 1.29 2008/11/02 01:10:54 peter Exp $
  * $DragonFly: src/lib/libc/amd64/gen/setjmp.S,v 1.1 2004/02/02 05:43:14 dillon Exp $
  */
 
@@ -71,8 +67,10 @@ ENTRY(setjmp)
        movq    %r14,48(%rcx)           /* 6; r14 */
        movq    %r15,56(%rcx)           /* 7; r15 */
        fnstcw  64(%rcx)                /* 8; fpu cw */
+       stmxcsr 68(%rcx)                /*    and mxcsr */
        xorq    %rax,%rax
        ret
+END(setjmp)
 
        .weak CNAME(longjmp)
        .set CNAME(longjmp),CNAME(__longjmp)
@@ -87,6 +85,15 @@ ENTRY(__longjmp)
        popq    %rsi
        popq    %rdi                    /* jmpbuf */
        movq    %rdi,%rdx
+       /* Restore the mxcsr, but leave exception flags intact. */
+       stmxcsr -4(%rsp)
+       movl    68(%rdx),%eax
+       andl    $0xffffffc0,%eax
+       movl    -4(%rsp),%edi
+       andl    $0x3f,%edi
+       xorl    %eax,%edi
+       movl    %edi,-4(%rsp)
+       ldmxcsr -4(%rsp)
        movq    %rsi,%rax               /* retval */
        movq    0(%rdx),%rcx
        movq    8(%rdx),%rbx
@@ -96,10 +103,10 @@ ENTRY(__longjmp)
        movq    40(%rdx),%r13
        movq    48(%rdx),%r14
        movq    56(%rdx),%r15
-       fninit
        fldcw   64(%rdx)
        testq   %rax,%rax
        jnz     1f
        incq    %rax
 1:     movq    %rcx,0(%rsp)
        ret
+END(__longjmp)
index bee0de6..519e8bb 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * @(#)setjmp.s        5.1 (Berkeley) 4/23/90"
+ *     @(#)setjmp.s    5.1 (Berkeley) 4/23/90
  * $Id: sigsetjmp.S,v 1.1 1993/12/05 13:01:05 ats Exp $
- * $FreeBSD: src/lib/libc/amd64/gen/sigsetjmp.S,v 1.28 2003/06/02 22:37:53 peter Exp $
+ * $FreeBSD: src/lib/libc/amd64/gen/sigsetjmp.S,v 1.30 2008/11/02 01:10:54 peter Exp $
  * $DragonFly: src/lib/libc/amd64/gen/sigsetjmp.S,v 1.1 2004/02/02 05:43:14 dillon Exp $
  */
 
 #include <machine/asm.h>
-
 #include "SYS.h"
 
 /*-
@@ -79,6 +74,7 @@ ENTRY(sigsetjmp)
        fnstcw  64(%rcx)                /* 8; fpu cw */
        xorq    %rax,%rax
        ret
+END(sigsetjmp)
 
        .weak CNAME(siglongjmp)
        .set CNAME(siglongjmp),CNAME(__siglongjmp)
@@ -111,3 +107,4 @@ ENTRY(__siglongjmp)
        incq    %rax
 1:     movq    %rcx,0(%rsp)
        ret
+END(__siglongjmp)
index 1431e05..53eeea9 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -34,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * @(#)brk.s   5.2 (Berkeley) 12/17/90
- * $FreeBSD: src/lib/libc/amd64/sys/brk.S,v 1.12 2003/05/24 17:35:23 peter Exp $
+ * $FreeBSD: src/lib/libc/amd64/sys/brk.S,v 1.15 2008/11/02 01:10:54 peter Exp $
  * $DragonFly: src/lib/libc/amd64/sys/brk.S,v 1.1 2004/02/02 05:43:14 dillon Exp $
  */
 
@@ -47,6 +43,7 @@
 ENTRY(_brk)
        pushq   %rdi
        jmp     ok
+END(_brk)
 
 ENTRY(brk)
        pushq   %rdi
@@ -78,9 +75,11 @@ ok:
        popq    %rdi
        ret
 err:
+       addq    $8, %rsp
 #ifdef PIC
        movq    PIC_GOT(HIDENAME(cerror)),%rdx
        jmp     *%rdx
 #else
        jmp     HIDENAME(cerror)
 #endif
+END(brk)
index 5c601bc..41d47d1 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -34,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * @(#)exect.s 5.1 (Berkeley) 4/23/90
- * $FreeBSD: src/lib/libc/amd64/sys/exect.S,v 1.11 2003/05/24 17:35:23 peter Exp $
+ * $FreeBSD: src/lib/libc/amd64/sys/exect.S,v 1.13 2008/11/02 01:10:54 peter Exp $
  * $DragonFly: src/lib/libc/amd64/sys/exect.S,v 1.1 2004/02/02 05:43:14 dillon Exp $
  */
 
@@ -56,3 +52,4 @@ ENTRY(exect)
 #else
        jmp     HIDENAME(cerror)
 #endif
+END(exect)
index 13a92a4..3aa3fc0 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  * SUCH DAMAGE.
  *
  * @(#)pipe.s  5.1 (Berkeley) 4/23/90
- * $FreeBSD: src/lib/libc/amd64/sys/pipe.S,v 1.12 2003/04/30 18:13:48 peter Exp $
+ * $FreeBSD: src/lib/libc/amd64/sys/pipe.S,v 1.15 2008/11/02 01:10:54 peter Exp $
  * $DragonFly: src/lib/libc/amd64/sys/pipe.S,v 1.1 2004/02/02 05:43:14 dillon Exp $
  */
 
 #include <machine/asm.h>
 #include "SYS.h"
 
-SYSCALL(pipe)
+       .weak   _pipe
+       .set    _pipe,__sys_pipe
+       .weak   pipe
+       .set    pipe,__sys_pipe
+ENTRY(__sys_pipe)
+       mov     $SYS_pipe,%rax
+       KERNCALL
+       jb      1f
        movl    %eax,(%rdi)     /* %rdi is preserved by syscall */
        movl    %edx,4(%rdi)
        movq    $0,%rax
        ret
+1:
+#ifdef PIC
+       movq    PIC_GOT(HIDENAME(cerror)),%rdx
+       jmp     *%rdx
+#else
+       jmp     HIDENAME(cerror)
+#endif
+END(__sys_pipe)
index 2953517..74770da 100644 (file)
@@ -71,3 +71,4 @@ err:
 #else
        jmp     HIDENAME(cerror)
 #endif
+END(ptrace)
index 2533dff..0d38b9a 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  * SUCH DAMAGE.
  *
  * @(#)reboot.s        5.1 (Berkeley) 4/23/90
- * $FreeBSD: src/lib/libc/amd64/sys/reboot.S,v 1.8 2003/04/30 18:14:44 peter Exp $
+ * $FreeBSD: src/lib/libc/amd64/sys/reboot.S,v 1.11 2008/11/02 01:10:54 peter Exp $
  * $DragonFly: src/lib/libc/amd64/sys/reboot.S,v 1.1 2004/02/02 05:43:14 dillon Exp $
  */
 
 #include <machine/asm.h>
 #include "SYS.h"
 
-SYSCALL(reboot)
+       .weak   _reboot
+       .set    _reboot,__sys_reboot
+       .weak   reboot
+       .set    reboot,__sys_reboot
+ENTRY(__sys_reboot)
+       mov     $SYS_reboot,%rax
+       KERNCALL
+       jb      1f
        iretq
+1:
+#ifdef PIC
+       movq    PIC_GOT(HIDENAME(cerror)),%rdx
+       jmp     *%rdx
+#else
+       jmp     HIDENAME(cerror)
+#endif
+END(__sys_reboot)
index 980d08d..f651197 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -34,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * @(#)sbrk.s  5.1 (Berkeley) 4/23/90
- * $FreeBSD: src/lib/libc/amd64/sys/sbrk.S,v 1.13 2003/05/24 17:35:23 peter Exp $
+ * $FreeBSD: src/lib/libc/amd64/sys/sbrk.S,v 1.15 2008/11/02 01:10:54 peter Exp $
  * $DragonFly: src/lib/libc/amd64/sys/sbrk.S,v 1.1 2004/02/02 05:43:14 dillon Exp $
  */
 
@@ -88,3 +84,4 @@ err:
 #else
        jmp     HIDENAME(cerror)
 #endif
+END(sbrk)
index 7353226..eb0d59d 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -34,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * @(#)setlogin.s      5.2 (Berkeley) 4/12/91
- * $FreeBSD: src/lib/libc/amd64/sys/setlogin.S,v 1.11 2003/05/24 17:35:23 peter Exp $
+ * $FreeBSD: src/lib/libc/amd64/sys/setlogin.S,v 1.14 2008/11/02 01:10:54 peter Exp $
  * $DragonFly: src/lib/libc/amd64/sys/setlogin.S,v 1.1 2004/02/02 05:43:14 dillon Exp $
  */
 
 
 .globl CNAME(_logname_valid)           /* in _getlogin() */
 
-SYSCALL(setlogin)
+       .weak   _setlogin
+       .set    _setlogin,__sys_setlogin
+       .weak   setlogin
+       .set    setlogin,__sys_setlogin
+ENTRY(__sys_setlogin)
+       mov     $SYS_setlogin,%rax
+       KERNCALL
+       jb      1f
 #ifdef PIC
        movq    PIC_GOT(CNAME(_logname_valid)),%rdx
        movl    $0,(%rdx)
@@ -51,3 +54,11 @@ SYSCALL(setlogin)
        movl    $0,CNAME(_logname_valid)(%rip)
 #endif
        ret                             /* setlogin(name) */
+1:
+#ifdef PIC
+       movq    PIC_GOT(HIDENAME(cerror)),%rdx
+       jmp     *%rdx
+#else
+       jmp     HIDENAME(cerror)
+#endif
+END(__sys_setlogin)
index cdaac14..95af738 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -34,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * @(#)sigreturn.s     5.2 (Berkeley) 12/17/90
- * $FreeBSD: src/lib/libc/amd64/sys/sigreturn.S,v 1.12 2002/03/23 02:10:28 obrien Exp $
+ * $FreeBSD: src/lib/libc/amd64/sys/sigreturn.S,v 1.13 2007/01/09 00:27:49 imp Exp $
  * $DragonFly: src/lib/libc/amd64/sys/sigreturn.S,v 1.1 2004/02/02 05:43:14 dillon Exp $
  */
 
index 27616b6..744d9b5 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -34,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * @(#)Ovfork.s        5.1 (Berkeley) 4/23/90
- * $FreeBSD: src/lib/libc/amd64/sys/vfork.S,v 1.22 2003/09/04 00:26:40 peter Exp $
+ * $FreeBSD: src/lib/libc/amd64/sys/vfork.S,v 1.24 2008/11/02 01:10:54 peter Exp $
  * $DragonFly: src/lib/libc/amd64/sys/vfork.S,v 1.1 2004/02/02 05:43:14 dillon Exp $
  */
 
@@ -59,3 +55,4 @@ ENTRY(__sys_vfork)
 #else
        jmp     HIDENAME(cerror)
 #endif
+END(__sys_vfork)
index a002f6d..75cdc45 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *     from: @(#)SYS.h 5.5 (Berkeley) 5/7/91
- *
- * $FreeBSD: src/lib/libc/i386/SYS.h,v 1.17.2.2 2002/10/15 19:46:46 fjoe Exp $
+ *     @(#)SYS.h       5.5 (Berkeley) 5/7/91
+ * $FreeBSD: src/lib/libc/i386/SYS.h,v 1.27 2008/11/02 01:28:47 peter Exp $
  * $DragonFly: src/lib/libc/i386/SYS.h,v 1.7 2006/07/27 00:43:42 corecode Exp $
  */
 
 #include <sys/syscall.h>
-#include "DEFS.h"
+#include <machine/asm.h>
 
 #define        SYSCALL(x)      2: PIC_PROLOGUE; jmp PIC_PLT(HIDENAME(cerror)); \
                        ENTRY(__CONCAT(__sys_,x));                      \
                        .set CNAME(x),CNAME(__CONCAT(__sys_,x));        \
                        .weak CNAME(__CONCAT(_,x));                     \
                        .set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \
-                       lea __CONCAT(SYS_,x),%eax; KERNCALL; jb 2b
+                       mov __CONCAT($SYS_,x),%eax; KERNCALL; jb 2b
 
-#define        RSYSCALL(x)     SYSCALL(x); ret
+#define        RSYSCALL(x)     SYSCALL(x); ret; END(__CONCAT(__sys_,x))
 
-#define        PSEUDO(x,y)     ENTRY(__CONCAT(__sys_,x));                      \
-                       .weak CNAME(x);                                 \
-                       .set CNAME(x),CNAME(__CONCAT(__sys_,x));        \
+#define        PSEUDO(x)       2: PIC_PROLOGUE; jmp PIC_PLT(HIDENAME(cerror)); \
+                       ENTRY(__CONCAT(__sys_,x));                      \
                        .weak CNAME(__CONCAT(_,x));                     \
                        .set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \
-                       lea __CONCAT(SYS_,y), %eax; KERNCALL; ret
+                       mov __CONCAT($SYS_,x),%eax; KERNCALL; jb 2b; ret; \
+                       END(__CONCAT(__sys_,x))
 
 /* gas messes up offset -- although we don't currently need it, do for BCS */
 #define        LCALL(x,y)      .byte 0x9a ; .long y; .word x
 
-#define KERNCALL int $0x80
+#define        KERNCALL        int $0x80
index 5606215..3186983 100644 (file)
@@ -53,7 +53,7 @@ ${SASM}:
        printf '#include "SYS.h"\nRSYSCALL(${.PREFIX})\n' > ${.TARGET}
 
 ${SPSEUDO}:
-       printf '#include "SYS.h"\nPSEUDO(${.PREFIX},${.PREFIX:S/_//})\n' \
+       printf '#include "SYS.h"\nPSEUDO(${.PREFIX:S/_//})\n' \
            > ${.TARGET}
 
 .if ${LIB} == "c"
index b5248c5..fc95692 100644 (file)
@@ -23,7 +23,7 @@
  * $DragonFly: src/lib/libc_r/arch/amd64/_atomic_lock.S,v 1.1 2006/07/27 00:43:35 corecode Exp $
  */
 
-#include "DEFS.h"
+#include <machine/asm.h>
 
 /*
  * Atomicly lock a location with an identifier provided the location
index c5e1352..5dde185 100644 (file)
@@ -49,7 +49,7 @@
  * The previous signal state is NOT restored.
  */
 
-#include "DEFS.h"
+#include <machine/asm.h>
 
 ENTRY(_setjmp)
        movl    4(%esp),%eax