]>
Commit | Line | Data |
---|---|---|
db276fa1 | 1 | /* High precision, low overhead timing functions. i686 version. |
f7a9f785 | 2 | Copyright (C) 1998-2016 Free Software Foundation, Inc. |
db276fa1 UD |
3 | This file is part of the GNU C Library. |
4 | Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. | |
5 | ||
6 | The GNU C Library is free software; you can redistribute it and/or | |
41bdb6e2 AJ |
7 | modify it under the terms of the GNU Lesser General Public |
8 | License as published by the Free Software Foundation; either | |
9 | version 2.1 of the License, or (at your option) any later version. | |
db276fa1 UD |
10 | |
11 | The GNU C Library is distributed in the hope that it will be useful, | |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
41bdb6e2 | 14 | Lesser General Public License for more details. |
db276fa1 | 15 | |
41bdb6e2 | 16 | You should have received a copy of the GNU Lesser General Public |
59ba27a6 PE |
17 | License along with the GNU C Library; if not, see |
18 | <http://www.gnu.org/licenses/>. */ | |
db276fa1 UD |
19 | |
20 | #ifndef _HP_TIMING_H | |
21 | #define _HP_TIMING_H 1 | |
22 | ||
db276fa1 UD |
23 | /* We always assume having the timestamp register. */ |
24 | #define HP_TIMING_AVAIL (1) | |
05502548 | 25 | #define HP_SMALL_TIMING_AVAIL (1) |
db276fa1 UD |
26 | |
27 | /* We indeed have inlined functions. */ | |
28 | #define HP_TIMING_INLINE (1) | |
29 | ||
30 | /* We use 64bit values for the times. */ | |
31 | typedef unsigned long long int hp_timing_t; | |
32 | ||
db276fa1 UD |
33 | /* That's quite simple. Use the `rdtsc' instruction. Note that the value |
34 | might not be 100% accurate since there might be some more instructions | |
35 | running in this moment. This could be changed by using a barrier like | |
36 | 'cpuid' right before the `rdtsc' instruciton. But we are not interested | |
37 | in accurate clock cycles here so we don't do this. */ | |
38 | #define HP_TIMING_NOW(Var) __asm__ __volatile__ ("rdtsc" : "=A" (Var)) | |
39 | ||
86e1a7ff | 40 | #include <hp-timing-common.h> |
db276fa1 UD |
41 | |
42 | #endif /* hp-timing.h */ |