X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fcpuid%2Fcpuid.c;h=026875dcae86b3188115b5fc3513e6a78dfbf6ff;hb=0cfb63013bd23d9820af92cd10035bac461f9845;hp=35e0b7ae8d779b8f371f4707d621db270146e304;hpb=9c0951e6f63564cf6c655680fd518c37e666bd78;p=ccan diff --git a/ccan/cpuid/cpuid.c b/ccan/cpuid/cpuid.c index 35e0b7ae..026875dc 100644 --- a/ccan/cpuid/cpuid.c +++ b/ccan/cpuid/cpuid.c @@ -220,9 +220,14 @@ cputype_t cpuid_get_cpu_type(void) return cputype; } -const char *cpuid_get_cpu_type_string(const cputype_t cputype) +bool cpuid_sprintf_cputype(const cputype_t cputype, char *buf) { - return cpuids[(int)cputype]; + if (cputype == CT_NONE) + return false; + + memcpy(buf, cpuids[(int)cputype], 12); + buf[12] = '\0'; + return true; } uint32_t cpuid_highest_ext_func_supported(void) @@ -298,13 +303,16 @@ void cpuid(cpuid_t info, uint32_t *buf) buf[3] = edx; break; case CPU_EXTENDED_L2_CACHE_FEATURES: - *buf = ecx; + buf[0] = ecx & 0xFF; /* Line size. */ + buf[1] = (ecx >> 12) & 0xFF; /* Associativity. */ + buf[2] = ecx >> 16; /* Cache size. */ break; case CPU_ADV_POWER_MGT_INFO: *buf = edx; break; case CPU_VIRT_PHYS_ADDR_SIZES: - *buf = eax; + buf[0] = eax & 0xFF; /* physical. */ + buf[1] = (eax >> 8) & 0xFF; /* virtual. */ break; default: *buf = 0xbaadf00d;