blob: 7457a5d7b4a108be3f6953f27a56f793f8d9c782 [file] [log] [blame]
Vegard Nossum77ef50a2008-06-18 17:08:48 +02001#ifndef ASM_X86__TIME_H
2#define ASM_X86__TIME_H
Rusty Russelld3561b72006-12-07 02:14:07 +01003
Glauber de Oliveira Costaee238e52008-01-30 13:31:10 +01004extern void hpet_time_init(void);
5
Thomas Gleixnerfe599f92008-01-30 13:30:26 +01006#include <asm/mc146818rtc.h>
Glauber de Oliveira Costaee238e52008-01-30 13:31:10 +01007#ifdef CONFIG_X86_32
8#include <linux/efi.h>
Rusty Russelld3561b72006-12-07 02:14:07 +01009
10static inline unsigned long native_get_wallclock(void)
11{
12 unsigned long retval;
13
14 if (efi_enabled)
15 retval = efi_get_time();
16 else
17 retval = mach_get_cmos_time();
18
19 return retval;
20}
21
22static inline int native_set_wallclock(unsigned long nowtime)
23{
24 int retval;
25
26 if (efi_enabled)
27 retval = efi_set_rtc_mmss(nowtime);
28 else
29 retval = mach_set_rtc_mmss(nowtime);
30
31 return retval;
32}
33
Glauber de Oliveira Costaee238e52008-01-30 13:31:10 +010034#else
35extern void native_time_init_hook(void);
36
37static inline unsigned long native_get_wallclock(void)
38{
39 return mach_get_cmos_time();
40}
41
42static inline int native_set_wallclock(unsigned long nowtime)
43{
44 return mach_set_rtc_mmss(nowtime);
45}
46
47#endif
Zachary Amsdene30fab32007-03-05 00:30:39 -080048
Rusty Russelld3561b72006-12-07 02:14:07 +010049#ifdef CONFIG_PARAVIRT
50#include <asm/paravirt.h>
Rusty Russelld3561b72006-12-07 02:14:07 +010051#else /* !CONFIG_PARAVIRT */
52
53#define get_wallclock() native_get_wallclock()
54#define set_wallclock(x) native_set_wallclock(x)
Zachary Amsdene30fab32007-03-05 00:30:39 -080055#define choose_time_init() hpet_time_init
Rusty Russelld3561b72006-12-07 02:14:07 +010056
57#endif /* CONFIG_PARAVIRT */
58
Alok Kataria8fbbc4b2008-07-01 11:43:34 -070059extern unsigned long __init calibrate_cpu(void);
60
Vegard Nossum77ef50a2008-06-18 17:08:48 +020061#endif /* ASM_X86__TIME_H */