uint64_t prfsts; prfsts = rdmsr64(IA32_PERF_STS); tscGranularity = (uint32_t)(prfsts >> BusRatioShift) & BusRatioMask; tscFCvtt2n = busFCvtt2n / (uint64_t)tscGranularity; tscFreq = ((1 * Giga) << 32) / tscFCvtt2n; tscFCvtn2t = 0xFFFFFFFFFFFFFFFFULL / tscFCvtt2n; kprintf(" TSC: Frequency = %6d.%04dMHz, " "cvtt2n = %08X.%08X, cvtn2t = %08X.%08X, gran = %d\n", (uint32_t)(tscFreq / Mega), (uint32_t)(tscFreq % Mega), (uint32_t)(tscFCvtt2n >> 32), (uint32_t)tscFCvtt2n, (uint32_t)(tscFCvtn2t >> 32), (uint32_t)tscFCvtn2t, tscGranularity); /* * Calculate conversion from BUS to TSC */ bus2tsc = tmrCvt(busFCvtt2n, tscFCvtn2t);