aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-02-17 15:33:13 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 04:13:29 -0500
commit3763be32d591cacf808c36390a8af3f2784cde5f (patch)
tree124ae01bf91905a6d3af931caf28acf82900699b /arch/sparc64/kernel
parent3f19a84e39619053f117bd5bb9183c5bfea7db45 (diff)
[SPARC64]: Define ARCH_HAS_READ_CURRENT_TIMER.
This gives more consistent bogomips and delay() semantics, especially on sun4v. It gives weird looking values though... Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel')
-rw-r--r--arch/sparc64/kernel/time.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/arch/sparc64/kernel/time.c b/arch/sparc64/kernel/time.c
index 7041146f86f0..f6275adbc811 100644
--- a/arch/sparc64/kernel/time.c
+++ b/arch/sparc64/kernel/time.c
@@ -1029,11 +1029,10 @@ static void sparc64_start_timers(irqreturn_t (*cfunc)(int, void *, struct pt_reg
1029} 1029}
1030 1030
1031struct freq_table { 1031struct freq_table {
1032 unsigned long udelay_val_ref;
1033 unsigned long clock_tick_ref; 1032 unsigned long clock_tick_ref;
1034 unsigned int ref_freq; 1033 unsigned int ref_freq;
1035}; 1034};
1036static DEFINE_PER_CPU(struct freq_table, sparc64_freq_table) = { 0, 0, 0 }; 1035static DEFINE_PER_CPU(struct freq_table, sparc64_freq_table) = { 0, 0 };
1037 1036
1038unsigned long sparc64_get_clock_tick(unsigned int cpu) 1037unsigned long sparc64_get_clock_tick(unsigned int cpu)
1039{ 1038{
@@ -1055,16 +1054,11 @@ static int sparc64_cpufreq_notifier(struct notifier_block *nb, unsigned long val
1055 1054
1056 if (!ft->ref_freq) { 1055 if (!ft->ref_freq) {
1057 ft->ref_freq = freq->old; 1056 ft->ref_freq = freq->old;
1058 ft->udelay_val_ref = cpu_data(cpu).udelay_val;
1059 ft->clock_tick_ref = cpu_data(cpu).clock_tick; 1057 ft->clock_tick_ref = cpu_data(cpu).clock_tick;
1060 } 1058 }
1061 if ((val == CPUFREQ_PRECHANGE && freq->old < freq->new) || 1059 if ((val == CPUFREQ_PRECHANGE && freq->old < freq->new) ||
1062 (val == CPUFREQ_POSTCHANGE && freq->old > freq->new) || 1060 (val == CPUFREQ_POSTCHANGE && freq->old > freq->new) ||
1063 (val == CPUFREQ_RESUMECHANGE)) { 1061 (val == CPUFREQ_RESUMECHANGE)) {
1064 cpu_data(cpu).udelay_val =
1065 cpufreq_scale(ft->udelay_val_ref,
1066 ft->ref_freq,
1067 freq->new);
1068 cpu_data(cpu).clock_tick = 1062 cpu_data(cpu).clock_tick =
1069 cpufreq_scale(ft->clock_tick_ref, 1063 cpufreq_scale(ft->clock_tick_ref,
1070 ft->ref_freq, 1064 ft->ref_freq,