00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00035 #include <cpu.h>
00036 #include <arch.h>
00037 #include <arch/register.h>
00038 #include <arch/asm.h>
00039 #include <print.h>
00040
00041 void cpu_arch_init(void)
00042 {
00043 }
00044
00045 void cpu_identify(void)
00046 {
00047 CPU->arch.ver.value = ver_read();
00048 }
00049
00050 void cpu_print_report(cpu_t *m)
00051 {
00052 char *manuf, *impl;
00053
00054 switch (CPU->arch.ver.manuf) {
00055 case MANUF_FUJITSU:
00056 manuf = "Fujitsu";
00057 break;
00058 case MANUF_ULTRASPARC:
00059 manuf = "UltraSPARC";
00060 break;
00061 case MANUF_SUN:
00062 manuf = "Sun";
00063 break;
00064 default:
00065 manuf = "Unknown";
00066 break;
00067 }
00068
00069 switch (CPU->arch.ver.impl) {
00070 case IMPL_ULTRASPARCI:
00071 impl = "UltraSPARC I";
00072 break;
00073 case IMPL_ULTRASPARCII:
00074 impl = "UltraSPARC II";
00075 break;
00076 case IMPL_ULTRASPARCII_I:
00077 impl = "UltraSPARC IIi";
00078 break;
00079 case IMPL_ULTRASPARCII_E:
00080 impl = "UltraSPARC IIe";
00081 break;
00082 case IMPL_ULTRASPARCIII:
00083 impl = "UltraSPARC III";
00084 break;
00085 case IMPL_ULTRASPARCIV_PLUS:
00086 impl = "UltraSPARC IV+";
00087 break;
00088 case IMPL_SPARC64V:
00089 impl = "SPARC 64V";
00090 break;
00091 default:
00092 impl = "Unknown";
00093 break;
00094 }
00095
00096 printf("cpu%d: manuf=%s, impl=%s, mask=%d\n", CPU->id, manuf, impl, CPU->arch.ver.mask);
00097 }
00098