This is cpu.c in view mode; [Download] [Up]
#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.