CVSROOT: /cvs
Module name: src
Changes by: [email protected] 2012/11/10 02:45:06
Modified files:
sys/arch/amd64/amd64: identcpu.c locore.S
sys/arch/amd64/include: cpu.h specialreg.h
sys/arch/i386/i386: locore.s machdep.c
sys/arch/i386/include: cpu.h specialreg.h
sys/arch/i386/isa: clock.c
Log message:
Recent x86 CPUs come with a constant time stamp counter. If this is
the case we verify if the CPU supports a specific version of the
architectural performance monitoring feature and read out the current
frequency from the fixed-function performance counter of the unhalted
core.
My initial motivation to implement this was the Soekris net6501-70
which comes with an Intel Atom E6xx 1.60GHz CPU. It has a constant
time stamp counter plus speed step support and boots on the lowest
frequency of 600MHz. This caused hw.cpuspeed and hw.setperf to
reflect the wrong values.
The diff is a cooperation work with jsg@. The fixed-function
performance counter read code comes from a former diff of him.
OK jsg@