1 /* 2 * linux/arch/cris/kernel/time.c 3 * 4 * Copyright (C) 1991, 1992, 1995 Linus Torvalds 5 * Copyright (C) 1999, 2000, 2001 Axis Communications AB 6 * 7 * 1994-07-02 Alan Modra 8 * fixed set_rtc_mmss, fixed time.year for >= 2000, new mktime 9 * 1995-03-26 Markus Kuhn 10 * fixed 500 ms bug at call to set_rtc_mmss, fixed DS12887 11 * precision CMOS clock update 12 * 1996-05-03 Ingo Molnar 13 * fixed time warps in do_[slow|fast]_gettimeoffset() 14 * 1997-09-10 Updated NTP code according to technical memorandum Jan '96 15 * "A Kernel Model for Precision Timekeeping" by Dave Mills 16 * 17 * Linux/CRIS specific code: 18 * 19 * Authors: Bjorn Wesen 20 * Johan Adolfsson 21 * 22 */ 23 24 #include <linux/errno.h> 25 #include <linux/module.h> 26 #include <linux/param.h> 27 #include <linux/jiffies.h> 28 #include <linux/bcd.h> 29 #include <linux/timex.h> 30 #include <linux/init.h> 31 #include <linux/profile.h> 32 #include <linux/sched.h> /* just for sched_clock() - funny that */ 33 34 35 #define D(x) 36 37 #define TICK_SIZE tick 38 39 extern unsigned long loops_per_jiffy; /* init/main.c */ 40 unsigned long loops_per_usec; 41 42 extern void cris_profile_sample(struct pt_regs* regs); 43 44 void cris_do_profile(struct pt_regs * regs)45cris_do_profile(struct pt_regs* regs) 46 { 47 48 #ifdef CONFIG_SYSTEM_PROFILER 49 cris_profile_sample(regs); 50 #endif 51 52 #ifdef CONFIG_PROFILING 53 profile_tick(CPU_PROFILING); 54 #endif 55 } 56 57 #ifndef CONFIG_GENERIC_SCHED_CLOCK sched_clock(void)58unsigned long long sched_clock(void) 59 { 60 return (unsigned long long)jiffies * (NSEC_PER_SEC / HZ) + 61 get_ns_in_jiffie(); 62 } 63 #endif 64 65 static int init_udelay(void)66__init init_udelay(void) 67 { 68 loops_per_usec = (loops_per_jiffy * HZ) / 1000000; 69 return 0; 70 } 71 72 __initcall(init_udelay); 73