]> err.no Git - linux-2.6/blob - include/asm-x86/time.h
x86: prepare time related functions for paravirt
[linux-2.6] / include / asm-x86 / time.h
1 #ifndef _ASMX86_TIME_H
2 #define _ASMX86_TIME_H
3
4 extern void (*late_time_init)(void);
5 extern void hpet_time_init(void);
6
7 #include <asm/mc146818rtc.h>
8 #ifdef CONFIG_X86_32
9 #include <linux/efi.h>
10
11 static inline unsigned long native_get_wallclock(void)
12 {
13         unsigned long retval;
14
15         if (efi_enabled)
16                 retval = efi_get_time();
17         else
18                 retval = mach_get_cmos_time();
19
20         return retval;
21 }
22
23 static inline int native_set_wallclock(unsigned long nowtime)
24 {
25         int retval;
26
27         if (efi_enabled)
28                 retval = efi_set_rtc_mmss(nowtime);
29         else
30                 retval = mach_set_rtc_mmss(nowtime);
31
32         return retval;
33 }
34
35 #else
36 extern void native_time_init_hook(void);
37
38 static inline unsigned long native_get_wallclock(void)
39 {
40         return mach_get_cmos_time();
41 }
42
43 static inline int native_set_wallclock(unsigned long nowtime)
44 {
45         return mach_set_rtc_mmss(nowtime);
46 }
47
48 #endif
49
50 #ifdef CONFIG_PARAVIRT
51 #include <asm/paravirt.h>
52 #else /* !CONFIG_PARAVIRT */
53
54 #define get_wallclock() native_get_wallclock()
55 #define set_wallclock(x) native_set_wallclock(x)
56 #define choose_time_init() hpet_time_init
57
58 #endif /* CONFIG_PARAVIRT */
59
60 #endif