linux/arch/powerpc/include/asm/timex.h
<<
>>
Prefs
   1#ifndef _ASM_POWERPC_TIMEX_H
   2#define _ASM_POWERPC_TIMEX_H
   3
   4#ifdef __KERNEL__
   5
   6/*
   7 * PowerPC architecture timex specifications
   8 */
   9
  10#include <asm/cputable.h>
  11#include <asm/reg.h>
  12
  13#define CLOCK_TICK_RATE 1024000 /* Underlying HZ */
  14
  15typedef unsigned long cycles_t;
  16
  17static inline cycles_t get_cycles(void)
  18{
  19#ifdef __powerpc64__
  20        return mftb();
  21#else
  22        cycles_t ret;
  23
  24        /*
  25         * For the "cycle" counter we use the timebase lower half.
  26         * Currently only used on SMP.
  27         */
  28
  29        ret = 0;
  30
  31        __asm__ __volatile__(
  32#ifdef CONFIG_8xx
  33                "97:    mftb %0\n"
  34#else
  35                "97:    mfspr %0, %2\n"
  36#endif
  37                "99:\n"
  38                ".section __ftr_fixup,\"a\"\n"
  39                ".align 2\n"
  40                "98:\n"
  41                "       .long %1\n"
  42                "       .long 0\n"
  43                "       .long 97b-98b\n"
  44                "       .long 99b-98b\n"
  45                "       .long 0\n"
  46                "       .long 0\n"
  47                ".previous"
  48#ifdef CONFIG_8xx
  49                : "=r" (ret) : "i" (CPU_FTR_601));
  50#else
  51                : "=r" (ret) : "i" (CPU_FTR_601), "i" (SPRN_TBRL));
  52#endif
  53        return ret;
  54#endif
  55}
  56
  57#endif  /* __KERNEL__ */
  58#endif  /* _ASM_POWERPC_TIMEX_H */
  59