Remove 'cpu' and 'cpu_class' on amd64.

The 'cpu' and 'cpu_class' variables were always set to the same value
on amd64 and are legacy holdovers from i386.  Remove them entirely on
amd64.

Reviewed by:	imp, kib (older version)
Differential Revision:	https://reviews.freebsd.org/D7888
This commit is contained in:
John Baldwin 2016-09-15 17:05:54 +00:00
parent e583d99909
commit 38605d7312
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=305836
8 changed files with 23 additions and 110 deletions

View File

@ -269,7 +269,6 @@ cpu_startup(dummy)
*/
startrtclock();
printcpuinfo();
panicifcpuunsupported();
/*
* Display physical memory if SMBIOS reports reasonable amount.

View File

@ -1,48 +1,6 @@
/*-
* Copyright (c) 1993 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. 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.
*
* $FreeBSD$
* This file is in the public domain.
*/
#ifndef _MACHINE_CPUTYPES_H_
#define _MACHINE_CPUTYPES_H_
/* $FreeBSD$ */
#include <x86/cputypes.h>
/*
* Classes of processor.
*/
#define CPUCLASS_X86 0 /* X86 */
#define CPUCLASS_K8 1 /* K8 AMD64 class */
/*
* Kinds of processor.
*/
#define CPU_X86 0 /* Intel */
#define CPU_CLAWHAMMER 1 /* AMD Clawhammer */
#define CPU_SLEDGEHAMMER 2 /* AMD Sledgehammer */
#endif /* !_MACHINE_CPUTYPES_H_ */

View File

@ -218,7 +218,7 @@ linprocfs_docpuinfo(PFS_FILL_ARGS)
char model[128];
uint64_t freq;
size_t size;
int class, fqmhz, fqkhz;
int fqmhz, fqkhz;
int i;
/*
@ -235,33 +235,6 @@ linprocfs_docpuinfo(PFS_FILL_ARGS)
"3dnowext", "3dnow"
};
switch (cpu_class) {
#ifdef __i386__
case CPUCLASS_286:
class = 2;
break;
case CPUCLASS_386:
class = 3;
break;
case CPUCLASS_486:
class = 4;
break;
case CPUCLASS_586:
class = 5;
break;
case CPUCLASS_686:
class = 6;
break;
default:
class = 0;
break;
#else /* __amd64__ */
default:
class = 15;
break;
#endif
}
hw_model[0] = CTL_HW;
hw_model[1] = HW_MODEL;
model[0] = '\0';
@ -286,7 +259,7 @@ linprocfs_docpuinfo(PFS_FILL_ARGS)
#ifdef __i386__
switch (cpu_vendor_id) {
case CPU_VENDOR_AMD:
if (class < 6)
if (cpu_class < CPUCLASS_686)
flags[16] = "fcmov";
break;
case CPU_VENDOR_CYRIX:

View File

@ -63,4 +63,9 @@
#define CPU_P4 16 /* Intel Pentium 4 */
#define CPU_GEODE1100 17 /* NS Geode SC1100 */
#ifndef LOCORE
extern int cpu;
extern int cpu_class;
#endif
#endif /* !_MACHINE_CPUTYPES_H_ */

View File

@ -65,6 +65,7 @@ void i686_pagezero(void *addr);
void sse2_pagezero(void *addr);
void init_AMD_Elan_sc520(void);
vm_paddr_t kvtop(void *addr);
void panicifcpuunsupported(void);
void ppro_reenable_apic(void);
void setidt(int idx, alias_for_inthand_t *func, int typ, int dpl, int selec);
union savefpu *get_pcb_user_save_td(struct thread *td);

View File

@ -46,9 +46,4 @@
#define CPU_VENDOR_RISE 0xdead2bad /* Rise */
#define CPU_VENDOR_CENTAUR CPU_VENDOR_IDT
#ifndef LOCORE
extern int cpu;
extern int cpu_class;
#endif
#endif /* !_X86_CPUTYPES_H_ */

View File

@ -107,7 +107,6 @@ bool fix_cpuid(void);
void fillw(int /*u_short*/ pat, void *base, size_t cnt);
int is_physical_memory(vm_paddr_t addr);
int isa_nmi(int cd);
void panicifcpuunsupported(void);
void pagecopy(void *from, void *to);
void printcpuinfo(void);
int user_dbreg_trap(void);

View File

@ -87,8 +87,10 @@ static void print_svm_info(void);
static void print_via_padlock_info(void);
static void print_vmx_info(void);
#ifdef __i386__
int cpu; /* Are we 386, 386sx, 486, etc? */
int cpu_class;
#endif
u_int cpu_feature; /* Feature flags */
u_int cpu_feature2; /* Feature flags */
u_int amd_feature; /* AMD feature flags */
@ -184,13 +186,11 @@ static const char *cpu_brandtable[MAX_BRAND_INDEX + 1] = {
NULL,
"Intel Pentium 4"
};
#endif
static struct {
char *cpu_name;
int cpu_class;
} cpus[] = {
#ifdef __i386__
{ "Intel 80286", CPUCLASS_286 }, /* CPU_286 */
{ "i386SX", CPUCLASS_386 }, /* CPU_386SX */
{ "i386DX", CPUCLASS_386 }, /* CPU_386 */
@ -208,11 +208,8 @@ static struct {
{ "Pentium II", CPUCLASS_686 }, /* CPU_PII */
{ "Pentium III", CPUCLASS_686 }, /* CPU_PIII */
{ "Pentium 4", CPUCLASS_686 }, /* CPU_P4 */
#else
{ "Clawhammer", CPUCLASS_K8 }, /* CPU_CLAWHAMMER */
{ "Sledgehammer", CPUCLASS_K8 }, /* CPU_SLEDGEHAMMER */
#endif
};
#endif
static struct {
char *vendor;
@ -242,9 +239,13 @@ printcpuinfo(void)
u_int regs[4], i;
char *brand;
cpu_class = cpus[cpu].cpu_class;
printf("CPU: ");
#ifdef __i386__
cpu_class = cpus[cpu].cpu_class;
strncpy(cpu_model, cpus[cpu].cpu_name, sizeof (cpu_model));
#else
strncpy(cpu_model, "Hammer", sizeof (cpu_model));
#endif
/* Check for extended CPUID information and a processor name. */
if (cpu_exthigh >= 0x80000004) {
@ -697,8 +698,8 @@ printcpuinfo(void)
(intmax_t)(tsc_freq + 4999) / 1000000,
(u_int)((tsc_freq + 4999) / 10000) % 100);
}
switch(cpu_class) {
#ifdef __i386__
switch(cpu_class) {
case CPUCLASS_286:
printf("286");
break;
@ -719,15 +720,13 @@ printcpuinfo(void)
case CPUCLASS_686:
printf("686");
break;
#endif
#else
case CPUCLASS_K8:
printf("K8");
break;
#endif
default:
printf("Unknown"); /* will panic below... */
}
#else
printf("K8");
#endif
printf("-class CPU)\n");
if (*cpu_vendor)
printf(" Origin=\"%s\"", cpu_vendor);
@ -1051,28 +1050,22 @@ printcpuinfo(void)
print_hypervisor_info();
}
#ifdef __i386__
void
panicifcpuunsupported(void)
{
#ifdef __i386__
#if !defined(lint)
#if !defined(I486_CPU) && !defined(I586_CPU) && !defined(I686_CPU)
#error This kernel is not configured for one of the supported CPUs
#endif
#else /* lint */
#endif /* lint */
#else /* __amd64__ */
#ifndef HAMMER
#error "You need to specify a cpu type"
#endif
#endif
/*
* Now that we have told the user what they have,
* let them know if that machine type isn't configured.
*/
switch (cpu_class) {
#ifdef __i386__
case CPUCLASS_286: /* a 286 should not make it this far, anyway */
case CPUCLASS_386:
#if !defined(I486_CPU)
@ -1083,12 +1076,6 @@ panicifcpuunsupported(void)
#endif
#if !defined(I686_CPU)
case CPUCLASS_686:
#endif
#else /* __amd64__ */
case CPUCLASS_X86:
#ifndef HAMMER
case CPUCLASS_K8:
#endif
#endif
panic("CPU class not configured");
default:
@ -1096,7 +1083,6 @@ panicifcpuunsupported(void)
}
}
#ifdef __i386__
static volatile u_int trap_by_rdmsr;
/*
@ -1580,9 +1566,6 @@ identify_cpu(void)
return;
}
}
#else
/* XXX */
cpu = CPU_CLAWHAMMER;
#endif
}