From afe588b9d22ec8d8522d72f42c131381f766aee6 Mon Sep 17 00:00:00 2001 From: mycroft Date: Thu, 24 Feb 1994 00:41:00 +0000 Subject: [PATCH] Assembler versions of these. --- sys/lib/libkern/arch/i386/Makefile.inc | 4 +- sys/lib/libkern/arch/i386/locc.S | 47 ++++++++++++++++++++++ sys/lib/libkern/arch/i386/scanc.S | 55 ++++++++++++++++++++++++++ sys/lib/libkern/arch/i386/skpc.S | 47 ++++++++++++++++++++++ sys/lib/libkern/i386/Makefile.inc | 4 +- sys/lib/libkern/i386/locc.S | 47 ++++++++++++++++++++++ sys/lib/libkern/i386/scanc.S | 55 ++++++++++++++++++++++++++ sys/lib/libkern/i386/skpc.S | 47 ++++++++++++++++++++++ 8 files changed, 302 insertions(+), 4 deletions(-) create mode 100644 sys/lib/libkern/arch/i386/locc.S create mode 100644 sys/lib/libkern/arch/i386/scanc.S create mode 100644 sys/lib/libkern/arch/i386/skpc.S create mode 100644 sys/lib/libkern/i386/locc.S create mode 100644 sys/lib/libkern/i386/scanc.S create mode 100644 sys/lib/libkern/i386/skpc.S diff --git a/sys/lib/libkern/arch/i386/Makefile.inc b/sys/lib/libkern/arch/i386/Makefile.inc index 47ccce96bc1f..de91119739f8 100644 --- a/sys/lib/libkern/arch/i386/Makefile.inc +++ b/sys/lib/libkern/arch/i386/Makefile.inc @@ -1,6 +1,6 @@ -# $Id: Makefile.inc,v 1.4 1993/12/04 05:21:29 cgd Exp $ +# $Id: Makefile.inc,v 1.5 1994/02/24 00:41:00 mycroft Exp $ SRCS+= __main.c imax.c imin.c lmax.c lmin.c max.c min.c ulmax.c ulmin.c \ bcmp.S bzero.S ffs.S strcat.S strcmp.S strcpy.S strlen.S strncmp.c \ - strncpy.c scanc.c skpc.c locc.c htonl.S htons.S ntohl.S ntohs.S \ + strncpy.c scanc.S skpc.S locc.S htonl.S htons.S ntohl.S ntohs.S \ setjmp.S diff --git a/sys/lib/libkern/arch/i386/locc.S b/sys/lib/libkern/arch/i386/locc.S new file mode 100644 index 000000000000..fc8323cb93c4 --- /dev/null +++ b/sys/lib/libkern/arch/i386/locc.S @@ -0,0 +1,47 @@ +/* + * Copyright (c) 1994 Charles Hannum. 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 Charles Hannum. + * 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: locc.S,v 1.1 1994/02/24 00:41:03 mycroft Exp $ + */ + +#include "DEFS.h" + +ENTRY(locc) + pushl %edi + movl 16(%esp),%edi + movl 12(%esp),%ecx + movl 8(%esp),%eax + cld + repne + scasb + jne 1f + incl %ecx +1: + movl %ecx,%eax + popl %edi + ret diff --git a/sys/lib/libkern/arch/i386/scanc.S b/sys/lib/libkern/arch/i386/scanc.S new file mode 100644 index 000000000000..73541a7401aa --- /dev/null +++ b/sys/lib/libkern/arch/i386/scanc.S @@ -0,0 +1,55 @@ +/* + * Copyright (c) 1994 Charles Hannum. 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 Charles Hannum. + * 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: scanc.S,v 1.1 1994/02/24 00:41:04 mycroft Exp $ + */ + +#include "DEFS.h" + +ENTRY(scanc) + movl 4(%esp),%ecx + testl %ecx,%ecx + jz 3f + pushl %ebx + pushl %esi + movl 16(%esp),%esi + movl 20(%esp),%ebx + movb 24(%esp),%dl + cld +1: + lodsb + xlatb + andb %dl,%al + jnz 2f + loop 1b +2: + popl %esi + popl %ebx +3: + movl %ecx,%eax + ret diff --git a/sys/lib/libkern/arch/i386/skpc.S b/sys/lib/libkern/arch/i386/skpc.S new file mode 100644 index 000000000000..0db9c51206be --- /dev/null +++ b/sys/lib/libkern/arch/i386/skpc.S @@ -0,0 +1,47 @@ +/* + * Copyright (c) 1994 Charles Hannum. 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 Charles Hannum. + * 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: skpc.S,v 1.1 1994/02/24 00:41:06 mycroft Exp $ + */ + +#include "DEFS.h" + +ENTRY(skpc) + pushl %edi + movl 16(%esp),%edi + movl 12(%esp),%ecx + movl 8(%esp),%eax + cld + repe + scasb + je 1f + incl %ecx +1: + movl %ecx,%eax + popl %edi + ret diff --git a/sys/lib/libkern/i386/Makefile.inc b/sys/lib/libkern/i386/Makefile.inc index 47ccce96bc1f..de91119739f8 100644 --- a/sys/lib/libkern/i386/Makefile.inc +++ b/sys/lib/libkern/i386/Makefile.inc @@ -1,6 +1,6 @@ -# $Id: Makefile.inc,v 1.4 1993/12/04 05:21:29 cgd Exp $ +# $Id: Makefile.inc,v 1.5 1994/02/24 00:41:00 mycroft Exp $ SRCS+= __main.c imax.c imin.c lmax.c lmin.c max.c min.c ulmax.c ulmin.c \ bcmp.S bzero.S ffs.S strcat.S strcmp.S strcpy.S strlen.S strncmp.c \ - strncpy.c scanc.c skpc.c locc.c htonl.S htons.S ntohl.S ntohs.S \ + strncpy.c scanc.S skpc.S locc.S htonl.S htons.S ntohl.S ntohs.S \ setjmp.S diff --git a/sys/lib/libkern/i386/locc.S b/sys/lib/libkern/i386/locc.S new file mode 100644 index 000000000000..fc8323cb93c4 --- /dev/null +++ b/sys/lib/libkern/i386/locc.S @@ -0,0 +1,47 @@ +/* + * Copyright (c) 1994 Charles Hannum. 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 Charles Hannum. + * 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: locc.S,v 1.1 1994/02/24 00:41:03 mycroft Exp $ + */ + +#include "DEFS.h" + +ENTRY(locc) + pushl %edi + movl 16(%esp),%edi + movl 12(%esp),%ecx + movl 8(%esp),%eax + cld + repne + scasb + jne 1f + incl %ecx +1: + movl %ecx,%eax + popl %edi + ret diff --git a/sys/lib/libkern/i386/scanc.S b/sys/lib/libkern/i386/scanc.S new file mode 100644 index 000000000000..73541a7401aa --- /dev/null +++ b/sys/lib/libkern/i386/scanc.S @@ -0,0 +1,55 @@ +/* + * Copyright (c) 1994 Charles Hannum. 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 Charles Hannum. + * 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: scanc.S,v 1.1 1994/02/24 00:41:04 mycroft Exp $ + */ + +#include "DEFS.h" + +ENTRY(scanc) + movl 4(%esp),%ecx + testl %ecx,%ecx + jz 3f + pushl %ebx + pushl %esi + movl 16(%esp),%esi + movl 20(%esp),%ebx + movb 24(%esp),%dl + cld +1: + lodsb + xlatb + andb %dl,%al + jnz 2f + loop 1b +2: + popl %esi + popl %ebx +3: + movl %ecx,%eax + ret diff --git a/sys/lib/libkern/i386/skpc.S b/sys/lib/libkern/i386/skpc.S new file mode 100644 index 000000000000..0db9c51206be --- /dev/null +++ b/sys/lib/libkern/i386/skpc.S @@ -0,0 +1,47 @@ +/* + * Copyright (c) 1994 Charles Hannum. 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 Charles Hannum. + * 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: skpc.S,v 1.1 1994/02/24 00:41:06 mycroft Exp $ + */ + +#include "DEFS.h" + +ENTRY(skpc) + pushl %edi + movl 16(%esp),%edi + movl 12(%esp),%ecx + movl 8(%esp),%eax + cld + repe + scasb + je 1f + incl %ecx +1: + movl %ecx,%eax + popl %edi + ret