| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef _ASM_X86_64_VSYSCALL_H_ | 
|  | 2 | #define _ASM_X86_64_VSYSCALL_H_ | 
|  | 3 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 4 | enum vsyscall_num { | 
|  | 5 | __NR_vgettimeofday, | 
|  | 6 | __NR_vtime, | 
| Vojtech Pavlik | c08c820 | 2006-09-26 10:52:28 +0200 | [diff] [blame] | 7 | __NR_vgetcpu, | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 8 | }; | 
|  | 9 |  | 
|  | 10 | #define VSYSCALL_START (-10UL << 20) | 
|  | 11 | #define VSYSCALL_SIZE 1024 | 
|  | 12 | #define VSYSCALL_END (-2UL << 20) | 
|  | 13 | #define VSYSCALL_ADDR(vsyscall_nr) (VSYSCALL_START+VSYSCALL_SIZE*(vsyscall_nr)) | 
|  | 14 |  | 
|  | 15 | #ifdef __KERNEL__ | 
| David Woodhouse | 75da736 | 2006-09-16 12:15:48 -0700 | [diff] [blame] | 16 | #include <linux/seqlock.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 17 |  | 
|  | 18 | #define __section_vxtime __attribute__ ((unused, __section__ (".vxtime"), aligned(16))) | 
| Vojtech Pavlik | c08c820 | 2006-09-26 10:52:28 +0200 | [diff] [blame] | 19 | #define __section_vgetcpu_mode __attribute__ ((unused, __section__ (".vgetcpu_mode"), aligned(16))) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 20 | #define __section_jiffies __attribute__ ((unused, __section__ (".jiffies"), aligned(16))) | 
|  | 21 | #define __section_sys_tz __attribute__ ((unused, __section__ (".sys_tz"), aligned(16))) | 
|  | 22 | #define __section_sysctl_vsyscall __attribute__ ((unused, __section__ (".sysctl_vsyscall"), aligned(16))) | 
|  | 23 | #define __section_xtime __attribute__ ((unused, __section__ (".xtime"), aligned(16))) | 
|  | 24 | #define __section_xtime_lock __attribute__ ((unused, __section__ (".xtime_lock"), aligned(16))) | 
|  | 25 |  | 
|  | 26 | #define VXTIME_TSC	1 | 
|  | 27 | #define VXTIME_HPET	2 | 
| Andi Kleen | 312df5f | 2005-05-16 21:53:28 -0700 | [diff] [blame] | 28 | #define VXTIME_PMTMR	3 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 29 |  | 
| Vojtech Pavlik | c08c820 | 2006-09-26 10:52:28 +0200 | [diff] [blame] | 30 | #define VGETCPU_RDTSCP	1 | 
|  | 31 | #define VGETCPU_LSL	2 | 
|  | 32 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 33 | struct vxtime_data { | 
|  | 34 | long hpet_address;	/* HPET base address */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 35 | int last; | 
|  | 36 | unsigned long last_tsc; | 
|  | 37 | long quot; | 
|  | 38 | long tsc_quot; | 
|  | 39 | int mode; | 
|  | 40 | }; | 
|  | 41 |  | 
| Stephen Hemminger | 77a7533 | 2006-01-11 22:46:30 +0100 | [diff] [blame] | 42 | #define hpet_readl(a)           readl((const void __iomem *)fix_to_virt(FIX_HPET_BASE) + a) | 
|  | 43 | #define hpet_writel(d,a)        writel(d, (void __iomem *)fix_to_virt(FIX_HPET_BASE) + a) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 44 |  | 
|  | 45 | /* vsyscall space (readonly) */ | 
|  | 46 | extern struct vxtime_data __vxtime; | 
| Vojtech Pavlik | c08c820 | 2006-09-26 10:52:28 +0200 | [diff] [blame] | 47 | extern int __vgetcpu_mode; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 48 | extern struct timespec __xtime; | 
|  | 49 | extern volatile unsigned long __jiffies; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 50 | extern struct timezone __sys_tz; | 
|  | 51 | extern seqlock_t __xtime_lock; | 
|  | 52 |  | 
|  | 53 | /* kernel space (writeable) */ | 
|  | 54 | extern struct vxtime_data vxtime; | 
| Vojtech Pavlik | c08c820 | 2006-09-26 10:52:28 +0200 | [diff] [blame] | 55 | extern int vgetcpu_mode; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 56 | extern struct timezone sys_tz; | 
|  | 57 | extern int sysctl_vsyscall; | 
|  | 58 | extern seqlock_t xtime_lock; | 
|  | 59 |  | 
| Andi Kleen | 312df5f | 2005-05-16 21:53:28 -0700 | [diff] [blame] | 60 | extern int sysctl_vsyscall; | 
|  | 61 |  | 
| Vojtech Pavlik | c08c820 | 2006-09-26 10:52:28 +0200 | [diff] [blame] | 62 | extern void vsyscall_set_cpu(int cpu); | 
|  | 63 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 64 | #define ARCH_HAVE_XTIME_LOCK 1 | 
|  | 65 |  | 
|  | 66 | #endif /* __KERNEL__ */ | 
|  | 67 |  | 
|  | 68 | #endif /* _ASM_X86_64_VSYSCALL_H_ */ |