linux/arch/cris/kernel/time.c
<<
>>
Prefs
   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
  39extern unsigned long loops_per_jiffy; /* init/main.c */
  40unsigned long loops_per_usec;
  41
  42int set_rtc_mmss(unsigned long nowtime)
  43{
  44        D(printk(KERN_DEBUG "set_rtc_mmss(%lu)\n", nowtime));
  45        return 0;
  46}
  47
  48/* grab the time from the RTC chip */
  49unsigned long get_cmos_time(void)
  50{
  51        return 0;
  52}
  53
  54
  55int update_persistent_clock(struct timespec now)
  56{
  57        return set_rtc_mmss(now.tv_sec);
  58}
  59
  60void read_persistent_clock(struct timespec *ts)
  61{
  62        ts->tv_sec = 0;
  63        ts->tv_nsec = 0;
  64}
  65
  66
  67extern void cris_profile_sample(struct pt_regs* regs);
  68
  69void
  70cris_do_profile(struct pt_regs* regs)
  71{
  72
  73#ifdef CONFIG_SYSTEM_PROFILER
  74        cris_profile_sample(regs);
  75#endif
  76
  77#ifdef CONFIG_PROFILING
  78        profile_tick(CPU_PROFILING);
  79#endif
  80}
  81
  82unsigned long long sched_clock(void)
  83{
  84        return (unsigned long long)jiffies * (NSEC_PER_SEC / HZ) +
  85                get_ns_in_jiffie();
  86}
  87
  88static int
  89__init init_udelay(void)
  90{
  91        loops_per_usec = (loops_per_jiffy * HZ) / 1000000;
  92        return 0;
  93}
  94
  95__initcall(init_udelay);
  96