summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2008-10-10 20:21:41 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2008-10-10 20:21:41 +0000
commitda51482d4777ad7b2900fa5fbeb87df047f50f02 (patch)
tree41ae56a55594dc68d255a57d1cf3ade60ada1037
parentd08bba148ce6d2bc797cefbe3915b386dd8e3820 (diff)
Use the MI random() for all cases; no need for a MD version since it
has never been performance sensitive. Running on all platforms, discussed with millert and kettenis, ok toby
-rw-r--r--sys/arch/i386/conf/files.i3863
-rw-r--r--sys/arch/i386/i386/random.s64
-rw-r--r--sys/arch/solbourne/solbourne/locore.s54
-rw-r--r--sys/arch/sparc/sparc/locore.s54
-rw-r--r--sys/arch/vax/conf/files.vax3
-rw-r--r--sys/arch/vax/vax/random.s105
-rw-r--r--sys/conf/files6
-rw-r--r--sys/lib/libkern/arch/sparc/random.S1
8 files changed, 7 insertions, 283 deletions
diff --git a/sys/arch/i386/conf/files.i386 b/sys/arch/i386/conf/files.i386
index 2eb74d13a7c..21b51d2a205 100644
--- a/sys/arch/i386/conf/files.i386
+++ b/sys/arch/i386/conf/files.i386
@@ -1,4 +1,4 @@
-# $OpenBSD: files.i386,v 1.182 2008/07/08 05:22:00 dlg Exp $
+# $OpenBSD: files.i386,v 1.183 2008/10/10 20:21:38 deraadt Exp $
#
# new style config file for i386 architecture
#
@@ -35,7 +35,6 @@ file arch/i386/i386/powernow-k7.c !small_kernel
file arch/i386/i386/powernow-k8.c !small_kernel
file arch/i386/i386/process_machdep.c
file arch/i386/i386/procfs_machdep.c procfs
-file arch/i386/i386/random.s
file arch/i386/i386/sys_machdep.c
file arch/i386/i386/trap.c
file arch/i386/i386/vm_machdep.c
diff --git a/sys/arch/i386/i386/random.s b/sys/arch/i386/i386/random.s
deleted file mode 100644
index c40bad195b8..00000000000
--- a/sys/arch/i386/i386/random.s
+++ /dev/null
@@ -1,64 +0,0 @@
-/* $OpenBSD: random.s,v 1.4 2003/04/17 03:42:14 drahn Exp $ */
-/* $NetBSD: random.s,v 1.5 1995/01/15 23:20:33 mycroft Exp $ */
-
-/*
- * Copyright (c) 1995 Charles Hannum.
- * Copyright (c) 1990,1993 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that: (1) source code distributions
- * retain the above copyright notice and this paragraph in its entirety, (2)
- * distributions including binary code include the above copyright notice and
- * this paragraph in its entirety in the documentation or other materials
- * provided with the distribution, and (3) all advertising materials mentioning
- * features or use of this software display the following acknowledgement:
- * ``This product includes software developed by the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Here is a very good random number generator. This implementation is
- * based on ``Two Fast Implementations of the "Minimal Standard" Random
- * Number Generator'', David G. Carta, Communications of the ACM, Jan 1990,
- * Vol 33 No 1. Do NOT modify this code unless you have a very thorough
- * understanding of the algorithm. It's trickier than you think. If
- * you do change it, make sure that its 10,000'th invocation returns
- * 1043618065.
- *
- * Here is easier-to-decipher pseudocode:
- *
- * p = (16807*seed)<30:0> # e.g., the low 31 bits of the product
- * q = (16807*seed)<62:31> # e.g., the high 31 bits starting at bit 32
- * if (p + q < 2^31)
- * seed = p + q
- * else
- * seed = ((p + q) & (2^31 - 1)) + 1
- * return (seed);
- *
- * The result is in (0,2^31), e.g., it's always positive.
- */
-#include <machine/asm.h>
-
- .data
- .globl _C_LABEL(_randseed)
-_C_LABEL(_randseed):
- .long 1
- .text
-ENTRY(random)
- movl $16807,%eax
- imull _C_LABEL(_randseed)
- shld $1,%eax,%edx
- andl $0x7fffffff,%eax
- addl %edx,%eax
- js 1f
- movl %eax,_C_LABEL(_randseed)
- ret
-1:
- subl $0x7fffffff,%eax
- movl %eax,_C_LABEL(_randseed)
- ret
diff --git a/sys/arch/solbourne/solbourne/locore.s b/sys/arch/solbourne/solbourne/locore.s
index 749c80559d0..442798dcf92 100644
--- a/sys/arch/solbourne/solbourne/locore.s
+++ b/sys/arch/solbourne/solbourne/locore.s
@@ -1,4 +1,4 @@
-/* $OpenBSD: locore.s,v 1.12 2008/07/28 19:08:46 miod Exp $ */
+/* $OpenBSD: locore.s,v 1.13 2008/10/10 20:21:39 deraadt Exp $ */
/* OpenBSD: locore.s,v 1.64 2005/04/17 18:47:50 miod Exp */
/*
@@ -4610,58 +4610,6 @@ Lumul_shortway:
addcc %g0, %g0, %o1 ! %o1 = zero, and set Z
/*
- * Here is a very good random number generator. This implementation is
- * based on ``Two Fast Implementations of the "Minimal Standard" Random
- * Number Generator", David G. Carta, Communications of the ACM, Jan 1990,
- * Vol 33 No 1.
- */
- .data
- .globl _C_LABEL(_randseed)
-_C_LABEL(_randseed):
- .word 1
- .text
-ENTRY(random)
- sethi %hi(16807), %o1
- wr %o1, %lo(16807), %y
- sethi %hi(_C_LABEL(_randseed)), %g1
- ld [%g1 + %lo(_C_LABEL(_randseed))], %o0
- andcc %g0, 0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %g0, %o2
- rd %y, %o3
- srl %o2, 16, %o1
- set 0xffff, %o4
- and %o4, %o2, %o0
- sll %o0, 15, %o0
- srl %o3, 17, %o3
- or %o3, %o0, %o0
- addcc %o0, %o1, %o0
- bneg 1f
- sethi %hi(0x7fffffff), %o1
- retl
- st %o0, [%g1 + %lo(_C_LABEL(_randseed))]
-1:
- or %o1, %lo(0x7fffffff), %o1
- add %o0, 1, %o0
- and %o1, %o0, %o0
- retl
- st %o0, [%g1 + %lo(_C_LABEL(_randseed))]
-
-/*
* delay function
*
* void delay(N) -- delay N microseconds
diff --git a/sys/arch/sparc/sparc/locore.s b/sys/arch/sparc/sparc/locore.s
index 7b996396ca4..5278ac381df 100644
--- a/sys/arch/sparc/sparc/locore.s
+++ b/sys/arch/sparc/sparc/locore.s
@@ -1,4 +1,4 @@
-/* $OpenBSD: locore.s,v 1.81 2008/07/28 19:08:46 miod Exp $ */
+/* $OpenBSD: locore.s,v 1.82 2008/10/10 20:21:39 deraadt Exp $ */
/* $NetBSD: locore.s,v 1.73 1997/09/13 20:36:48 pk Exp $ */
/*
@@ -5920,58 +5920,6 @@ Lumul_shortway:
addcc %g0, %g0, %o1 ! %o1 = zero, and set Z
/*
- * Here is a very good random number generator. This implementation is
- * based on ``Two Fast Implementations of the "Minimal Standard" Random
- * Number Generator", David G. Carta, Communications of the ACM, Jan 1990,
- * Vol 33 No 1.
- */
- .data
- .globl _C_LABEL(_randseed)
-_C_LABEL(_randseed):
- .word 1
- .text
-ENTRY(random)
- sethi %hi(16807), %o1
- wr %o1, %lo(16807), %y
- sethi %hi(_C_LABEL(_randseed)), %g1
- ld [%g1 + %lo(_C_LABEL(_randseed))], %o0
- andcc %g0, 0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %o0, %o2
- mulscc %o2, %g0, %o2
- rd %y, %o3
- srl %o2, 16, %o1
- set 0xffff, %o4
- and %o4, %o2, %o0
- sll %o0, 15, %o0
- srl %o3, 17, %o3
- or %o3, %o0, %o0
- addcc %o0, %o1, %o0
- bneg 1f
- sethi %hi(0x7fffffff), %o1
- retl
- st %o0, [%g1 + %lo(_C_LABEL(_randseed))]
-1:
- or %o1, %lo(0x7fffffff), %o1
- add %o0, 1, %o0
- and %o1, %o0, %o0
- retl
- st %o0, [%g1 + %lo(_C_LABEL(_randseed))]
-
-/*
* void lo_microtime(struct timeval *tv)
*
* LBL's sparc bsd 'microtime': We don't need to spl (so this routine
diff --git a/sys/arch/vax/conf/files.vax b/sys/arch/vax/conf/files.vax
index 0c34f42ef43..34c89ba13f0 100644
--- a/sys/arch/vax/conf/files.vax
+++ b/sys/arch/vax/conf/files.vax
@@ -1,4 +1,4 @@
-# $OpenBSD: files.vax,v 1.48 2008/08/18 23:19:21 miod Exp $
+# $OpenBSD: files.vax,v 1.49 2008/10/10 20:21:39 deraadt Exp $
# $NetBSD: files.vax,v 1.60 1999/08/27 20:04:32 ragge Exp $
#
# new style config file for vax architecture
@@ -384,7 +384,6 @@ file arch/vax/vax/bus_mem.c
file arch/vax/vax/sgmap.c
file arch/vax/vax/vm_machdep.c
file arch/vax/vax/findcpu.c
-file arch/vax/vax/random.s
file arch/vax/vax/autoconf.c
file arch/vax/vax/mutex.c
file arch/vax/vax/in_cksum.c inet
diff --git a/sys/arch/vax/vax/random.s b/sys/arch/vax/vax/random.s
deleted file mode 100644
index 41fea6aea6c..00000000000
--- a/sys/arch/vax/vax/random.s
+++ /dev/null
@@ -1,105 +0,0 @@
-/* $OpenBSD: random.s,v 1.5 2007/01/14 19:13:35 otto Exp $ */
-/* $NetBSD: random.S,v 1.4 2007/01/14 13:26:18 ragge Exp $ */
-
-/*
- * Copyright (c) 1994 Ludd, University of Lule}, Sweden. 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. 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.
- */
-
-/*
- * Copyright (c) 1990,1993 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that: (1) source code distributions
- * retain the above copyright notice and this paragraph in its entirety, (2)
- * distributions including binary code include the above copyright notice and
- * this paragraph in its entirety in the documentation or other materials
- * provided with the distribution, and (3) all advertising materials mentioning
- * features or use of this software display the following acknowledgement:
- * ``This product includes software developed by the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Here is a very good random number generator. This implementation is
- * based on ``Two Fast Implementations of the "Minimal Standard" Random
- * Number Generator'', David G. Carta, Communications of the ACM, Jan 1990,
- * Vol 33 No 1. Do NOT modify this code unless you have a very thorough
- * understanding of the algorithm. It's trickier than you think. If
- * you do change it, make sure that its 10,000'th invocation returns
- * 1043618065.
- *
- * Here is easier-to-decipher pseudocode:
- *
- * p = (16807*seed)<30:0> # e.g., the low 31 bits of the product
- * q = (16807*seed)<62:31> # e.g., the high 31 bits starting at bit 32
- * if (p + q < 2^31)
- * seed = p + q
- * else
- * seed = ((p + q) & (2^31 - 1)) + 1
- * return (seed);
- *
- * The result is in (0,2^31), e.g., it's always positive.
- */
-
-#include <machine/asm.h>
-
- .data
- .globl __randseed
-__randseed:
- .long 1
-ENTRY(random, 0)
- movl $16807,r0
-
- movl __randseed,r1 # r2=16807*loword(__randseed)
- bicl3 $0xffff0000,r1,r2
- mull2 r0,r2
- ashl $-16,r1,r1 # r1=16807*hiword(__randseed)
- bicl2 $0xffff0000,r1
- mull2 r0,r1
- bicl3 $0xffff0000,r2,r0
- ashl $-16,r2,r2 # r1+=(r2>>16)
- bicl2 $0xffff0000,r2
- addl2 r2,r1
- ashl $16,r1,r2 # r0|=r1<<16
- bisl2 r2,r0
- ashl $-16,r1,r1 # r1=r1>>16
-
- ashl $1,r1,r1
- movl r0,r2
- rotl $1,r0,r0
- bicl2 $0xfffffffe,r0
- bisl2 r0,r1
- movl r2,r0
- bicl2 $0x80000000,r0
- addl2 r1,r0
- bgeq L1
- subl2 $0x7fffffff,r0
-L1: movl r0,__randseed
- ret
diff --git a/sys/conf/files b/sys/conf/files
index 3644ee064f1..4391aad2531 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -1,4 +1,4 @@
-# $OpenBSD: files,v 1.442 2008/09/09 13:56:39 henning Exp $
+# $OpenBSD: files,v 1.443 2008/10/10 20:21:40 deraadt Exp $
# $NetBSD: files,v 1.87 1996/05/19 17:17:50 jonathan Exp $
# @(#)files.newconf 7.5 (Berkeley) 5/10/93
@@ -1032,8 +1032,8 @@ file compat/common/vm_43.c !small_kernel
# libkern MI components
file lib/libkern/mcount.c gprof
file lib/libkern/getsn.c
-file lib/libkern/arch/${MACHINE_ARCH}/random.S | lib/libkern/random.c
-file lib/libkern/arch/${MACHINE_ARCH}/srandom.S | lib/libkern/srandom.c
+file lib/libkern/random.c
+file lib/libkern/srandom.c
file lib/libkern/arch/${MACHINE_ARCH}/strchr.S | lib/libkern/strchr.c
file lib/libkern/arch/${MACHINE_ARCH}/strrchr.S | lib/libkern/strrchr.c
file lib/libkern/arch/${MACHINE_ARCH}/__main.S | lib/libkern/__main.c
diff --git a/sys/lib/libkern/arch/sparc/random.S b/sys/lib/libkern/arch/sparc/random.S
deleted file mode 100644
index 33ba5c2da5c..00000000000
--- a/sys/lib/libkern/arch/sparc/random.S
+++ /dev/null
@@ -1 +0,0 @@
-/* No code here since kernel impliments this itself */