blob: 4df4a41029a32d22bb5c5ce618c8743637f2db77 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * include/asm-s390/timex.h
3 *
4 * S390 version
5 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
6 *
7 * Derived from "include/asm-i386/timex.h"
8 * Copyright (C) 1992, Linus Torvalds
9 */
10
11#ifndef _ASM_S390_TIMEX_H
12#define _ASM_S390_TIMEX_H
13
14#define CLOCK_TICK_RATE 1193180 /* Underlying HZ */
15
16typedef unsigned long long cycles_t;
17
Linus Torvalds1da177e2005-04-16 15:20:36 -070018static inline unsigned long long get_clock (void)
19{
20 unsigned long long clk;
21
Martin Schwidefsky94c12cc2006-09-28 16:56:43 +020022#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2)
23 asm volatile("stck %0" : "=Q" (clk) : : "cc");
24#else /* __GNUC__ */
25 asm volatile("stck 0(%1)" : "=m" (clk) : "a" (&clk) : "cc");
26#endif /* __GNUC__ */
Linus Torvalds1da177e2005-04-16 15:20:36 -070027 return clk;
28}
29
Martin Schwidefsky94c12cc2006-09-28 16:56:43 +020030static inline cycles_t get_cycles(void)
31{
32 return (cycles_t) get_clock() >> 2;
33}
34
Linus Torvalds1da177e2005-04-16 15:20:36 -070035#endif