[BACK]Return to tsc.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / x86 / x86

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/arch/x86/x86/tsc.c between version 1.30 and 1.31

version 1.30, 2011/08/08 17:00:23 version 1.31, 2013/06/27 00:37:34
Line 51  u_int tsc_get_timecount(struct timecount
Line 51  u_int tsc_get_timecount(struct timecount
 uint64_t        tsc_freq; /* exported for sysctl */  uint64_t        tsc_freq; /* exported for sysctl */
 static int64_t  tsc_drift_max = 250;    /* max cycles */  static int64_t  tsc_drift_max = 250;    /* max cycles */
 static int64_t  tsc_drift_observed;  static int64_t  tsc_drift_observed;
   static bool     tsc_good;
   
 static volatile int64_t tsc_sync_val;  static volatile int64_t tsc_sync_val;
 static volatile struct cpu_info *tsc_sync_cpu;  static volatile struct cpu_info *tsc_sync_cpu;
Line 76  tsc_tc_init(void)
Line 77  tsc_tc_init(void)
         ci = curcpu();          ci = curcpu();
         safe = false;          safe = false;
         tsc_freq = ci->ci_data.cpu_cc_freq;          tsc_freq = ci->ci_data.cpu_cc_freq;
           tsc_good = (cpu_feature[0] & CPUID_MSR) != 0 && rdmsr(MSR_TSC) != 0;
   
         if (cpu_vendor == CPUVENDOR_INTEL) {          if (cpu_vendor == CPUVENDOR_INTEL) {
                 /*                  /*
Line 258  cpu_hascounter(void)
Line 260  cpu_hascounter(void)
         return cpu_feature[0] & CPUID_TSC;          return cpu_feature[0] & CPUID_TSC;
 }  }
   
   extern int cpu_msr_tsc;
   
 uint64_t  uint64_t
 cpu_counter_serializing(void)  cpu_counter_serializing(void)
 {  {
         if (cpu_feature[0] & CPUID_MSR)          if (tsc_good)
                 return rdmsr(MSR_TSC);                  return rdmsr(MSR_TSC);
         else          else
                 return cpu_counter();                  return cpu_counter();

Legend:
Removed from v.1.30  
changed lines
  Added in v.1.31

CVSweb <webmaster@jp.NetBSD.org>