diff options
Diffstat (limited to 'c')
-rw-r--r-- | c/src/lib/libcpu/i386/ChangeLog | 7 | ||||
-rw-r--r-- | c/src/lib/libcpu/i386/cpuModel.h | 14 |
2 files changed, 21 insertions, 0 deletions
diff --git a/c/src/lib/libcpu/i386/ChangeLog b/c/src/lib/libcpu/i386/ChangeLog index a4bac69fe5..9c11972f70 100644 --- a/c/src/lib/libcpu/i386/ChangeLog +++ b/c/src/lib/libcpu/i386/ChangeLog @@ -1,3 +1,10 @@ +2008-12-03 Joel Sherrill <joel.sherrill@OARcorp.com> + Michael South <msouth@msouth.org> + + PR 1344/bsps + * cpuModel.h: Add use of TSC for nanoseconds granularity. i8254 is very + slow on some systems. TSC use is auto-detected by default. + 2008-08-16 Ralf Corsépius <ralf.corsepius@rtems.org> * cache.c, displayCpu.c, page.c: Add missing prototypes. diff --git a/c/src/lib/libcpu/i386/cpuModel.h b/c/src/lib/libcpu/i386/cpuModel.h index fb0c90fcfc..c5451d851b 100644 --- a/c/src/lib/libcpu/i386/cpuModel.h +++ b/c/src/lib/libcpu/i386/cpuModel.h @@ -31,4 +31,18 @@ extern unsigned char Cx86_step; /* cyrix processor identification */ extern void printCpuInfo(); /* Display this information on console in ascii form */ +/* determine if the CPU has a TSC */ +#define x86_has_tsc() \ + (x86_capability & (1 << 4)) + +static inline unsigned long long +rdtsc(void) +{ + /* Return the value of the on-chip cycle counter. */ + unsigned long long result; + asm volatile(".byte 0x0F, 0x31" : "=A" (result)); + return result; +} /* rdtsc */ + + #endif |