diff options
Diffstat (limited to 'lib/libc/i386')
57 files changed, 3503 insertions, 26 deletions
| diff --git a/lib/libc/i386/DEFS.h b/lib/libc/i386/DEFS.h index 10d9f9b87e17..6df18a13def7 100644 --- a/lib/libc/i386/DEFS.h +++ b/lib/libc/i386/DEFS.h @@ -1,6 +1,6 @@  /*- - * Copyright (c) 1990, 1993 - *	The Regents of the University of California.  All rights reserved. + * 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. @@ -33,15 +33,51 @@   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF   * SUCH DAMAGE.   * - *	@(#)DEFS.h	8.1 (Berkeley) 6/4/93 + *	from: @(#)DEFS.h	5.1 (Berkeley) 4/23/90 + * + *	$Id: DEFS.h,v 1.4 1994/05/03 16:29:13 jkh Exp $   */ -#ifdef PROF -#define	ENTRY(x)	.globl _/**/x; _/**/x:  \ -			.data; 1:; .long 0; .text; lea 1b,%eax ; call mcount -#define	ASENTRY(x)	.globl x; x: \ -			.data; 1:; .long 0; .text; lea 1b,%eax ; call mcount +/* XXX should use align 4,0x90 for -m486. */ +#define _START_ENTRY	.align 2,0x90; +#if 0 +/* Data is not used, except perhaps by non-g prof, which we don't support. */ +#define _MID_ENTRY	.data; .align 2; 8:; .long 0;		\ +			.text; lea 8b,%eax;  #else -#define	ENTRY(x)	.globl _/**/x; _/**/x:  -#define	ASENTRY(x)	.globl x; x:  +#define _MID_ENTRY +#endif + +#ifdef PROF + +#define ALTENTRY(x)	_START_ENTRY	\ +			.globl _/**/x; .type _/**/x,@function; _/**/x:; \ +			_MID_ENTRY	\ +			call mcount; jmp 9f + +#define ENTRY(x)	_START_ENTRY \ +			.globl _/**/x; .type _/**/x,@function; _/**/x:; \ +			_MID_ENTRY	\ +			call mcount; 9: + + +#define	ALTASENTRY(x)	_START_ENTRY	\ +			.globl x; .type x,@function; x:;	\ +			_MID_ENTRY	\ +			call mcount; jmp 9f + +#define	ASENTRY(x)	_START_ENTRY	\ +			.globl x; .type x,@function; x:;	\ +			_MID_ENTRY	\ +			call mcount; 9: + +#else	/* !PROF */ + +#define	ENTRY(x)	_START_ENTRY .globl _/**/x; .type _/**/x,@function; \ +			_/**/x: +#define	ALTENTRY(x)	ENTRY(x) + +#define	ASENTRY(x)	_START_ENTRY .globl x; .type x,@function; x: +#define	ALTASENTRY(x)	ASENTRY(x) +  #endif diff --git a/lib/libc/i386/SYS.h b/lib/libc/i386/SYS.h index dfb679f0d9cd..53837ab541f5 100644 --- a/lib/libc/i386/SYS.h +++ b/lib/libc/i386/SYS.h @@ -1,6 +1,6 @@  /*- - * Copyright (c) 1990, 1993 - *	The Regents of the University of California.  All rights reserved. + * 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. @@ -33,18 +33,34 @@   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF   * SUCH DAMAGE.   * - *	@(#)SYS.h	8.1 (Berkeley) 6/4/93 + *	from: @(#)SYS.h	5.5 (Berkeley) 5/7/91 + * + *	$Id: SYS.h,v 1.3 1993/11/04 00:01:17 paul Exp $   */  #include <sys/syscall.h> +#include "DEFS.h" -#ifdef PROF -#define	ENTRY(x)	.globl _/**/x; \ -			.data; 1:; .long 0; .text; .align 2; _/**/x: \ -			movl $1b,%eax; call mcount +#ifdef PIC +#define PIC_PROLOGUE    \ +        pushl   %ebx;   \ +        call    1f;     \ +1:                      \ +        popl    %ebx;   \ +        addl    $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx +#define PIC_EPILOGUE    \ +        popl    %ebx +#define PIC_PLT(x)      x@PLT +#define PIC_GOT(x)      x@GOT(%ebx) +#define PIC_GOTOFF(x)   x@GOTOFF(%ebx)  #else -#define	ENTRY(x)	.globl _/**/x; .text; .align 2; _/**/x:  -#endif PROF +#define PIC_PROLOGUE +#define PIC_EPILOGUE +#define PIC_PLT(x)      x +#define PIC_GOT(x)      x +#define PIC_GOTOFF(x)   x +#endif +  #define	SYSCALL(x)	2: jmp cerror; ENTRY(x); lea SYS_/**/x,%eax; LCALL(7,0); jb 2b  #define	RSYSCALL(x)	SYSCALL(x); ret  #define	PSEUDO(x,y)	ENTRY(x); lea SYS_/**/y, %eax; ; LCALL(7,0); ret diff --git a/lib/libc/i386/gen/Makefile.inc b/lib/libc/i386/gen/Makefile.inc index 814013ddc5df..17556ead263e 100644 --- a/lib/libc/i386/gen/Makefile.inc +++ b/lib/libc/i386/gen/Makefile.inc @@ -1,5 +1,5 @@  #	@(#)Makefile.inc	8.1 (Berkeley) 6/4/93  SRCS+=	isinf.c -SRCS+=	_setjmp.s alloca.s fabs.s ldexp.c modf.s setjmp.s -SRCS+=	divsi3.s fixdfsi.s fixunsdfsi.s udivsi3.s +SRCS+=	_setjmp.S alloca.S fabs.S ldexp.c modf.S setjmp.S +SRCS+=	divsi3.S fixdfsi.S fixunsdfsi.S udivsi3.S diff --git a/lib/libc/i386/gen/_setjmp.S b/lib/libc/i386/gen/_setjmp.S new file mode 100644 index 000000000000..7aa3e69f84fb --- /dev/null +++ b/lib/libc/i386/gen/_setjmp.S @@ -0,0 +1,82 @@ +/*- + * 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. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +	.asciz "@(#)_setjmp.s	5.1 (Berkeley) 4/23/90" +	.align	2,0x90 +#endif /* LIBC_SCCS and not lint */ + +/* + * C library -- _setjmp, _longjmp + * + *	_longjmp(a,v) + * will generate a "return(v)" from the last call to + *	_setjmp(a) + * by restoring registers from the environment 'a'. + * The previous signal state is NOT restored. + */ + +#include "DEFS.h" + +ENTRY(_setjmp) +	movl	4(%esp),%eax +	movl	0(%esp),%edx +	movl	%edx, 0(%eax)		/* rta */ +	movl	%ebx, 4(%eax) +	movl	%esp, 8(%eax) +	movl	%ebp,12(%eax) +	movl	%esi,16(%eax) +	movl	%edi,20(%eax) +	fnstcw	28(%eax) +	xorl	%eax,%eax +	ret + +ENTRY(_longjmp) +	movl	4(%esp),%edx +	movl	8(%esp),%eax +	movl	0(%edx),%ecx +	movl	4(%edx),%ebx +	movl	8(%edx),%esp +	movl	12(%edx),%ebp +	movl	16(%edx),%esi +	movl	20(%edx),%edi +	fninit +	fldcw	28(%edx) +	testl	%eax,%eax +	jnz	1f +	incl	%eax +1:	movl	%ecx,0(%esp) +	ret diff --git a/lib/libc/i386/gen/alloca.S b/lib/libc/i386/gen/alloca.S new file mode 100644 index 000000000000..65378f5ff22b --- /dev/null +++ b/lib/libc/i386/gen/alloca.S @@ -0,0 +1,57 @@ +/*- + * 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. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +	.asciz "@(#)alloca.s	5.2 (Berkeley) 5/14/90" +#endif /* LIBC_SCCS and not lint */ + +/* like alloc, but automatic automatic free in return */ + +#include "DEFS.h" + +ENTRY(alloca) +	popl	%edx		/*  pop return addr */ +	popl	%eax		/*  pop amount to allocate */ +	movl	%esp,%ecx +	addl	$3,%eax		/*  round up to next word */ +	andl	$0xfffffffc,%eax +	subl	%eax,%esp +	movl	%esp,%eax	/* base of newly allocated space */ +	pushl	8(%ecx)		/* copy possible saved registers */ +	pushl	4(%ecx) +	pushl	0(%ecx) +	pushl	%eax		/* dummy to pop at callsite */ +	jmp	%edx		/* "return" */ diff --git a/lib/libc/i386/gen/divsi3.S b/lib/libc/i386/gen/divsi3.S new file mode 100644 index 000000000000..b08319eaa659 --- /dev/null +++ b/lib/libc/i386/gen/divsi3.S @@ -0,0 +1,47 @@ +/*- + * 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. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +	.asciz "@(#)divsi3.s	5.1 (Berkeley) 5/15/90" +#endif /* LIBC_SCCS and not lint */ + +	.globl ___divsi3 +	.type ___divsi3,@function +___divsi3: +	movl 4(%esp),%eax +	cltd +	idivl 8(%esp) +	ret diff --git a/lib/libc/i386/gen/fabs.S b/lib/libc/i386/gen/fabs.S new file mode 100644 index 000000000000..2519e8b8abcf --- /dev/null +++ b/lib/libc/i386/gen/fabs.S @@ -0,0 +1,46 @@ +/*- + * 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. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +	.asciz "@(#)fabs.s	5.2 (Berkeley) 12/17/90" +#endif /* LIBC_SCCS and not lint */ + +#include "DEFS.h" + +ENTRY(fabs) +	fldl	4(%esp) +	fabs +	ret diff --git a/lib/libc/i386/gen/fixdfsi.S b/lib/libc/i386/gen/fixdfsi.S new file mode 100644 index 000000000000..a61c667c482c --- /dev/null +++ b/lib/libc/i386/gen/fixdfsi.S @@ -0,0 +1,20 @@ +	.file	"__fixdfsi.s" +.text +	.align 2 +.globl ___fixdfsi +.type ___fixdfsi,@function +___fixdfsi: +	pushl %ebp +	movl %esp,%ebp +	subl	$12,%esp +	fstcw	-4(%ebp)   +	movw	-4(%ebp),%ax +	orw	$0x0c00,%ax   +	movw	%ax,-2(%ebp)  +	fldcw	-2(%ebp)      +	fldl	8(%ebp) +	fistpl	-12(%ebp)     +	fldcw	-4(%ebp)      +	movl	-12(%ebp),%eax +	leave +	ret diff --git a/lib/libc/i386/gen/fixunsdfsi.S b/lib/libc/i386/gen/fixunsdfsi.S new file mode 100644 index 000000000000..f61daeeea27c --- /dev/null +++ b/lib/libc/i386/gen/fixunsdfsi.S @@ -0,0 +1,82 @@ +/*- + * 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: @(#)fixunsdfsi.s	5.1	12/17/90 + *	$Id: fixunsdfsi.S,v 1.1 1993/12/05 13:01:03 ats Exp $ + */ + +#if defined(LIBC_SCCS) +	.text +	.asciz "$Id: fixunsdfsi.S,v 1.1 1993/12/05 13:01:03 ats Exp $" +#endif + +#include "DEFS.h" +#include "SYS.h" + +ENTRY(__fixunsdfsi) +	fldl	4(%esp)		/* argument double to accum stack */ +	frndint			/* create integer */ +#ifdef PIC +	PIC_PROLOGUE +	leal	PIC_GOTOFF(fbiggestsigned),%eax +	PIC_EPILOGUE +	fcoml	(%eax) +#else +	fcoml	PIC_GOTOFF(fbiggestsigned)	/* bigger than biggest signed? */ +#endif +	fstsw	%ax +	sahf +	jnb	1f + +	fistpl	4(%esp) +	movl	4(%esp),%eax +	ret + +1: +#ifdef PIC +	PIC_PROLOGUE +	leal	PIC_GOTOFF(fbiggestsigned),%eax +	PIC_EPILOGUE +	fsubl	(%eax) +#else +	fsubl	PIC_GOTOFF(fbiggestsigned)	/* reduce for proper conversion */ +#endif +	fistpl	4(%esp)		/* convert */ +	movl	4(%esp),%eax +	orl	$0x80000000,%eax	/* restore bias */ +	PIC_EPILOGUE +	ret + +fbiggestsigned:	.double	0r2147483648.0 diff --git a/lib/libc/i386/gen/modf.S b/lib/libc/i386/gen/modf.S new file mode 100644 index 000000000000..246729f13e95 --- /dev/null +++ b/lib/libc/i386/gen/modf.S @@ -0,0 +1,76 @@ +/*- + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Sean Eric Fagan. + * + * 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. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +	.asciz "@(#)modf.s	5.5 (Berkeley) 3/18/91" +#endif /* LIBC_SCCS and not lint */ + +/* + * modf(value, iptr): return fractional part of value, and stores the + * integral part into iptr (a pointer to double). + * + * Written by Sean Eric Fagan (sef@kithrup.COM) + * Sun Mar 11 20:27:30 PST 1990 + */ + +/* With CHOP mode on, frndint behaves as TRUNC does.  Useful. */ +.text +.globl _modf +.type _modf,@function +_modf: +	pushl %ebp +	movl %esp,%ebp +	subl $16,%esp +	fnstcw -12(%ebp) +	movw -12(%ebp),%dx +	orw $3072,%dx +	movw %dx,-16(%ebp) +	fldcw -16(%ebp) +	fldl 8(%ebp) +	frndint +	fstpl -8(%ebp) +	fldcw -12(%ebp) +	movl 16(%ebp),%eax +	movl -8(%ebp),%edx +	movl -4(%ebp),%ecx +	movl %edx,(%eax) +	movl %ecx,4(%eax) +	fldl 8(%ebp) +	fsubl -8(%ebp) +	jmp L1 +L1: +	leave +	ret diff --git a/lib/libc/i386/gen/setjmp.S b/lib/libc/i386/gen/setjmp.S new file mode 100644 index 000000000000..d9fc66e6f991 --- /dev/null +++ b/lib/libc/i386/gen/setjmp.S @@ -0,0 +1,91 @@ +/*- + * 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. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +	.asciz "@(#)setjmp.s	5.1 (Berkeley) 4/23/90" +	.align	2,0x90 +#endif /* LIBC_SCCS and not lint */ + +/* + * C library -- _setjmp, _longjmp + * + *	longjmp(a,v) + * will generate a "return(v)" from the last call to + *	setjmp(a) + * by restoring registers from the environment 'a'. + * The previous signal state is restored. + */ + +#include "DEFS.h" +#include "SYS.h" + +ENTRY(setjmp) +	pushl	$0 +	call	PIC_PLT(_sigblock) +	popl	%edx +	movl	4(%esp),%ecx  +	movl	0(%esp),%edx +	movl	%edx, 0(%ecx) +	movl	%ebx, 4(%ecx) +	movl	%esp, 8(%ecx) +	movl	%ebp,12(%ecx) +	movl	%esi,16(%ecx) +	movl	%edi,20(%ecx) +	movl	%eax,24(%ecx) +	fnstcw	28(%ecx) +	xorl	%eax,%eax +	ret + +ENTRY(longjmp) +	movl	4(%esp),%edx +	pushl	24(%edx) +	call	PIC_PLT(_sigsetmask)	/* XXX this is not reentrant */ +	popl	%eax +	movl	4(%esp),%edx +	movl	8(%esp),%eax +	movl	0(%edx),%ecx +	movl	4(%edx),%ebx +	movl	8(%edx),%esp +	movl	12(%edx),%ebp +	movl	16(%edx),%esi +	movl	20(%edx),%edi +	fninit +	fldcw	28(%edx) +	testl	%eax,%eax +	jnz	1f +	incl	%eax +1:	movl	%ecx,0(%esp) +	ret diff --git a/lib/libc/i386/gen/sigsetjmp.S b/lib/libc/i386/gen/sigsetjmp.S new file mode 100644 index 000000000000..6c243869daad --- /dev/null +++ b/lib/libc/i386/gen/sigsetjmp.S @@ -0,0 +1,89 @@ +/*- + * 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: @(#)setjmp.s	5.1 (Berkeley) 4/23/90" + *	$Id: sigsetjmp.S,v 1.1 1993/12/05 13:01:05 ats Exp $ + */ + +#if defined(LIBC_SCCS) && !defined(lint) +	.text +	.asciz "$Id: sigsetjmp.S,v 1.1 1993/12/05 13:01:05 ats Exp $" +#endif /* LIBC_SCCS and not lint */ + +#include "DEFS.h" +#include "SYS.h" + +ENTRY(sigsetjmp) +	movl	8(%esp),%eax +	movl	4(%esp),%ecx  +	movl	%eax,24(%ecx) +	testl	%eax,%eax +	jz	1f +	pushl	$0 +	call	PIC_PLT(_sigblock) +	addl	$4,%esp +	movl	4(%esp),%ecx  +	movl	%eax,28(%ecx) +1:	movl	0(%esp),%edx +	movl	%edx, 0(%ecx) +	movl	%ebx, 4(%ecx) +	movl	%esp, 8(%ecx) +	movl	%ebp,12(%ecx) +	movl	%esi,16(%ecx) +	movl	%edi,20(%ecx) +	xorl	%eax,%eax +	ret + +ENTRY(siglongjmp) +	movl	4(%esp),%edx +	cmpl	$0,24(%edx) +	jz	1f +	pushl	28(%edx) +	call	PIC_PLT(_sigsetmask) +	addl	$4,%esp +1:	movl	4(%esp),%edx +	movl	8(%esp),%eax +	movl	0(%edx),%ecx +	movl	4(%edx),%ebx +	movl	8(%edx),%esp +	movl	12(%edx),%ebp +	movl	16(%edx),%esi +	movl	20(%edx),%edi +	testl	%eax,%eax +	jnz	2f +	incl	%eax +2:	movl	%ecx,0(%esp) +	ret diff --git a/lib/libc/i386/gen/udivsi3.S b/lib/libc/i386/gen/udivsi3.S new file mode 100644 index 000000000000..f05e004b10c6 --- /dev/null +++ b/lib/libc/i386/gen/udivsi3.S @@ -0,0 +1,47 @@ +/*- + * 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. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +	.asciz "@(#)udivsi3.s	5.1 (Berkeley) 5/15/90" +#endif /* LIBC_SCCS and not lint */ + +	.globl ___udivsi3 +	.type ___udivsi3,@function +___udivsi3: +	movl 4(%esp),%eax +	xorl %edx,%edx +	divl 8(%esp) +	ret diff --git a/lib/libc/i386/net/Makefile.inc b/lib/libc/i386/net/Makefile.inc index 81a6c91c747a..c848c8219b33 100644 --- a/lib/libc/i386/net/Makefile.inc +++ b/lib/libc/i386/net/Makefile.inc @@ -1,3 +1,3 @@  #	@(#)Makefile.inc	8.1 (Berkeley) 6/4/93 -SRCS+=	htonl.s htons.s ntohl.s ntohs.s +SRCS+=	htonl.S htons.S ntohl.S ntohs.S diff --git a/lib/libc/i386/net/htonl.S b/lib/libc/i386/net/htonl.S new file mode 100644 index 000000000000..a65e3f086412 --- /dev/null +++ b/lib/libc/i386/net/htonl.S @@ -0,0 +1,50 @@ +/*- + * 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. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +	.asciz "@(#)htonl.s	5.3 (Berkeley) 12/17/90" +#endif /* LIBC_SCCS and not lint */ + +/* netorder = htonl(hostorder) */ + +#include "DEFS.h" + +ENTRY(htonl) +	movl	4(%esp),%eax +	xchgb	%al,%ah +	roll	$16,%eax +	xchgb	%al,%ah +	ret diff --git a/lib/libc/i386/net/htons.S b/lib/libc/i386/net/htons.S new file mode 100644 index 000000000000..6b3fbb05a6e5 --- /dev/null +++ b/lib/libc/i386/net/htons.S @@ -0,0 +1,48 @@ +/*- + * 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. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +	.asciz "@(#)htons.s	5.2 (Berkeley) 12/17/90" +#endif /* LIBC_SCCS and not lint */ + +/* netorder = htons(hostorder) */ + +#include "DEFS.h" + +ENTRY(htons) +	movzwl	4(%esp),%eax +	xchgb	%al,%ah +	ret diff --git a/lib/libc/i386/net/ntohl.S b/lib/libc/i386/net/ntohl.S new file mode 100644 index 000000000000..5748f9ec8e97 --- /dev/null +++ b/lib/libc/i386/net/ntohl.S @@ -0,0 +1,50 @@ +/*- + * 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. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +	.asciz "@(#)ntohl.s	5.2 (Berkeley) 12/17/90" +#endif /* LIBC_SCCS and not lint */ + +/* hostorder = ntohl(netorder) */ + +#include "DEFS.h" + +ENTRY(ntohl) +	movl	4(%esp),%eax +	xchgb	%al,%ah +	roll	$16,%eax +	xchgb	%al,%ah +	ret diff --git a/lib/libc/i386/net/ntohs.S b/lib/libc/i386/net/ntohs.S new file mode 100644 index 000000000000..084c8620bd87 --- /dev/null +++ b/lib/libc/i386/net/ntohs.S @@ -0,0 +1,48 @@ +/*- + * 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. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +	.asciz "@(#)ntohs.s	5.2 (Berkeley) 12/17/90" +#endif /* LIBC_SCCS and not lint */ + +/* hostorder = ntohs(netorder) */ + +#include "DEFS.h" + +ENTRY(ntohs) +	movzwl	4(%esp),%eax +	xchgb	%al,%ah +	ret diff --git a/lib/libc/i386/stdlib/Makefile.inc b/lib/libc/i386/stdlib/Makefile.inc index 37d503771850..6a1911b9c77e 100644 --- a/lib/libc/i386/stdlib/Makefile.inc +++ b/lib/libc/i386/stdlib/Makefile.inc @@ -1,3 +1,3 @@  #	@(#)Makefile.inc	8.1 (Berkeley) 6/4/93 -SRCS+=	abs.s +SRCS+=	abs.S diff --git a/lib/libc/i386/stdlib/abs.S b/lib/libc/i386/stdlib/abs.S new file mode 100644 index 000000000000..3122fcb84f6f --- /dev/null +++ b/lib/libc/i386/stdlib/abs.S @@ -0,0 +1,49 @@ +/*- + * 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. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +	.text +	.asciz "@(#)abs.s	5.2 (Berkeley) 12/17/90" +#endif /* LIBC_SCCS and not lint */ + +#include "DEFS.h" + +ENTRY(abs) +	movl	4(%esp),%eax +	cmpl	$0,%eax +	jge	1f +	negl	%eax +1:	ret diff --git a/lib/libc/i386/stdlib/div.S b/lib/libc/i386/stdlib/div.S new file mode 100644 index 000000000000..b4f89d280955 --- /dev/null +++ b/lib/libc/i386/stdlib/div.S @@ -0,0 +1,47 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software withough specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: div.S,v 1.1 1993/12/04 21:46:15 ats Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +	.text +        .asciz "$Id: div.S,v 1.1 1993/12/04 21:46:15 ats Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +ENTRY(div) +        movl    4(%esp),%eax +        movl    8(%esp),%ecx +        cdq +        idiv    %ecx +        movl    %eax,4(%esp) +        movl    %edx,8(%esp) +        ret diff --git a/lib/libc/i386/stdlib/labs.S b/lib/libc/i386/stdlib/labs.S new file mode 100644 index 000000000000..b7a1c5dceebb --- /dev/null +++ b/lib/libc/i386/stdlib/labs.S @@ -0,0 +1,49 @@ +/*- + * 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. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +	.text +	.asciz "@(#)abs.s	5.2 (Berkeley) 12/17/90" +#endif /* LIBC_SCCS and not lint */ + +#include "DEFS.h" + +ENTRY(labs) +	movl	4(%esp),%eax +	cmpl	$0,%eax +	jge	1f +	negl	%eax +1:	ret diff --git a/lib/libc/i386/stdlib/ldiv.S b/lib/libc/i386/stdlib/ldiv.S new file mode 100644 index 000000000000..de7bb948ab4c --- /dev/null +++ b/lib/libc/i386/stdlib/ldiv.S @@ -0,0 +1,47 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software withough specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: ldiv.S,v 1.1 1993/12/04 21:46:17 ats Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +	.text +        .asciz "$Id: ldiv.S,v 1.1 1993/12/04 21:46:17 ats Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +ENTRY(ldiv) +        movl    4(%esp),%eax +        movl    8(%esp),%ecx +        cdq +        idiv    %ecx +        movl    %eax,4(%esp) +        movl    %edx,8(%esp) +        ret diff --git a/lib/libc/i386/string/Makefile.inc b/lib/libc/i386/string/Makefile.inc index c36af7422cb6..506e5fe6976d 100644 --- a/lib/libc/i386/string/Makefile.inc +++ b/lib/libc/i386/string/Makefile.inc @@ -1,5 +1,7 @@  #	@(#)Makefile.inc	8.1 (Berkeley) 6/4/93 -SRCS+=	bcmp.c bcopy.c bzero.s ffs.c index.c memchr.c memcmp.c memset.c \ -	rindex.c strcat.c strcmp.c strcpy.c strcspn.c strlen.c strncat.c \ -	strncmp.c strncpy.c strpbrk.c strsep.c strspn.c strstr.c +SRCS+=	bcmp.S bcopy.S bzero.S ffs.S index.S memchr.S memcmp.S \ +	memmove.S memset.S \ +	rindex.S strcat.S strchr.S strcmp.S strcpy.S strcspn.c \ +	strlen.S strncat.c strncmp.S strncpy.c strpbrk.c strsep.c \ +	strspn.c strrchr.S strstr.c diff --git a/lib/libc/i386/string/bcmp.S b/lib/libc/i386/string/bcmp.S new file mode 100644 index 000000000000..d19922498d88 --- /dev/null +++ b/lib/libc/i386/string/bcmp.S @@ -0,0 +1,69 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software without specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: bcmp.S,v 1.2 1994/03/31 14:10:57 davidg Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: bcmp.S,v 1.2 1994/03/31 14:10:57 davidg Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +/* + * bcmp (void *b1, void *b2, size_t len) + * + * Written by: + *	J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +ENTRY(bcmp) +	pushl	%edi +	pushl	%esi +	movl	12(%esp),%edi +	movl	16(%esp),%esi +	xorl	%eax,%eax		/* clear return value */ +	cld				/* set compare direction forward */ + +	movl	20(%esp),%ecx		/* compare by words */ +	shrl	$2,%ecx +	repe +	cmpsl +	jne	L1 + +	movl	20(%esp),%ecx		/* compare remainder by bytes */ +	andl	$3,%ecx +	repe +	cmpsb +	je	L2 + +L1:	incl	%eax +L2:	popl	%esi +	popl	%edi +	ret diff --git a/lib/libc/i386/string/bcopy.S b/lib/libc/i386/string/bcopy.S new file mode 100644 index 000000000000..b68cdf3c4805 --- /dev/null +++ b/lib/libc/i386/string/bcopy.S @@ -0,0 +1,86 @@ +/*- + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * + * 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. + * + *	$Id: bcopy.S,v 1.1 1993/12/05 13:01:41 ats Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +	.asciz "$Id: bcopy.S,v 1.1 1993/12/05 13:01:41 ats Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +	/* +	 * (ov)bcopy (src,dst,cnt) +	 *  ws@tools.de     (Wolfgang Solfrank, TooLs GmbH) +49-228-985800 +	 */ + +ENTRY(bcopy) +	pushl	%esi +	pushl	%edi +	movl	12(%esp),%esi +	movl	16(%esp),%edi +	movl	20(%esp),%ecx +	cmpl	%esi,%edi	/* potentially overlapping? */ +	jnb	1f +	cld			/* nope, copy forwards. */ +	shrl	$2,%ecx		/* copy by words */ +	rep +	movsl +	movl	20(%esp),%ecx +	andl	$3,%ecx		/* any bytes left? */ +	rep +	movsb +	popl	%edi +	popl	%esi +	ret +1: +	addl	%ecx,%edi	/* copy backwards. */ +	addl	%ecx,%esi +	std +	andl	$3,%ecx		/* any fractional bytes? */ +	decl	%edi +	decl	%esi +	rep +	movsb +	movl	20(%esp),%ecx	/* copy remainder by words */ +	shrl	$2,%ecx +	subl	$3,%esi +	subl	$3,%edi +	rep +	movsl +	popl	%edi +	popl	%esi +	cld +	ret diff --git a/lib/libc/i386/string/bzero.S b/lib/libc/i386/string/bzero.S new file mode 100644 index 000000000000..7e0dcdc3c785 --- /dev/null +++ b/lib/libc/i386/string/bzero.S @@ -0,0 +1,86 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software withough specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: bzero.S,v 1.1 1993/12/05 13:01:42 ats Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: bzero.S,v 1.1 1993/12/05 13:01:42 ats Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +/* + * bzero (void *b, size_t len) + *	write len zero bytes to the string b. + * + * Written by: + *	J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +ENTRY(bzero) +	pushl	%edi +	pushl	%ebx +	movl	12(%esp),%edi +	movl	16(%esp),%ecx + +	cld				/* set fill direction forward */ +	xorl	%eax,%eax		/* set fill data to 0 */ + +	/* +	 * if the string is too short, it's really not worth the overhead +	 * of aligning to word boundries, etc.  So we jump to a plain  +	 * unaligned set. +	 */ +	cmpl	$0x0f,%ecx +	jle	L1 + +	movl	%edi,%edx		/* compute misalignment */ +	negl	%edx +	andl	$3,%edx +	movl	%ecx,%ebx +	subl	%edx,%ebx + +	movl	%edx,%ecx		/* zero until word aligned */ +	rep +	stosb + +	movl	%ebx,%ecx		/* zero by words */ +	shrl	$2,%ecx +	rep +	stosl + +	movl	%ebx,%ecx +	andl	$3,%ecx			/* zero remainder by bytes */ +L1:	rep +	stosb + +	popl	%ebx +	popl	%edi +	ret diff --git a/lib/libc/i386/string/ffs.S b/lib/libc/i386/string/ffs.S new file mode 100644 index 000000000000..42b635768bec --- /dev/null +++ b/lib/libc/i386/string/ffs.S @@ -0,0 +1,58 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software withough specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: ffs.S,v 1.1 1993/12/05 13:01:43 ats Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: ffs.S,v 1.1 1993/12/05 13:01:43 ats Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +/* + * ffs(value) + *	finds the first bit set in value and returns the index of  + *	that bit.  Bits are numbered starting from 1, starting at the + *	rightmost bit.  A return value of 0 means that the argument + *	was zero. + * + * Written by: + *	J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +ENTRY(ffs) +	bsfl	4(%esp),%eax +	jz	L1	 		/* ZF is set if all bits are 0 */ +	incl	%eax			/* bits numbered from 1, not 0 */ +	ret + +	.align 2 +L1:	xorl	%eax,%eax		/* clear result */ +	ret diff --git a/lib/libc/i386/string/index.S b/lib/libc/i386/string/index.S new file mode 100644 index 000000000000..1ac847341fe6 --- /dev/null +++ b/lib/libc/i386/string/index.S @@ -0,0 +1,68 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software withough specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: index.S,v 1.1 1993/12/05 13:01:46 ats Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: index.S,v 1.1 1993/12/05 13:01:46 ats Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +/* + * index(s, c) + *	return a pointer to the first occurance of the character c in + *	string s, or NULL if c does not occur in the string. + * + * %edx - pointer iterating through string + * %eax - pointer to first occurance of 'c' + * %cl  - character we're comparing against + * %bl  - character at %edx + * + * Written by: + *	J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +ENTRY(index) +	pushl	%ebx +	movl	8(%esp),%eax +	movb	12(%esp),%cl +	.align 2,0x90 +L1: +	movb	(%eax),%bl +	cmpb	%bl,%cl			/* found char??? */ +	je 	L2 +	incl	%eax +	testb	%bl,%bl			/* null terminator??? */ +	jne	L1 +	xorl	%eax,%eax +L2: +	popl	%ebx +	ret diff --git a/lib/libc/i386/string/memchr.S b/lib/libc/i386/string/memchr.S new file mode 100644 index 000000000000..5ff0a34dc1ee --- /dev/null +++ b/lib/libc/i386/string/memchr.S @@ -0,0 +1,63 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software withough specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: memchr.S,v 1.1 1993/12/05 13:01:47 ats Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: memchr.S,v 1.1 1993/12/05 13:01:47 ats Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +/* + * memchr (b, c, len) + *	locates the first occurance of c in string b. + * + * Written by: + *	J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +ENTRY(memchr) +	pushl	%edi +	movl	8(%esp),%edi		/* string address */ +	movl	12(%esp),%eax		/* set character to search for */ +	movl	16(%esp),%ecx		/* set length of search */ +	testl	%eax,%eax		/* clear Z flag, for len == 0 */ +	cld				/* set search forward */ +	repne				/* search! */ +	scasb +	jnz	L1			/* scan failed, return null */ +	leal	-1(%edi),%eax		/* adjust result of scan */ +	popl	%edi +	ret +	.align 2,0x90 +L1:	xorl	%eax,%eax +	popl	%edi +	ret diff --git a/lib/libc/i386/string/memcmp.S b/lib/libc/i386/string/memcmp.S new file mode 100644 index 000000000000..5e74a7373235 --- /dev/null +++ b/lib/libc/i386/string/memcmp.S @@ -0,0 +1,80 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software without specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: memcmp.S,v 1.3 1994/03/31 14:10:59 davidg Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: memcmp.S,v 1.3 1994/03/31 14:10:59 davidg Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +/* + * memcmp (void *b1, void *b2, size_t len) + * + * Written by: + *	J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +ENTRY(memcmp) +	pushl	%edi +	pushl	%esi +	movl	12(%esp),%edi +	movl	16(%esp),%esi +	cld				/* set compare direction forward */ + +	movl	20(%esp),%ecx		/* compare by words */ +	shrl	$2,%ecx +	repe +	cmpsl +	jne	L5			/* do we match so far? */ + +	movl	20(%esp),%ecx		/* compare remainder by bytes */ +	andl	$3,%ecx +	repe +	cmpsb +	jne	L6			/* do we match? */ + +	xorl	%eax,%eax		/* we match, return zero	*/ +	popl	%esi +	popl	%edi +	ret + +L5:	movl	$4,%ecx			/* We know that one of the next	*/ +	subl	%ecx,%edi		/* four pairs of bytes do not	*/ +	subl	%ecx,%esi		/* match.			*/ +	repe +	cmpsb +L6:	movzbl  -1(%edi),%eax		/* Perform unsigned comparison	*/ +        movzbl  -1(%esi),%edx +        subl    %edx,%eax +	popl	%esi +	popl	%edi +	ret diff --git a/lib/libc/i386/string/memmove.S b/lib/libc/i386/string/memmove.S new file mode 100644 index 000000000000..7eeec5bd8c21 --- /dev/null +++ b/lib/libc/i386/string/memmove.S @@ -0,0 +1,89 @@ +/*- + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * + * 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. + * + *	$Id: memmove.S,v 1.2 1994/03/31 14:11:00 davidg Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: memmove.S,v 1.2 1994/03/31 14:11:00 davidg Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +	/* +	 * (ov)bcopy (src,dst,cnt) +	 *  ws@tools.de     (Wolfgang Solfrank, TooLs GmbH) +49-228-985800 +	 */ + +ALTENTRY(memcpy) +ENTRY(memmove) +	pushl	%esi +	pushl	%edi +	movl	12(%esp),%edi +	movl	16(%esp),%esi +	movl	20(%esp),%ecx +	cmpl	%esi,%edi	/* potentially overlapping? */ +	jnb	1f +	cld			/* nope, copy forwards. */ +	shrl	$2,%ecx		/* copy by words */ +	rep +	movsl +	movl	20(%esp),%ecx +	andl	$3,%ecx		/* any bytes left? */ +	rep +	movsb +	movl	12(%esp),%eax +	popl	%edi +	popl	%esi +	ret +1: +	addl	%ecx,%edi	/* copy backwards. */ +	addl	%ecx,%esi +	std +	andl	$3,%ecx		/* any fractional bytes? */ +	decl	%edi +	decl	%esi +	rep +	movsb +	movl	20(%esp),%ecx	/* copy remainder by words */ +	shrl	$2,%ecx +	subl	$3,%esi +	subl	$3,%edi +	rep +	movsl +	movl	12(%esp),%eax +	popl	%edi +	popl	%esi +	cld +	ret diff --git a/lib/libc/i386/string/memset.S b/lib/libc/i386/string/memset.S new file mode 100644 index 000000000000..b7fc069da3c5 --- /dev/null +++ b/lib/libc/i386/string/memset.S @@ -0,0 +1,94 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software without specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: memset.S,v 1.2 1994/03/31 14:11:01 davidg Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: memset.S,v 1.2 1994/03/31 14:11:01 davidg Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +/* + * memset(void *b, int c, size_t len) + *	write len bytes of value c (converted to an unsigned char) to  + *	the string b. + * + * Written by: + *	J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +ENTRY(memset) +	pushl	%edi +	pushl	%ebx +	movl	12(%esp),%edi +	movzbl	16(%esp),%eax		/* unsigned char, zero extend */ +	movl	20(%esp),%ecx +	pushl	%edi			/* push address of buffer */ + +	cld				/* set fill direction forward */ + +	/* +	 * if the string is too short, it's really not worth the overhead +	 * of aligning to word boundries, etc.  So we jump to a plain +	 * unaligned set. +	 */ +	cmpl	$0x0f,%ecx +	jle	L1 + +	movb	%al,%ah			/* copy char to all bytes in word */ +	movl	%eax,%edx +	sall	$16,%eax +	orl	%edx,%eax + +	movl	%edi,%edx		/* compute misalignment */ +	negl	%edx +	andl	$3,%edx +	movl	%ecx,%ebx +	subl	%edx,%ebx + +	movl	%edx,%ecx		/* set until word aligned */ +	rep +	stosb + +	movl	%ebx,%ecx +	shrl	$2,%ecx			/* set by words */ +	rep +	stosl + +	movl	%ebx,%ecx		/* set remainder by bytes */ +	andl	$3,%ecx +L1:	rep +	stosb + +	popl	%eax			/* pop address of buffer */ +	popl	%ebx +	popl	%edi +	ret diff --git a/lib/libc/i386/string/rindex.S b/lib/libc/i386/string/rindex.S new file mode 100644 index 000000000000..3e95f5f0b853 --- /dev/null +++ b/lib/libc/i386/string/rindex.S @@ -0,0 +1,69 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software withough specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: rindex.S,v 1.1 1993/12/05 13:01:55 ats Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: rindex.S,v 1.1 1993/12/05 13:01:55 ats Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +/* + * rindex(s, c) + *	return a pointer to the last occurance of the character c in + *	string s, or NULL if c does not occur in the string. + * + * %edx - pointer iterating through string + * %eax - pointer to last occurance of 'c' + * %cl  - character we're comparing against + * %bl  - character at %edx + * + * Written by: + *	J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ +  +ENTRY(rindex) +	pushl	%ebx +	movl	8(%esp),%edx +	movb	12(%esp),%cl +	xorl	%eax,%eax		/* init pointer to null */ +	.align 2,0x90 +L1: +	movb	(%edx),%bl +	cmpb	%bl,%cl +	jne	L2 +	movl	%edx,%eax +L2:	 +	incl	%edx +	testb	%bl,%bl			/* null terminator??? */ +	jne	L1 +	popl	%ebx +	ret diff --git a/lib/libc/i386/string/strcat.S b/lib/libc/i386/string/strcat.S new file mode 100644 index 000000000000..5bb6fc4074c2 --- /dev/null +++ b/lib/libc/i386/string/strcat.S @@ -0,0 +1,105 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software withough specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: strcat.S,v 1.1 1993/12/05 13:01:56 ats Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: strcat.S,v 1.1 1993/12/05 13:01:56 ats Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +/* + * strcat(s, append) + *	append a copy of the null-terminated string "append" to the end + *	of the null-terminated string s, then add a terminating `\0'. + * + * Written by: + *	J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +/* + * I've unrolled the loop eight times: large enough to make a + * significant difference, and small enough not to totally trash the + * cashe. + */ + +ENTRY(strcat) +	pushl	%edi			/* save edi */ +	movl	8(%esp),%edi		/* dst address */ +	movl	12(%esp),%edx		/* src address */ +	pushl	%edi			/* push destination address */ + +	cld				/* set search forward */ +	xorl	%eax,%eax		/* set search for null terminator */ +	movl	$-1,%ecx		/* set search for lots of characters */ +	repne				/* search! */ +	scasb + +	leal	-1(%edi),%ecx		/* correct dst address */ + +	.align 2,0x90 +L1:	movb	(%edx),%al		/* unroll loop, but not too much */ +	movb	%al,(%ecx) +	testb	%al,%al +	je	L2 +	movb	1(%edx),%al +	movb	%al,1(%ecx) +	testb	%al,%al +	je	L2 +	movb	2(%edx),%al +	movb	%al,2(%ecx) +	testb	%al,%al +	je	L2 +	movb	3(%edx),%al +	movb	%al,3(%ecx) +	testb	%al,%al +	je	L2 +	movb	4(%edx),%al +	movb	%al,4(%ecx) +	testb	%al,%al +	je	L2 +	movb	5(%edx),%al +	movb	%al,5(%ecx) +	testb	%al,%al +	je	L2 +	movb	6(%edx),%al +	movb	%al,6(%ecx) +	testb	%al,%al +	je	L2 +	movb	7(%edx),%al +	movb	%al,7(%ecx) +	addl	$8,%edx +	addl	$8,%ecx +	testb	%al,%al +	jne	L1 +L2:	popl	%eax			/* pop destination address */ +	popl	%edi			/* restore edi */ +	ret diff --git a/lib/libc/i386/string/strchr.S b/lib/libc/i386/string/strchr.S new file mode 100644 index 000000000000..1b44b2824395 --- /dev/null +++ b/lib/libc/i386/string/strchr.S @@ -0,0 +1,68 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software withough specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: strchr.S,v 1.1 1993/12/05 13:01:56 ats Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: strchr.S,v 1.1 1993/12/05 13:01:56 ats Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +/* + * strchr(s, c) + *	return a pointer to the first occurance of the character c in + *	string s, or NULL if c does not occur in the string. + * + * %edx - pointer iterating through string + * %eax - pointer to first occurance of 'c' + * %cl  - character we're comparing against + * %bl  - character at %edx + * + * Written by: + *	J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +ENTRY(strchr) +	pushl	%ebx +	movl	8(%esp),%eax +	movb	12(%esp),%cl +	.align 2,0x90 +L1: +	movb	(%eax),%bl +	cmpb	%bl,%cl			/* found char??? */ +	je 	L2 +	incl	%eax +	testb	%bl,%bl			/* null terminator??? */ +	jne	L1 +	xorl	%eax,%eax +L2: +	popl	%ebx +	ret diff --git a/lib/libc/i386/string/strcmp.S b/lib/libc/i386/string/strcmp.S new file mode 100644 index 000000000000..bdc4585aed2f --- /dev/null +++ b/lib/libc/i386/string/strcmp.S @@ -0,0 +1,124 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software withough specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: strcmp.S,v 1.2 1994/03/04 15:50:28 ache Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: strcmp.S,v 1.2 1994/03/04 15:50:28 ache Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +/* + * strcmp(s1, s2) + *	return an integer greater than, equal to, or less than 0,  + *	according as string s1 is greater than, equal to, or less + *	than the string s2.   + * + * %eax - pointer to s1 + * %edx - pointer to s2 + * + * Written by: + *	J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +/* + * I've unrolled the loop eight times: large enough to make a + * significant difference, and small enough not to totally trash the + * cashe. + */ + +ENTRY(strcmp) +	movl	0x04(%esp),%eax	 +	movl	0x08(%esp),%edx	 +	jmp	L2			/* Jump into the loop! */ + +	.align	2,0x90 +L1:	incl	%eax +	incl	%edx			 +L2:	movb	(%eax),%cl +	testb	%cl,%cl +	je	L3 +	cmpb	%cl,(%edx) +	jne	L3 +	incl	%eax +	incl	%edx +	movb	(%eax),%cl +	testb	%cl,%cl +	je	L3 +	cmpb	%cl,(%edx) +	jne	L3 +	incl	%eax +	incl	%edx +	movb	(%eax),%cl +	testb	%cl,%cl +	je	L3 +	cmpb	%cl,(%edx) +	jne	L3 +	incl	%eax +	incl	%edx +	movb	(%eax),%cl +	testb	%cl,%cl +	je	L3 +	cmpb	%cl,(%edx) +	jne	L3 +	incl	%eax +	incl	%edx +	movb	(%eax),%cl +	testb	%cl,%cl +	je	L3 +	cmpb	%cl,(%edx) +	jne	L3 +	incl	%eax +	incl	%edx +	movb	(%eax),%cl +	testb	%cl,%cl +	je	L3 +	cmpb	%cl,(%edx) +	jne	L3 +	incl	%eax +	incl	%edx +	movb	(%eax),%cl +	testb	%cl,%cl +	je	L3 +	cmpb	%cl,(%edx) +	jne	L3 +	incl	%eax +	incl	%edx +	movb	(%eax),%cl +	testb	%cl,%cl +	je	L3 +	cmpb	%cl,(%edx) +	je	L1 +	.align 2, 0x90 +L3:     movzbl  (%eax),%eax             /* unsigned comparison */ +	movzbl  (%edx),%edx +	subl	%edx,%eax +	ret diff --git a/lib/libc/i386/string/strcpy.S b/lib/libc/i386/string/strcpy.S new file mode 100644 index 000000000000..07983f9c2539 --- /dev/null +++ b/lib/libc/i386/string/strcpy.S @@ -0,0 +1,94 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software withough specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: strcpy.S,v 1.1 1993/12/05 13:01:58 ats Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: strcpy.S,v 1.1 1993/12/05 13:01:58 ats Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +/* + * strcpy (dst, src) + *	copy the string src to dst. + * + * Written by: + *	J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +/* + * I've unrolled the loop eight times: large enough to make a + * significant difference, and small enough not to totally trash the + * cashe. + */ + +ENTRY(strcpy) +	movl	4(%esp),%ecx		/* dst address */ +	movl	8(%esp),%edx		/* src address */ +	pushl	%ecx			/* push dst address */ + +	.align 2,0x90 +L1:	movb	(%edx),%al		/* unroll loop, but not too much */ +	movb	%al,(%ecx) +	testb	%al,%al +	je	L2 +	movb	1(%edx),%al +	movb	%al,1(%ecx) +	testb	%al,%al +	je	L2 +	movb	2(%edx),%al +	movb	%al,2(%ecx) +	testb	%al,%al +	je	L2 +	movb	3(%edx),%al +	movb	%al,3(%ecx) +	testb	%al,%al +	je	L2 +	movb	4(%edx),%al +	movb	%al,4(%ecx) +	testb	%al,%al +	je	L2 +	movb	5(%edx),%al +	movb	%al,5(%ecx) +	testb	%al,%al +	je	L2 +	movb	6(%edx),%al +	movb	%al,6(%ecx) +	testb	%al,%al +	je	L2 +	movb	7(%edx),%al +	movb	%al,7(%ecx) +	addl	$8,%edx +	addl	$8,%ecx +	testb	%al,%al +	jne	L1 +L2:	popl	%eax			/* pop dst address */ +	ret diff --git a/lib/libc/i386/string/strlen.S b/lib/libc/i386/string/strlen.S new file mode 100644 index 000000000000..3729fa52fefd --- /dev/null +++ b/lib/libc/i386/string/strlen.S @@ -0,0 +1,58 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software withough specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: strlen.S,v 1.1 1993/12/05 13:01:59 ats Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: strlen.S,v 1.1 1993/12/05 13:01:59 ats Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +/* + * strlen (s) + *	compute the length of the string s. + * + * Written by: + *	J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +ENTRY(strlen) +	pushl	%edi +	movl	8(%esp),%edi		/* string address */ +	cld				/* set search forward */ +	xorl	%eax,%eax		/* set search for null terminator */ +	movl	$-1,%ecx		/* set search for lots of characters */ +	repne				/* search! */ +	scasb +	notl	%ecx			/* get length by taking complement */ +	leal	-1(%ecx),%eax		/* and subtracting one */ +	popl	%edi +	ret diff --git a/lib/libc/i386/string/strncmp.S b/lib/libc/i386/string/strncmp.S new file mode 100644 index 000000000000..a4df8025bfb5 --- /dev/null +++ b/lib/libc/i386/string/strncmp.S @@ -0,0 +1,157 @@ +/* + * Copyright (c) 1993,94 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software without specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: strncmp.S,v 1.3 1994/03/31 14:11:02 davidg Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: strncmp.S,v 1.3 1994/03/31 14:11:02 davidg Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +/* + * strncmp(s1, s2, n) + *	return an integer greater than, equal to, or less than 0, + *	according as the first n characters of string s1 is greater + *	than, equal to, or less than the string s2. + * + * %eax - pointer to s1 + * %ecx - pointer to s2 + * %edx - length + * + * Written by: + *	J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +/* + * I've unrolled the loop eight times: large enough to make a + * significant difference, and small enough not to totally trash the + * cache. + */ + +ENTRY(strncmp) +	pushl	%ebx +	movl	8(%esp),%eax +	movl	12(%esp),%ecx +	movl	16(%esp),%edx +	testl	%edx,%edx +	jmp	L2			/* Jump into the loop! */ + +	.align 2,0x90 +L1:	incl	%eax +	incl	%ecx +	decl	%edx +L2:	jz	L4			/* strings are equal */ +	movb	(%eax),%bl +	testb	%bl,%bl +	jz	L3 +	cmpb	%bl,(%ecx) +	jne	L3 + +	incl	%eax +	incl	%ecx +	decl	%edx +	jz	L4 +	movb	(%eax),%bl +	testb	%bl,%bl +	jz	L3 +	cmpb	%bl,(%ecx) +	jne	L3 + +	incl	%eax +	incl	%ecx +	decl	%edx +	jz	L4 +	movb	(%eax),%bl +	testb	%bl,%bl +	jz	L3 +	cmpb	%bl,(%ecx) +	jne	L3 + +	incl	%eax +	incl	%ecx +	decl	%edx +	jz	L4 +	movb	(%eax),%bl +	testb	%bl,%bl +	jz	L3 +	cmpb	%bl,(%ecx) +	jne	L3 + +	incl	%eax +	incl	%ecx +	decl	%edx +	jz	L4 +	movb	(%eax),%bl +	testb	%bl,%bl +	jz	L3 +	cmpb	%bl,(%ecx) +	jne	L3 + +	incl	%eax +	incl	%ecx +	decl	%edx +	jz	L4 +	movb	(%eax),%bl +	testb	%bl,%bl +	jz	L3 +	cmpb	%bl,(%ecx) +	jne	L3 + +	incl	%eax +	incl	%ecx +	decl	%edx +	jz	L4 +	movb	(%eax),%bl +	testb	%bl,%bl +	jz	L3 +	cmpb	%bl,(%ecx) +	jne	L3 + +	incl	%eax +	incl	%ecx +	decl	%edx +	jz	L4 +	movb	(%eax),%bl +	testb	%bl,%bl +	jz	L3 +	cmpb	%bl,(%ecx) +	je	L1 + +	.align 2,0x90 +L3:	movzbl	(%eax),%eax		/* unsigned comparision */ +	movzbl	(%ecx),%ecx +	subl	%ecx,%eax +	popl	%ebx +	ret +	.align 2,0x90 +L4:	xorl	%eax,%eax +	popl	%ebx +	ret diff --git a/lib/libc/i386/string/strrchr.S b/lib/libc/i386/string/strrchr.S new file mode 100644 index 000000000000..ef4d776ea471 --- /dev/null +++ b/lib/libc/i386/string/strrchr.S @@ -0,0 +1,69 @@ +/* + * Copyright (c) 1993 Winning Strategies, Inc. + * All rights reserved. + * + * 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 Winning Strategies, Inc. + * 4. The name of the author may not be used to endorse or promote products + *    derived from this software withough specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + *	$Id: strrchr.S,v 1.1 1993/12/05 13:02:01 ats Exp $ + */ + +#if defined(LIBC_RCS) && !defined(lint) +        .asciz "$Id: strrchr.S,v 1.1 1993/12/05 13:02:01 ats Exp $" +#endif /* LIBC_RCS and not lint */ + +#include "DEFS.h" + +/* + * strrchr(s, c) + *	return a pointer to the last occurance of the character c in + *	string s, or NULL if c does not occur in the string. + * + * %edx - pointer iterating through string + * %eax - pointer to last occurance of 'c' + * %cl  - character we're comparing against + * %bl  - character at %edx + * + * Written by: + *	J.T. Conklin (jtc@wimsey.com), Winning Strategies, Inc. + */ + +ENTRY(strrchr) +	pushl	%ebx +	movl	8(%esp),%edx +	movb	12(%esp),%cl +	xorl	%eax,%eax		/* init pointer to null */ +	.align 2,0x90 +L1: +	movb	(%edx),%bl +	cmpb	%bl,%cl +	jne	L2 +	movl	%edx,%eax +L2:	 +	incl	%edx +	testb	%bl,%bl			/* null terminator??? */ +	jne	L1 +	popl	%ebx +	ret diff --git a/lib/libc/i386/sys/Ovfork.S b/lib/libc/i386/sys/Ovfork.S new file mode 100644 index 000000000000..181dae564286 --- /dev/null +++ b/lib/libc/i386/sys/Ovfork.S @@ -0,0 +1,80 @@ +/*- + * 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. + * + *	$Id: Ovfork.S,v 1.3 1994/02/21 05:19:08 rgrimes Exp $ + */ + +#if defined(SYSLIBC_SCCS) && !defined(lint) +	.asciz "@(#)Ovfork.s	5.1 (Berkeley) 4/23/90" +#endif /* SYSLIBC_SCCS and not lint */ + +#include "SYS.h" + +/* + * pid = vfork(); + * + * %edx == 0 in parent process, %edx == 1 in child process. + * %eax == pid of child in parent, %eax == pid of parent in child. + * + */ +	.set	vfork,66 +.globl	_vfork +.type	_vfork,@function + +_vfork: +	popl	%ecx		/* my rta into ecx */ +	movl	$vfork, %eax +	LCALL(7,0) +	jb	verror +vforkok: +	cmpl	$0,%edx		/* child process? */ +	jne	child		/* yes */ +	jmp 	parent  +.globl	_errno +verror: +#ifdef PIC +	PIC_PROLOGUE +	movl	PIC_GOT(_errno), %edx +	movl	%eax,(%edx) +	PIC_EPILOGUE +#else +	movl	%eax,_errno +#endif +	movl	$-1,%eax +	jmp	%ecx +child: +	movl	$0,%eax +parent: +	jmp	%ecx diff --git a/lib/libc/i386/sys/brk.S b/lib/libc/i386/sys/brk.S new file mode 100644 index 000000000000..e884ac267514 --- /dev/null +++ b/lib/libc/i386/sys/brk.S @@ -0,0 +1,91 @@ +/*- + * 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. + * + *	$Id: brk.S,v 1.3 1994/02/21 05:13:26 rgrimes Exp $ + */ + +#if defined(SYSLIBC_SCCS) && !defined(lint) +	.asciz "@(#)brk.s	5.2 (Berkeley) 12/17/90" +#endif /* SYSLIBC_SCCS and not lint */ + +#include "SYS.h" + +#define	SYS_brk		17 + +	.globl	curbrk +	.globl	minbrk +ENTRY(_brk) +	jmp	ok + +ENTRY(brk) +#ifdef PIC +	movl	4(%esp),%eax +	PIC_PROLOGUE +	movl	PIC_GOT(curbrk),%edx	# set up GOT addressing +	movl	PIC_GOT(minbrk),%ecx	# +	cmpl	%eax,(%ecx) +	PIC_EPILOGUE +	jl	ok +	movl	(%ecx),%eax +	movl	%eax,4(%esp) +ok: +	lea	SYS_brk,%eax +	LCALL(7,0) +	jb	err +	movl	4(%esp),%eax +	movl	%eax,(%edx) +	movl	$0,%eax +	ret +err: +	jmp	PIC_PLT(cerror) + +#else + +	movl	4(%esp),%eax +	cmpl	%eax,minbrk +	jl	ok +	movl	minbrk,%eax +	movl	%eax,4(%esp) +ok: +	lea	SYS_brk,%eax +	LCALL(7,0) +	jb	err +	movl	4(%esp),%eax +	movl	%eax,curbrk +	movl	$0,%eax +	ret +err: +	jmp	cerror +#endif diff --git a/lib/libc/i386/sys/cerror.S b/lib/libc/i386/sys/cerror.S new file mode 100644 index 000000000000..27fec0aecbb9 --- /dev/null +++ b/lib/libc/i386/sys/cerror.S @@ -0,0 +1,56 @@ +/*- + * 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. + * + *	$Id: cerror.S,v 1.2 1994/02/21 05:19:09 rgrimes Exp $ + */ + +#if defined(SYSLIBC_SCCS) && !defined(lint) +	.asciz "@(#)cerror.s	5.1 (Berkeley) 4/23/90" +#endif /* SYSLIBC_SCCS and not lint */ + +#include "SYS.h" + +	.globl	_errno +cerror: +#ifdef PIC +	PIC_PROLOGUE +	movl	PIC_GOT(_errno),%ecx +	movl	%eax,(%ecx) +	PIC_EPILOGUE +#else +	movl	%eax,_errno +#endif +	movl	$-1,%eax +	ret diff --git a/lib/libc/i386/sys/exect.S b/lib/libc/i386/sys/exect.S new file mode 100644 index 000000000000..1739760f887a --- /dev/null +++ b/lib/libc/i386/sys/exect.S @@ -0,0 +1,54 @@ +/*- + * 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. + * + *	$Id: exect.S,v 1.2 1994/02/21 05:19:10 rgrimes Exp $ + */ + +#if defined(SYSLIBC_SCCS) && !defined(lint) +	.asciz "@(#)exect.s	5.1 (Berkeley) 4/23/90" +#endif /* SYSLIBC_SCCS and not lint */ + +#include "SYS.h" +#include <machine/psl.h> + +ENTRY(exect) +	lea	SYS_execve,%eax +	pushf +	popl	%edx +	orl	$ PSL_T,%edx +	pushl	%edx +	popf +	LCALL(7,0) +	jmp	cerror		/* exect(file, argv, env); */ diff --git a/lib/libc/i386/sys/fork.S b/lib/libc/i386/sys/fork.S new file mode 100644 index 000000000000..15b7c46dfe96 --- /dev/null +++ b/lib/libc/i386/sys/fork.S @@ -0,0 +1,50 @@ +/*- + * 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. + * + *	$Id: fork.S,v 1.2 1994/02/21 05:19:11 rgrimes Exp $ + */ + +#if defined(SYSLIBC_SCCS) && !defined(lint) +	.asciz "@(#)fork.s	5.1 (Berkeley) 4/23/90" +#endif /* SYSLIBC_SCCS and not lint */ + +#include "SYS.h" + +SYSCALL(fork) +	cmpl	$0,%edx	/* parent, since %edx == 0 in parent, 1 in child */ +	je	1f +	movl	$0,%eax +1: +	ret		/* pid = fork(); */ diff --git a/lib/libc/i386/sys/mount.S b/lib/libc/i386/sys/mount.S new file mode 100644 index 000000000000..e0366db6b750 --- /dev/null +++ b/lib/libc/i386/sys/mount.S @@ -0,0 +1,47 @@ +/*- + * 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. + * + *	$Id: mount.S,v 1.2 1994/02/21 05:19:12 rgrimes Exp $ + */ + +#if defined(SYSLIBC_SCCS) && !defined(lint) +	.asciz "@(#)mount.s	5.1 (Berkeley) 4/23/90" +#endif /* SYSLIBC_SCCS and not lint */ + +#include "SYS.h" + +SYSCALL(mount) +	movl	$0,%eax +	ret diff --git a/lib/libc/i386/sys/pipe.S b/lib/libc/i386/sys/pipe.S new file mode 100644 index 000000000000..2aeae5813958 --- /dev/null +++ b/lib/libc/i386/sys/pipe.S @@ -0,0 +1,50 @@ +/*- + * 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. + * + *	$Id: pipe.S,v 1.2 1994/02/21 05:19:13 rgrimes Exp $ + */ + +#if defined(SYSLIBC_SCCS) && !defined(lint) +	.asciz "@(#)pipe.s	5.1 (Berkeley) 4/23/90" +#endif /* SYSLIBC_SCCS and not lint */ + +#include "SYS.h" + +SYSCALL(pipe) +	movl	4(%esp),%ecx +	movl	%eax,(%ecx) +	movl	%edx,4(%ecx) +	movl	$0,%eax +	ret diff --git a/lib/libc/i386/sys/ptrace.S b/lib/libc/i386/sys/ptrace.S new file mode 100644 index 000000000000..6137098fcdf5 --- /dev/null +++ b/lib/libc/i386/sys/ptrace.S @@ -0,0 +1,60 @@ +/*- + * 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. + * + *	$Id: ptrace.S,v 1.2 1994/02/21 05:19:14 rgrimes Exp $ + */ + +#if defined(SYSLIBC_SCCS) && !defined(lint) +	.asciz "@(#)ptrace.s	5.1 (Berkeley) 4/23/90" +#endif /* SYSLIBC_SCCS and not lint */ + +#include "SYS.h" + +ENTRY(ptrace) +	xorl	%eax,%eax +#ifdef PIC +        PIC_PROLOGUE +        movl    PIC_GOT(_errno),%edx +        movl    %eax,(%edx) +        PIC_EPILOGUE +#else +        movl    %eax,_errno +#endif +	lea	SYS_ptrace,%eax +	LCALL(7,0) +	jb	err +	ret +err: +	jmp	cerror diff --git a/lib/libc/i386/sys/reboot.S b/lib/libc/i386/sys/reboot.S new file mode 100644 index 000000000000..47e2f0a4b15a --- /dev/null +++ b/lib/libc/i386/sys/reboot.S @@ -0,0 +1,46 @@ +/*- + * 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. + * + *	$Id: reboot.S,v 1.2 1994/02/21 05:19:15 rgrimes Exp $ + */ + +#if defined(SYSLIBC_SCCS) && !defined(lint) +	.asciz "@(#)reboot.s	5.1 (Berkeley) 4/23/90" +#endif /* SYSLIBC_SCCS and not lint */ + +#include "SYS.h" + +SYSCALL(reboot) +	iret diff --git a/lib/libc/i386/sys/sbrk.S b/lib/libc/i386/sys/sbrk.S new file mode 100644 index 000000000000..fef35cb529c8 --- /dev/null +++ b/lib/libc/i386/sys/sbrk.S @@ -0,0 +1,89 @@ +/*- + * 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. + * + *	$Id: sbrk.S,v 1.2 1994/02/21 05:19:16 rgrimes Exp $ + */ + +#if defined(SYSLIBC_SCCS) && !defined(lint) +	.asciz "@(#)sbrk.s	5.1 (Berkeley) 4/23/90" +#endif /* SYSLIBC_SCCS and not lint */ + +#include "SYS.h" + +#define	SYS_brk		17 + +	.globl	_end +	.globl	minbrk +	.globl	curbrk + +	.data +minbrk:	.long	_end +curbrk:	.long	_end +	.text + +ENTRY(sbrk) +#ifdef PIC +	movl	4(%esp),%ecx +	PIC_PROLOGUE +	movl	PIC_GOT(curbrk),%edx +	movl	(%edx),%eax +	PIC_EPILOGUE +	addl	%eax,4(%esp) +	lea	SYS_brk,%eax +	LCALL(7,0) +	jb	err +	PIC_PROLOGUE +	movl	PIC_GOT(curbrk),%edx +	movl	(%edx),%eax +	addl	%ecx,(%edx) +	PIC_EPILOGUE +	ret +err: +	jmp	PIC_PLT(cerror) + +#else + +	movl	4(%esp),%ecx +	movl	curbrk,%eax +	addl	%eax,4(%esp) +	lea	SYS_brk,%eax +	LCALL(7,0) +	jb	err +	movl	curbrk,%eax +	addl	%ecx,curbrk +	ret +err: +	jmp	cerror +#endif diff --git a/lib/libc/i386/sys/setlogin.S b/lib/libc/i386/sys/setlogin.S new file mode 100644 index 000000000000..92d761a53577 --- /dev/null +++ b/lib/libc/i386/sys/setlogin.S @@ -0,0 +1,58 @@ +/*- + * Copyright (c) 1991 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. + * + *	$Id: setlogin.S,v 1.2 1994/02/21 05:19:17 rgrimes Exp $ + */ + +#if defined(LIBC_SCCS) && !defined(lint) +	.asciz "@(#)setlogin.s	5.2 (Berkeley) 4/12/91" +#endif /* LIBC_SCCS and not lint */ + +#include "SYS.h" + +.globl	__logname_valid		/* in getlogin() */ + +SYSCALL(setlogin) +#ifdef PIC +	PIC_PROLOGUE +	pushl	%eax +	movl	PIC_GOT(__logname_valid),%eax +	movl	$0,(%eax) +	popl	%eax +	PIC_EPILOGUE +#else +	movl	$0,__logname_valid +#endif +	ret				/* setlogin(name) */ diff --git a/lib/libc/i386/sys/sigpending.S b/lib/libc/i386/sys/sigpending.S new file mode 100644 index 000000000000..4318b6d9aabd --- /dev/null +++ b/lib/libc/i386/sys/sigpending.S @@ -0,0 +1,49 @@ +/*- + * 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. + * + *	$Id: sigpending.S,v 1.2 1994/02/21 05:19:19 rgrimes Exp $ + */ + +#if defined(SYSLIBC_SCCS) && !defined(lint) +	.asciz "@(#)sigpending.s	5.1 (Berkeley) 7/1/90" +#endif /* SYSLIBC_SCCS and not lint */ + +#include "SYS.h" + +SYSCALL(sigpending) +	movl	4(%esp),%ecx		# fetch pointer to... +	movl	%eax,(%ecx)		# store old mask +	xorl	%eax,%eax +	ret diff --git a/lib/libc/i386/sys/sigprocmask.S b/lib/libc/i386/sys/sigprocmask.S new file mode 100644 index 000000000000..ce929a03b081 --- /dev/null +++ b/lib/libc/i386/sys/sigprocmask.S @@ -0,0 +1,66 @@ +/*- + * 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. + * + *	$Id: sigprocmask.S,v 1.2 1994/02/21 05:19:20 rgrimes Exp $ + */ + +#if defined(SYSLIBC_SCCS) && !defined(lint) +	.asciz "@(#)sigprocmask.s	5.2 (Berkeley) 12/17/90" +#endif /* SYSLIBC_SCCS and not lint */ + +#include "SYS.h" + +err: +	jmp	cerror + +ENTRY(sigprocmask) +	movl	8(%esp),%ecx		# fetch new sigset pointer +	cmpl	$0,%ecx			# check new sigset pointer +	jne	1f			# if not null, indirect +/*	movl	$0,8(%esp)		# null mask pointer: block empty set */ +	movl	$1,4(%esp)		# SIG_BLOCK +	jmp	2f +1:	movl	(%ecx),%ecx		# fetch indirect  ... +	movl	%ecx,8(%esp)		# to new mask arg +2:	movl	$ SYS_sigprocmask , %eax +	LCALL(0x7,0) +	jb	err +	movl	12(%esp),%ecx		# fetch old mask requested +	cmpl	$0,%ecx			# test if old mask requested +	je	out +	movl	%eax,(%ecx)		# store old mask +out: +	xorl	%eax,%eax +	ret diff --git a/lib/libc/i386/sys/sigreturn.S b/lib/libc/i386/sys/sigreturn.S new file mode 100644 index 000000000000..b98c9508e8d8 --- /dev/null +++ b/lib/libc/i386/sys/sigreturn.S @@ -0,0 +1,56 @@ +/*- + * 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. + * + *	$Id: sigreturn.S,v 1.2 1994/02/21 05:19:21 rgrimes Exp $ + */ + +#if defined(SYSLIBC_SCCS) && !defined(lint) +	.asciz "@(#)sigreturn.s	5.2 (Berkeley) 12/17/90" +#endif /* SYSLIBC_SCCS and not lint */ + +#include "SYS.h" + +/* + * We must preserve the state of the registers as the user has set them up. + */ +#ifdef PROF +#undef ENTRY +#define	ENTRY(x) \ +	.globl _/**/x; .align 2; _/**/x:  pusha ; \ +	.data; 1:; .long 0; .text; movl $1b,%eax; call mcount; popa ; nop +#endif /* PROF */ + +SYSCALL(sigreturn) +	ret diff --git a/lib/libc/i386/sys/sigsuspend.S b/lib/libc/i386/sys/sigsuspend.S new file mode 100644 index 000000000000..1db4c1a3543c --- /dev/null +++ b/lib/libc/i386/sys/sigsuspend.S @@ -0,0 +1,54 @@ +/*- + * 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. + */ + +#if defined(SYSLIBC_SCCS) && !defined(lint) +	.asciz "@(#)sigsuspend.s	5.2 (Berkeley) 12/17/90" +#endif /* SYSLIBC_SCCS and not lint */ + +#include "SYS.h" + +err: +	jmp	cerror + +ENTRY(sigsuspend) +	movl	4(%esp),%eax		# fetch mask arg +	movl	(%eax),%eax		# indirect to mask arg +	movl	%eax,4(%esp) +	movl	$ SYS_sigsuspend ,%eax +	LCALL(0x7,0) +	jb	err +	xorl	%eax,%eax		# shouldn t happen +	ret diff --git a/lib/libc/i386/sys/syscall.S b/lib/libc/i386/sys/syscall.S new file mode 100644 index 000000000000..37d180410e0c --- /dev/null +++ b/lib/libc/i386/sys/syscall.S @@ -0,0 +1,55 @@ +/*- + * 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. + * + *	$Id: syscall.S,v 1.2 1994/02/21 05:19:22 rgrimes Exp $ + */ + +#if defined(SYSLIBC_SCCS) && !defined(lint) +	.asciz "@(#)syscall.s	5.1 (Berkeley) 4/23/90" +#endif /* SYSLIBC_SCCS and not lint */ + +#include "SYS.h" + +ENTRY(syscall) +	pop	%ecx	/* rta */ +	pop	%eax	/* syscall number */ +	push	%ecx +	LCALL(7,0) +	push	%ecx	/* need to push a word to keep stack frame intact +			   upon return; the word must be the return address. */ +	jb	1f +	ret +1: +	jmp	cerror | 
