ftp.nice.ch/pub/next/unix/admin/qlipo.1.1.s.tar.gz#/qlipo-1.1/cpu.c

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.