This is cpu.c in view mode; [Download] [Up]
/* Written by Darcy Brockbank.
// Copyright (c) 1995 by Darcy Brockbank. All rights reserved.
//
// This notice may not be removed from this source code.
//
// This object is included in the MiscKit by permission from the author
// and its use is governed by the MiscKit license, found in the file
// "LICENSE.rtf" in the MiscKit distribution. Please refer to that file
// for a list of all applicable permissions and restrictions.
*/
#include "cpu.h"
/*
* I am so ashamed, but I had to rewrite it in order to keep it
* portable and free. What a gross mess.
*/
int
cpu_type(const char *string)
{
int i;
if (!string) return CPU_TYPE_ANY;
for(i=CPU_TYPE_UNKNOWN;cpus[i];i++){
if (strcmp(cpus[i],string)==0){
return i-1;
}
}
return CPU_TYPE_UNKNOWN;
}
const char *
arch_from_type(int type)
{
return (type>=CPU_TYPE_MAX || type<CPU_TYPE_ANY) ?
cpus[CPU_TYPE_UNKNOWN] : cpus[type+1];
}
static const char *
get_any(int t)
{
switch(t){
default:
case CPU_SUBTYPE_MULTIPLE:
return "CPU_SUBTYPE_MULTIPLE";
case CPU_SUBTYPE_LITTLE_ENDIAN:
return "CPU_SUBTYPE_LITTLE_ENDIAN";
case CPU_SUBTYPE_BIG_ENDIAN:
return "CPU_SUBTYPE_BIG_ENDIAN";
}
}
static const char *
get_vax(int t)
{
switch(t){
default:
case CPU_SUBTYPE_VAX_ALL:
return("CPU_SUBTYPE_VAX_ALL");
case CPU_SUBTYPE_VAX780:
return("CPU_SUBTYPE_VAX780");
case CPU_SUBTYPE_VAX785:
return("CPU_SUBTYPE_VAX785");
case CPU_SUBTYPE_VAX750:
return("CPU_SUBTYPE_VAX750");
case CPU_SUBTYPE_VAX730:
return("CPU_SUBTYPE_VAX730");
case CPU_SUBTYPE_UVAXI:
return("CPU_SUBTYPE_UVAXI");
case CPU_SUBTYPE_UVAXII:
return("CPU_SUBTYPE_UVAXII");
case CPU_SUBTYPE_VAX8200:
return("CPU_SUBTYPE_VAX8200");
case CPU_SUBTYPE_VAX8500:
return("CPU_SUBTYPE_VAX8500");
case CPU_SUBTYPE_VAX8600:
return("CPU_SUBTYPE_VAX8600");
case CPU_SUBTYPE_VAX8650:
return("CPU_SUBTYPE_VAX8650");
case CPU_SUBTYPE_VAX8800:
return("CPU_SUBTYPE_VAX8800");
case CPU_SUBTYPE_UVAXIII:
return("CPU_SUBTYPE_UVAXIII");
}
}
static const char *
get_romp(int t)
{
switch(t){
default:
case CPU_SUBTYPE_RT_ALL:
return("CPU_SUBTYPE_RT_ALL");
case CPU_SUBTYPE_RT_PC:
return("CPU_SUBTYPE_RT_PC");
case CPU_SUBTYPE_RT_APC:
return("CPU_SUBTYPE_RT_APC");
case CPU_SUBTYPE_RT_135:
return("CPU_SUBTYPE_RT_135");
}
}
static const char *
get_mmax(int t)
{
switch(t){
default:
case CPU_SUBTYPE_MMAX_ALL:
return("CPU_SUBTYPE_MMAX_ALL");
case CPU_SUBTYPE_MMAX_JPC:
return("CPU_SUBTYPE_MMAX_JPC");
/* case CPU_SUBTYPE_MMAX_DPC: */
/* return("CPU_SUBTYPE_MMAX_DPC");*/
case CPU_SUBTYPE_SQT:
return("CPU_SUBTYPE_SQT");
case CPU_SUBTYPE_MMAX_APC_FPU:
return("CPU_SUBTYPE_MMAX_APC_FPU");
case CPU_SUBTYPE_MMAX_APC_FPA:
return("CPU_SUBTYPE_MMAX_APC_FPA");
case CPU_SUBTYPE_MMAX_XPC:
return("CPU_SUBTYPE_MMAX_XPC");
}
}
static const char *
get_intel(int t)
{
switch(t){
default:
/* case CPU_SUBTYPE_386: */
case CPU_SUBTYPE_I386_ALL:
return("CPU_SUBTYPE_I386_ALL");
return("CPU_SUBTYPE_386");
case CPU_SUBTYPE_486:
return("CPU_SUBTYPE_486");
case CPU_SUBTYPE_486SX:
return("CPU_SUBTYPE_486SX");
case CPU_SUBTYPE_586:
return("CPU_SUBTYPE_586");
case CPU_SUBTYPE_586SX:
return("CPU_SUBTYPE_586SX");
}
}
static const char *
get_mips(int t)
{
switch(t){
default:
case CPU_SUBTYPE_MIPS_ALL:
return("CPU_SUBTYPE_MIPS_ALL");
case CPU_SUBTYPE_MIPS_R2300:
return("CPU_SUBTYPE_MIPS_R2300");
case CPU_SUBTYPE_MIPS_R2600:
return("CPU_SUBTYPE_MIPS_R2600");
case CPU_SUBTYPE_MIPS_R2800:
return("CPU_SUBTYPE_MIPS_R2800");
case CPU_SUBTYPE_MIPS_R2000a:
return("CPU_SUBTYPE_MIPS_R2000a");
}
}
static const char *
get_m68k(int t)
{
switch(t){
default:
case CPU_SUBTYPE_MC680x0_ALL:
return("CPU_SUBTYPE_MC680x0_ALL ");
/* case CPU_SUBTYPE_MC68030: */
/* return("CPU_SUBTYPE_MC68030");*/
case CPU_SUBTYPE_MC68040:
return("CPU_SUBTYPE_MC68040");
case CPU_SUBTYPE_MC68030_ONLY:
return("CPU_SUBTYPE_MC68030_ONLY");
}
}
static const char *
get_hppa(int t)
{
switch(t){
default:
case CPU_SUBTYPE_HPPA_ALL:
/* case CPU_SUBTYPE_HPPA_7100: */
return("CPU_SUBTYPE_HPPA_ALL");
return("CPU_SUBTYPE_HPPA_7100");
case CPU_SUBTYPE_HPPA_7100LC:
return("CPU_SUBTYPE_HPPA_7100LC");
}
}
static const char *
get_arm(int t)
{
switch(t){
default:
case CPU_SUBTYPE_ARM_ALL:
return("CPU_SUBTYPE_ARM_ALL");
case CPU_SUBTYPE_ARM_A500_ARCH:
return("CPU_SUBTYPE_ARM_A500_ARCH");
case CPU_SUBTYPE_ARM_A500:
return("CPU_SUBTYPE_ARM_A500");
case CPU_SUBTYPE_ARM_A440:
return("CPU_SUBTYPE_ARM_A440");
case CPU_SUBTYPE_ARM_M4:
return("CPU_SUBTYPE_ARM_M4");
case CPU_SUBTYPE_ARM_A680:
return("CPU_SUBTYPE_ARM_A680");
}
}
static const char *
get_m88k(int t)
{
switch(t){
default:
case CPU_SUBTYPE_MC88000_ALL:
return("CPU_SUBTYPE_MC88000_ALL");
case CPU_SUBTYPE_MC88100:
return("CPU_SUBTYPE_MC88100");
case CPU_SUBTYPE_MC88110:
return("CPU_SUBTYPE_MC88110");
}
}
static const char *
get_ppc(int t)
{
switch(t){
default:
case CPU_SUBTYPE_MC98000_ALL:
return("CPU_SUBTYPE_MC98000_ALL");
case CPU_SUBTYPE_MC98601:
return("CPU_SUBTYPE_MC98601");
}
}
static const char *
get_i860(int t)
{
switch(t){
default:
case CPU_SUBTYPE_I860_ALL:
return("CPU_SUBTYPE_I860_ALL");
case CPU_SUBTYPE_I860_860:
return("CPU_SUBTYPE_I860_860");
}
}
static const char *
get_i680(int t)
{
switch(t){
default:
case CPU_SUBTYPE_I860_LITTLE_ALL:
return("CPU_SUBTYPE_I860_LITTLE_ALL");
case CPU_SUBTYPE_I860_LITTLE:
return("CPU_SUBTYPE_I860_LITTLE");
}
}
static const char *
get_sparc(int t)
{
switch(t){
default:
case CPU_SUBTYPE_SPARC_ALL:
return("CPU_SUBTYPE_SPARC_ALL");
}
}
static const char *
get_rs6k(int t)
{
switch(t){
default:
case CPU_SUBTYPE_RS6000_ALL:
return("CPU_SUBTYPE_RS6000_ALL");
case CPU_SUBTYPE_RS6000:
return("CPU_SUBTYPE_RS6000");
}
}
const char *
get_cpusubtype(int cputype, int t)
{
switch(cputype){
case CPU_TYPE_ANY:
return get_any(t);
case CPU_TYPE_VAX:
return get_vax(t);
case CPU_TYPE_ROMP:
return get_romp(t);
case CPU_TYPE_NS32032:
return get_mmax(t);
case CPU_TYPE_NS32332:
return get_mmax(t);
case CPU_TYPE_MC680x0:
return get_m68k(t);
case CPU_TYPE_I386:
return get_intel(t);
case CPU_TYPE_MIPS:
return get_mips(t);
case CPU_TYPE_NS32532:
return get_mmax(t);
case CPU_TYPE_HPPA:
return get_hppa(t);
case CPU_TYPE_ARM:
return get_arm(t);
case CPU_TYPE_MC88000:
return get_m88k(t);
case CPU_TYPE_SPARC:
return get_sparc(t);
case CPU_TYPE_I860:
return get_i860(t);
case CPU_TYPE_I860_LITTLE:
return get_i680(t);
case CPU_TYPE_RS6000:
return get_rs6k(t);
case CPU_TYPE_MC98000:
return get_ppc(t);
default:
return "unknown";
}
}
const char *
get_cputype(int type)
{
switch(type){
case CPU_TYPE_ANY:
return "CPU_TYPE_ANY";
case CPU_TYPE_VAX:
return "CPU_TYPE_VAX";
case CPU_TYPE_ROMP:
return "CPU_TYPE_ROMP";
case CPU_TYPE_NS32032:
return "CPU_TYPE_NS32032";
case CPU_TYPE_NS32332:
return "CPU_TYPE_NS32332";
case CPU_TYPE_MC680x0:
return "CPU_TYPE_MC680x0";
case CPU_TYPE_I386:
return "CPU_TYPE_I386";
case CPU_TYPE_MIPS:
return "CPU_TYPE_MIPS";
case CPU_TYPE_NS32532:
return "CPU_TYPE_MMAX";
case CPU_TYPE_HPPA:
return "CPU_TYPE_HPPA";
case CPU_TYPE_ARM:
return "CPU_TYPE_ARM";
case CPU_TYPE_MC88000:
return "CPU_TYPE_MC88000";
case CPU_TYPE_SPARC:
return "CPU_TYPE_SPARC";
case CPU_TYPE_I860:
return "CPU_TYPE_I860";
case CPU_TYPE_I860_LITTLE:
return "CPU_TYPE_I860_LITTLE";
case CPU_TYPE_RS6000:
return "CPU_TYPE_RS6000";
case CPU_TYPE_MC98000:
return "CPU_TYPE_MC98000";
default:
return "CPU_TYPE_unknown";
}
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.