diff options
author | jkim <jkim@FreeBSD.org> | 2013-08-15 21:09:05 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2013-08-15 21:09:05 +0000 |
commit | de579b60c166fa1a5f73083d4910751927cbb45a (patch) | |
tree | 1609aea018515d5bb03b9e1dacf85b7778ce5e80 /sys/i386 | |
parent | 8544609e649a9e074023f253de79d42b4d7d11e6 (diff) | |
download | FreeBSD-src-de579b60c166fa1a5f73083d4910751927cbb45a.zip FreeBSD-src-de579b60c166fa1a5f73083d4910751927cbb45a.tar.gz |
Simplify check for CMPXCHG8B instruction. Note CMPXCHG8B instruction is
always available for Rise mP6 processors although it is not set by CPUID.
Diffstat (limited to 'sys/i386')
-rw-r--r-- | sys/i386/i386/initcpu.c | 16 | ||||
-rw-r--r-- | sys/i386/i386/machdep.c | 3 |
2 files changed, 17 insertions, 2 deletions
diff --git a/sys/i386/i386/initcpu.c b/sys/i386/i386/initcpu.c index 5f33897..71c57b2 100644 --- a/sys/i386/i386/initcpu.c +++ b/sys/i386/i386/initcpu.c @@ -424,6 +424,19 @@ init_6x86(void) #ifdef I586_CPU /* + * Rise mP6 + */ +static void +init_rise(void) +{ + + /* + * The CMPXCHG8B instruction is always available but hidden. + */ + cpu_feature |= CPUID_CX8; +} + +/* * IDT WinChip C6/2/2A/2B/3 * * http://www.centtech.com/winchip_bios_writers_guide_v4_0.pdf @@ -690,6 +703,9 @@ initializecpu(void) case CPU_VENDOR_TRANSMETA: init_transmeta(); break; + case CPU_VENDOR_RISE: + init_rise(); + break; } break; #endif diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c index be391b6..f62854b 100644 --- a/sys/i386/i386/machdep.c +++ b/sys/i386/i386/machdep.c @@ -1557,8 +1557,7 @@ static void cpu_probe_cmpxchg8b(void) { - if ((cpu_feature & CPUID_CX8) != 0 || - cpu_vendor_id == CPU_VENDOR_RISE) { + if ((cpu_feature & CPUID_CX8) != 0) { atomic_load_acq_64 = atomic_load_acq_64_i586; atomic_store_rel_64 = atomic_store_rel_64_i586; } |