[PATCH] x86_64 merge: arch + asm
[opensuse:kernel.git] / include / asm-x86_64 / vsyscall.h
1 #ifndef _ASM_X86_64_VSYSCALL_H_
2 #define _ASM_X86_64_VSYSCALL_H_
3
4 enum vsyscall_num {
5         __NR_vgettimeofday,
6         __NR_vtime,
7 };
8
9 #define VSYSCALL_START (-10UL << 20)
10 #define VSYSCALL_SIZE 1024
11 #define VSYSCALL_END (-2UL << 20)
12 #define VSYSCALL_ADDR(vsyscall_nr) (VSYSCALL_START+VSYSCALL_SIZE*(vsyscall_nr))
13
14 #ifdef __KERNEL__
15
16 #define __section_last_tsc_low  __attribute__ ((unused, __section__ (".last_tsc_low")))
17 #define __section_delay_at_last_interrupt       __attribute__ ((unused, __section__ (".delay_at_last_interrupt")))
18 #define __section_fast_gettimeoffset_quotient   __attribute__ ((unused, __section__ (".fast_gettimeoffset_quotient")))
19 #define __section_wall_jiffies __attribute__ ((unused, __section__ (".wall_jiffies")))
20 #define __section_jiffies __attribute__ ((unused, __section__ (".jiffies")))
21 #define __section_sys_tz __attribute__ ((unused, __section__ (".sys_tz")))
22 #define __section_xtime __attribute__ ((unused, __section__ (".xtime")))
23 #define __section_vxtime_sequence __attribute__ ((unused, __section__ (".vxtime_sequence")))
24
25 /* vsyscall space (readonly) */
26 extern long __vxtime_sequence[2];
27 extern int __delay_at_last_interrupt;
28 extern unsigned long __last_tsc_low;
29 extern unsigned long __fast_gettimeoffset_quotient;
30 extern struct timeval __xtime;
31 extern volatile unsigned long __jiffies;
32 extern unsigned long __wall_jiffies;
33 extern struct timezone __sys_tz;
34
35 /* kernel space (writeable) */
36 extern unsigned long last_tsc_low;
37 extern int delay_at_last_interrupt;
38 extern unsigned long fast_gettimeoffset_quotient;
39 extern unsigned long wall_jiffies;
40 extern struct timezone sys_tz;
41 extern long vxtime_sequence[2];
42
43 #define vxtime_lock() do { vxtime_sequence[0]++; wmb(); } while(0)
44 #define vxtime_unlock() do { wmb(); vxtime_sequence[1]++; } while (0)
45
46 #endif /* __KERNEL__ */
47
48 #endif /* _ASM_X86_64_VSYSCALL_H_ */