diff options
author | 1996-10-31 00:43:07 +0000 | |
---|---|---|
committer | 1996-10-31 00:43:07 +0000 | |
commit | 32081e1f376ddca27c2d21d579f4802ab3cb55c5 (patch) | |
tree | 949b21364eaa56193a1e6ed712bc2dd1c4304672 /sys/lib/libkern/arch | |
parent | Correct mmmap's 2nd arg type (diff) | |
download | wireguard-openbsd-32081e1f376ddca27c2d21d579f4802ab3cb55c5.tar.xz wireguard-openbsd-32081e1f376ddca27c2d21d579f4802ab3cb55c5.zip |
Merge NetBSD/Alpha 961020
Diffstat (limited to 'sys/lib/libkern/arch')
-rw-r--r-- | sys/lib/libkern/arch/alpha/DEFS.h | 30 | ||||
-rw-r--r-- | sys/lib/libkern/arch/alpha/Makefile.inc | 24 | ||||
-rw-r--r-- | sys/lib/libkern/arch/alpha/SYS.h | 53 | ||||
-rw-r--r-- | sys/lib/libkern/arch/alpha/byte_swap_2.S | 5 | ||||
-rw-r--r-- | sys/lib/libkern/arch/alpha/byte_swap_4.S | 5 | ||||
-rw-r--r-- | sys/lib/libkern/arch/alpha/bzero.S | 5 | ||||
-rw-r--r-- | sys/lib/libkern/arch/alpha/divrem.m4 | 15 | ||||
-rw-r--r-- | sys/lib/libkern/arch/alpha/ffs.S | 92 | ||||
-rw-r--r-- | sys/lib/libkern/arch/alpha/htonl.S | 1 | ||||
-rw-r--r-- | sys/lib/libkern/arch/alpha/htons.S | 1 | ||||
-rw-r--r-- | sys/lib/libkern/arch/alpha/ntohl.S | 1 | ||||
-rw-r--r-- | sys/lib/libkern/arch/alpha/ntohs.S | 1 |
12 files changed, 125 insertions, 108 deletions
diff --git a/sys/lib/libkern/arch/alpha/DEFS.h b/sys/lib/libkern/arch/alpha/DEFS.h deleted file mode 100644 index 0d16d3972ad..00000000000 --- a/sys/lib/libkern/arch/alpha/DEFS.h +++ /dev/null @@ -1,30 +0,0 @@ -/* $NetBSD: DEFS.h,v 1.1 1995/02/13 21:49:11 cgd Exp $ */ - -/* - * Copyright (c) 1994, 1995 Carnegie-Mellon University. - * All rights reserved. - * - * Author: Chris G. Demetriou - * - * Permission to use, copy, modify and distribute this software and - * its documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND - * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ - -#include <machine/asm.h> diff --git a/sys/lib/libkern/arch/alpha/Makefile.inc b/sys/lib/libkern/arch/alpha/Makefile.inc index 5cdbfb0b3c9..a8db36a1d02 100644 --- a/sys/lib/libkern/arch/alpha/Makefile.inc +++ b/sys/lib/libkern/arch/alpha/Makefile.inc @@ -1,9 +1,9 @@ -# $OpenBSD: Makefile.inc,v 1.4 1996/05/01 15:08:15 deraadt Exp $ -# $NetBSD: Makefile.inc,v 1.5 1996/04/17 22:46:34 cgd Exp $ +# $OpenBSD: Makefile.inc,v 1.5 1996/10/31 00:43:12 niklas Exp $ +# $NetBSD: Makefile.inc,v 1.9 1996/08/27 00:44:24 cgd Exp $ SRCS+= __main.c imax.c imin.c lmax.c lmin.c max.c min.c ulmax.c ulmin.c \ - bcmp.c bzero.S ffs.c strcat.c strcmp.c strcpy.c strlen.c strncmp.c \ - strncpy.c scanc.c skpc.c locc.c htonl.S htons.S ntohl.S ntohs.S \ + bcmp.c bzero.S ffs.S strcat.c strcmp.c strcpy.c strlen.c strncmp.c \ + strncpy.c scanc.c skpc.c htonl.S htons.S ntohl.S ntohs.S \ random.c strncasecmp.c # `source' files built from m4 source @@ -12,42 +12,42 @@ SRCS+= __remqu.S __remq.S __remlu.S __reml.S CLEANFILES+= __divqu.S __divq.S __divlu.S __divl.S CLEANFILES+= __remqu.S __remq.S __remlu.S __reml.S -__divqu.S: ${DIR}/arch/alpha/divrem.m4 +__divqu.S: ${M}/divrem.m4 @echo 'building ${.TARGET} from ${.ALLSRC}' @(echo "define(NAME,\`__divqu')define(OP,\`div')define(S,\`false')"; \ echo "define(WORDSIZE,64)"; cat ${.ALLSRC}) | m4 > ${.TARGET} -__divq.S: ${DIR}/arch/alpha/divrem.m4 +__divq.S: ${M}/divrem.m4 @echo 'building ${.TARGET} from ${.ALLSRC}' @(echo "define(NAME,\`__divq')define(OP,\`div')define(S,\`true')"; \ echo "define(WORDSIZE,64)"; cat ${.ALLSRC}) | m4 > ${.TARGET} -__divlu.S: ${DIR}/arch/alpha/divrem.m4 +__divlu.S: ${M}/divrem.m4 @echo 'building ${.TARGET} from ${.ALLSRC}' @(echo "define(NAME,\`__divlu')define(OP,\`div')define(S,\`false')"; \ echo "define(WORDSIZE,32)"; cat ${.ALLSRC}) | m4 > ${.TARGET} -__divl.S: ${DIR}/arch/alpha/divrem.m4 +__divl.S: ${M}/divrem.m4 @echo 'building ${.TARGET} from ${.ALLSRC}' @(echo "define(NAME,\`__divl')define(OP,\`div')define(S,\`true')"; \ echo "define(WORDSIZE,32)"; cat ${.ALLSRC}) | m4 > ${.TARGET} -__remqu.S: ${DIR}/arch/alpha/divrem.m4 +__remqu.S: ${M}/divrem.m4 @echo 'building ${.TARGET} from ${.ALLSRC}' @(echo "define(NAME,\`__remqu')define(OP,\`rem')define(S,\`false')"; \ echo "define(WORDSIZE,64)"; cat ${.ALLSRC}) | m4 > ${.TARGET} -__remq.S: ${DIR}/arch/alpha/divrem.m4 +__remq.S: ${M}/divrem.m4 @echo 'building ${.TARGET} from ${.ALLSRC}' @(echo "define(NAME,\`__remq')define(OP,\`rem')define(S,\`true')"; \ echo "define(WORDSIZE,64)"; cat ${.ALLSRC}) | m4 > ${.TARGET} -__remlu.S: ${DIR}/arch/alpha/divrem.m4 +__remlu.S: ${M}/divrem.m4 @echo 'building ${.TARGET} from ${.ALLSRC}' @(echo "define(NAME,\`__remlu')define(OP,\`rem')define(S,\`false')"; \ echo "define(WORDSIZE,32)"; cat ${.ALLSRC}) | m4 > ${.TARGET} -__reml.S: ${DIR}/arch/alpha/divrem.m4 +__reml.S: ${M}/divrem.m4 @echo 'building ${.TARGET} from ${.ALLSRC}' @(echo "define(NAME,\`__reml')define(OP,\`rem')define(S,\`true')"; \ echo "define(WORDSIZE,32)"; cat ${.ALLSRC}) | m4 > ${.TARGET} diff --git a/sys/lib/libkern/arch/alpha/SYS.h b/sys/lib/libkern/arch/alpha/SYS.h deleted file mode 100644 index 738dda0ee01..00000000000 --- a/sys/lib/libkern/arch/alpha/SYS.h +++ /dev/null @@ -1,53 +0,0 @@ -/* $NetBSD: SYS.h,v 1.1 1995/02/13 21:49:13 cgd Exp $ */ - -/* - * Copyright (c) 1994, 1995 Carnegie-Mellon University. - * All rights reserved. - * - * Author: Chris G. Demetriou - * - * Permission to use, copy, modify and distribute this software and - * its documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND - * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ - -#include <machine/asm.h> -#include <sys/syscall.h> - -#define CALLSYS(num) \ - CONST(num, v0); \ - call_pal 0x83; /* op_callsys */ - -#define SYSCALL_NOLABEL(x) \ - CALLSYS(SYS_/**/x); \ - beq a3, 9f; \ - br gp, 8f; \ -8: SETGP(gp); \ - lda at_reg, cerror; \ - jmp zero, (at_reg); \ -9: - -#define SYSCALL(x) LEAF(x, 0 /* XXX */); SYSCALL_NOLABEL(x); -#define RSYSCALL(x) SYSCALL(x); RET; END(x); - -#define PSEUDO(x,y) \ -LEAF(x,0); /* unknown # of args */ \ - CALLSYS(SYS_/**/y); \ - RET; \ -END(x); diff --git a/sys/lib/libkern/arch/alpha/byte_swap_2.S b/sys/lib/libkern/arch/alpha/byte_swap_2.S index bcc67274837..29d1946200d 100644 --- a/sys/lib/libkern/arch/alpha/byte_swap_2.S +++ b/sys/lib/libkern/arch/alpha/byte_swap_2.S @@ -1,4 +1,5 @@ -/* $NetBSD: byte_swap_2.S,v 1.1 1996/04/17 22:46:37 cgd Exp $ */ +/* $OpenBSD: byte_swap_2.S,v 1.2 1996/10/31 00:43:14 niklas Exp $ */ +/* $NetBSD: byte_swap_2.S,v 1.2 1996/10/17 04:26:21 cgd Exp $ */ /* * Copyright (c) 1996 Carnegie-Mellon University. @@ -27,7 +28,7 @@ * rights to redistribute these changes. */ -#include "DEFS.h" +#include <machine/asm.h> #ifndef NAME #define NAME byte_swap_2 diff --git a/sys/lib/libkern/arch/alpha/byte_swap_4.S b/sys/lib/libkern/arch/alpha/byte_swap_4.S index a60803d2edf..8a6ac788b0e 100644 --- a/sys/lib/libkern/arch/alpha/byte_swap_4.S +++ b/sys/lib/libkern/arch/alpha/byte_swap_4.S @@ -1,4 +1,5 @@ -/* $NetBSD: byte_swap_4.S,v 1.1 1996/04/17 22:46:39 cgd Exp $ */ +/* $OpenBSD: byte_swap_4.S,v 1.2 1996/10/31 00:43:15 niklas Exp $ */ +/* $NetBSD: byte_swap_4.S,v 1.2 1996/10/17 04:26:22 cgd Exp $ */ /* * Copyright (c) 1996 Carnegie-Mellon University. @@ -27,7 +28,7 @@ * rights to redistribute these changes. */ -#include "DEFS.h" +#include <machine/asm.h> #ifndef NAME #define NAME byte_swap_4 diff --git a/sys/lib/libkern/arch/alpha/bzero.S b/sys/lib/libkern/arch/alpha/bzero.S index 3bf1e75a9f8..32c4952a7c4 100644 --- a/sys/lib/libkern/arch/alpha/bzero.S +++ b/sys/lib/libkern/arch/alpha/bzero.S @@ -1,4 +1,5 @@ -/* $NetBSD: bzero.S,v 1.1 1995/10/20 01:16:02 cgd Exp $ */ +/* $OpenBSD: bzero.S,v 1.2 1996/10/31 00:43:16 niklas Exp $ */ +/* $NetBSD: bzero.S,v 1.2 1996/10/17 04:26:24 cgd Exp $ */ /* * Copyright (c) 1995 Carnegie-Mellon University. @@ -27,7 +28,7 @@ * rights to redistribute these changes. */ -#include "DEFS.h" +#include <machine/asm.h> LEAF(bzero,2) ble a1,bzero_done diff --git a/sys/lib/libkern/arch/alpha/divrem.m4 b/sys/lib/libkern/arch/alpha/divrem.m4 index f0a9a10409a..cc4e71c2278 100644 --- a/sys/lib/libkern/arch/alpha/divrem.m4 +++ b/sys/lib/libkern/arch/alpha/divrem.m4 @@ -1,4 +1,5 @@ -/* $NetBSD: divrem.m4,v 1.3 1995/10/20 00:53:28 cgd Exp $ */ +/* $OpenBSD: divrem.m4,v 1.3 1996/10/31 00:43:17 niklas Exp $ */ +/* $NetBSD: divrem.m4,v 1.5 1996/10/17 04:26:25 cgd Exp $ */ /* * Copyright (c) 1994, 1995 Carnegie-Mellon University. @@ -54,7 +55,7 @@ define(CC, `t2') define(T_0, `t3') ifelse(S, `true', `define(NEG, `t4')') -#include "DEFS.h" +#include <machine/asm.h> LEAF(NAME, 0) /* XXX */ lda sp, -64(sp) @@ -112,7 +113,7 @@ ifelse(WORDSIZE, `32', ` /* kill the special cases. */ beq B, Ldotrap /* division by zero! */ -1: cmpult A, B, CC /* A < B? */ + cmpult A, B, CC /* A < B? */ /* RESULT is already zero, from above. A is untouched. */ bne CC, Lret_result @@ -125,7 +126,7 @@ ifelse(WORDSIZE, `32', ` * Find out how many bits of zeros are at the beginning of the divisor. */ LBbits: - CONST(1, T_0) /* I = 0; BIT = 1<<WORDSIZE-1 */ + ldiq T_0, 1 /* I = 0; BIT = 1<<WORDSIZE-1 */ mov zero, I sll T_0, WORDSIZE-1, BIT LBloop: @@ -138,7 +139,7 @@ LBloop: LAbits: beq I, Ldodiv /* If I = 0, divide now. */ - CONST(1, T_0) /* BIT = 1<<WORDSIZE-1 */ + ldiq T_0, 1 /* BIT = 1<<WORDSIZE-1 */ sll T_0, WORDSIZE-1, BIT LAloop: @@ -150,7 +151,7 @@ LAloop: Ldodiv: sll B, I, B /* B <<= i */ - CONST(1, T_0) + ldiq T_0, 1 sll T_0, I, BIT Ldivloop: @@ -187,7 +188,7 @@ ifelse(S, `true', ret zero, (t9), 1 Ldotrap: - CONST(-2, a0) /* This is the signal to SIGFPE! */ + ldiq a0, -2 /* This is the signal to SIGFPE! */ call_pal PAL_gentrap ifelse(OP, `div', `', ` mov zero, A /* so that zero will be returned */ diff --git a/sys/lib/libkern/arch/alpha/ffs.S b/sys/lib/libkern/arch/alpha/ffs.S new file mode 100644 index 00000000000..76e0e76ca7d --- /dev/null +++ b/sys/lib/libkern/arch/alpha/ffs.S @@ -0,0 +1,92 @@ +/* $OpenBSD: ffs.S,v 1.1 1996/10/31 00:43:18 niklas Exp $ */ +/* $NetBSD: ffs.S,v 1.3 1996/10/17 04:26:26 cgd Exp $ */ + +/* + * Copyright (c) 1995 Christopher G. Demetriou + * 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 Christopher G. Demetriou + * for the NetBSD Project. + * 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. + */ + +#include <machine/asm.h> + +LEAF(ffs, 1) + addl a0, 0, t0 + beq t0, Lallzero + + /* + * Initialize return value (v0), and set up t1 so that it + * contains the mask with only the lowest bit set. + */ + subl zero, t0, t1 + ldil v0, 1 + and t0, t1, t1 + + and t1, 0xff, t2 + bne t2, Ldo8 + + /* + * If lower 16 bits empty, add 16 to result and use upper 16. + */ + zapnot t1, 0x03, t3 + bne t3, Ldo16 + sra t1, 16, t1 + addl v0, 16, v0 + +Ldo16: + /* + * If lower 8 bits empty, add 8 to result and use upper 8. + */ + and t1, 0xff, t4 + bne t4, Ldo8 + sra t1, 8, t1 + addl v0, 8, v0 + +Ldo8: + and t1, 0x0f, t5 /* lower 4 of 8 empty? */ + and t1, 0x33, t6 /* lower 2 of each 4 empty? */ + and t1, 0x55, t7 /* lower 1 of each 2 empty? */ + + /* If lower 4 bits empty, add 4 to result. */ + bne t5, Ldo4 + addl v0, 4, v0 + +Ldo4: /* If lower 2 bits of each 4 empty, add 2 to result. */ + bne t6, Ldo2 + addl v0, 2, v0 + +Ldo2: /* If lower bit of each 2 empty, add 1 to result. */ + bne t7, Ldone + addl v0, 1, v0 + +Ldone: + RET + +Lallzero: + bis zero, zero, v0 + RET +END(ffs) diff --git a/sys/lib/libkern/arch/alpha/htonl.S b/sys/lib/libkern/arch/alpha/htonl.S index e1871e0d10e..bfa4d31d6c0 100644 --- a/sys/lib/libkern/arch/alpha/htonl.S +++ b/sys/lib/libkern/arch/alpha/htonl.S @@ -1,3 +1,4 @@ +/* $OpenBSD: htonl.S,v 1.2 1996/10/31 00:43:19 niklas Exp $ */ /* $NetBSD: htonl.S,v 1.1 1996/04/17 22:46:41 cgd Exp $ */ /* diff --git a/sys/lib/libkern/arch/alpha/htons.S b/sys/lib/libkern/arch/alpha/htons.S index 7ab417a7792..66ccd0cd684 100644 --- a/sys/lib/libkern/arch/alpha/htons.S +++ b/sys/lib/libkern/arch/alpha/htons.S @@ -1,3 +1,4 @@ +/* $OpenBSD: htons.S,v 1.2 1996/10/31 00:43:20 niklas Exp $ */ /* $NetBSD: htons.S,v 1.1 1996/04/17 22:46:43 cgd Exp $ */ /* diff --git a/sys/lib/libkern/arch/alpha/ntohl.S b/sys/lib/libkern/arch/alpha/ntohl.S index 9689ef135f5..5109d6d8a2e 100644 --- a/sys/lib/libkern/arch/alpha/ntohl.S +++ b/sys/lib/libkern/arch/alpha/ntohl.S @@ -1,3 +1,4 @@ +/* $OpenBSD: ntohl.S,v 1.2 1996/10/31 00:43:21 niklas Exp $ */ /* $NetBSD: ntohl.S,v 1.1 1996/04/17 22:46:45 cgd Exp $ */ /* diff --git a/sys/lib/libkern/arch/alpha/ntohs.S b/sys/lib/libkern/arch/alpha/ntohs.S index 13362133638..4e2213ba827 100644 --- a/sys/lib/libkern/arch/alpha/ntohs.S +++ b/sys/lib/libkern/arch/alpha/ntohs.S @@ -1,3 +1,4 @@ +/* $OpenBSD: ntohs.S,v 1.2 1996/10/31 00:43:22 niklas Exp $ */ /* $NetBSD: ntohs.S,v 1.1 1996/04/17 22:46:46 cgd Exp $ */ /* |