diff options
author | mr <mr@FreeBSD.org> | 2006-07-12 20:29:11 +0000 |
---|---|---|
committer | mr <mr@FreeBSD.org> | 2006-07-12 20:29:11 +0000 |
commit | 883bd6a55eef6005b2e79ccc0c939a365bebb656 (patch) | |
tree | c44f3dadd25bb61c7f8dc9e3b63d04f767abc3e3 | |
parent | b5dc376dfafef047b34773f090765e211292250a (diff) | |
download | FreeBSD-src-883bd6a55eef6005b2e79ccc0c939a365bebb656.zip FreeBSD-src-883bd6a55eef6005b2e79ccc0c939a365bebb656.tar.gz |
Use the already stored VIA RNG probe information
instead of probing again.
MFC after: 1 week
-rw-r--r-- | sys/dev/random/probe.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/sys/dev/random/probe.c b/sys/dev/random/probe.c index e5f15fe..55b1974 100644 --- a/sys/dev/random/probe.c +++ b/sys/dev/random/probe.c @@ -39,6 +39,8 @@ __FBSDID("$FreeBSD$"); #if defined(__i386__) && !defined(PC98) #include <machine/cpufunc.h> #include <machine/cputypes.h> +#include <machine/md_var.h> +#include <machine/specialreg.h> #endif #include <dev/random/randomdev.h> @@ -48,25 +50,14 @@ __FBSDID("$FreeBSD$"); void random_ident_hardware(struct random_systat *systat) { -#if defined(__i386__) && !defined(PC98) - u_int regs[4]; -#endif /* Set default to software */ *systat = random_yarrow; /* Then go looking for hardware */ #if defined(__i386__) && !defined(PC98) - if (cpu_class < CPUCLASS_586) - return; - do_cpuid(1, regs); - if ((regs[0] & 0xf) >= 3) { - do_cpuid(0xc0000000, regs); - if (regs[0] == 0xc0000001) { - do_cpuid(0xc0000001, regs); - if ((regs[3] & 0x0c) == 0x0c) - *systat = random_nehemiah; - } + if( via_feature_rng & VIA_HAS_RNG ) { + *systat = random_nehemiah; } #endif } |