1 /* SPDX-License-Identifier: GPL-2.0 */ !! 1 /* 2 #ifndef __ASM_GENERIC_TIMEX_H !! 2 * linux/include/asm-i386/timex.h 3 #define __ASM_GENERIC_TIMEX_H !! 3 * >> 4 * i386 architecture timex specifications >> 5 */ >> 6 #ifndef _ASMi386_TIMEX_H >> 7 #define _ASMi386_TIMEX_H >> 8 >> 9 #include <linux/config.h> >> 10 #include <asm/msr.h> >> 11 >> 12 #ifdef CONFIG_MELAN >> 13 # define CLOCK_TICK_RATE 1189200 /* AMD Elan has different frequency! */ >> 14 #else >> 15 # define CLOCK_TICK_RATE 1193180 /* Underlying HZ */ >> 16 #endif >> 17 >> 18 #define CLOCK_TICK_FACTOR 20 /* Factor of both 1000000 and CLOCK_TICK_RATE */ >> 19 #define FINETUNE ((((((long)LATCH * HZ - CLOCK_TICK_RATE) << SHIFT_HZ) * \ >> 20 (1000000/CLOCK_TICK_FACTOR) / (CLOCK_TICK_RATE/CLOCK_TICK_FACTOR)) \ >> 21 << (SHIFT_SCALE-SHIFT_HZ)) / HZ) 4 22 5 /* 23 /* 6 * If you have a cycle counter, return the val !! 24 * Standard way to access the cycle counter on i586+ CPUs. >> 25 * Currently only used on SMP. >> 26 * >> 27 * If you really have a SMP machine with i486 chips or older, >> 28 * compile for that, and this will just always return zero. >> 29 * That's ok, it just means that the nicer scheduling heuristics >> 30 * won't work for you. >> 31 * >> 32 * We only use the low 32 bits, and we'd simply better make sure >> 33 * that we reschedule before that wraps. Scheduling at least every >> 34 * four billion cycles just basically sounds like a good idea, >> 35 * regardless of how fast the machine is. 7 */ 36 */ 8 typedef unsigned long cycles_t; !! 37 typedef unsigned long long cycles_t; 9 #ifndef get_cycles !! 38 10 static inline cycles_t get_cycles(void) !! 39 extern cycles_t cacheflush_time; >> 40 >> 41 static inline cycles_t get_cycles (void) 11 { 42 { >> 43 #ifndef CONFIG_X86_TSC 12 return 0; 44 return 0; 13 } !! 45 #else >> 46 unsigned long long ret; >> 47 >> 48 rdtscll(ret); >> 49 return ret; 14 #endif 50 #endif >> 51 } 15 52 16 /* !! 53 extern unsigned long cpu_khz; 17 * Architectures are encouraged to implement r !! 54 18 * and define this in order to avoid the expen !! 55 #define vxtime_lock() do {} while (0) 19 * calibration during boot. !! 56 #define vxtime_unlock() do {} while (0) 20 */ << 21 #undef ARCH_HAS_READ_CURRENT_TIMER << 22 57 23 #endif /* __ASM_GENERIC_TIMEX_H */ !! 58 #endif 24 59
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.