2005-04-16 15:20:36 -07:00
# ifndef _ASM_X86_64_VSYSCALL_H_
# define _ASM_X86_64_VSYSCALL_H_
enum vsyscall_num {
__NR_vgettimeofday ,
__NR_vtime ,
2006-09-26 10:52:28 +02:00
__NR_vgetcpu ,
2005-04-16 15:20:36 -07:00
} ;
# define VSYSCALL_START (-10UL << 20)
# define VSYSCALL_SIZE 1024
# define VSYSCALL_END (-2UL << 20)
2006-12-07 02:14:09 +01:00
# define VSYSCALL_MAPPED_PAGES 1
2005-04-16 15:20:36 -07:00
# define VSYSCALL_ADDR(vsyscall_nr) (VSYSCALL_START+VSYSCALL_SIZE*(vsyscall_nr))
# ifdef __KERNEL__
2006-09-16 12:15:48 -07:00
# include <linux/seqlock.h>
2005-04-16 15:20:36 -07:00
# define __section_vxtime __attribute__ ((unused, __section__ (".vxtime"), aligned(16)))
2006-09-26 10:52:28 +02:00
# define __section_vgetcpu_mode __attribute__ ((unused, __section__ (".vgetcpu_mode"), aligned(16)))
2005-04-16 15:20:36 -07:00
# define __section_jiffies __attribute__ ((unused, __section__ (".jiffies"), aligned(16)))
# define __section_sys_tz __attribute__ ((unused, __section__ (".sys_tz"), aligned(16)))
# define __section_sysctl_vsyscall __attribute__ ((unused, __section__ (".sysctl_vsyscall"), aligned(16)))
# define __section_xtime __attribute__ ((unused, __section__ (".xtime"), aligned(16)))
# define __section_xtime_lock __attribute__ ((unused, __section__ (".xtime_lock"), aligned(16)))
# define VXTIME_TSC 1
# define VXTIME_HPET 2
2005-05-16 21:53:28 -07:00
# define VXTIME_PMTMR 3
2005-04-16 15:20:36 -07:00
2006-09-26 10:52:28 +02:00
# define VGETCPU_RDTSCP 1
# define VGETCPU_LSL 2
2005-04-16 15:20:36 -07:00
struct vxtime_data {
long hpet_address ; /* HPET base address */
int last ;
unsigned long last_tsc ;
long quot ;
long tsc_quot ;
int mode ;
} ;
2006-01-11 22:46:30 +01:00
# define hpet_readl(a) readl((const void __iomem *)fix_to_virt(FIX_HPET_BASE) + a)
# define hpet_writel(d,a) writel(d, (void __iomem *)fix_to_virt(FIX_HPET_BASE) + a)
2005-04-16 15:20:36 -07:00
/* vsyscall space (readonly) */
extern struct vxtime_data __vxtime ;
2006-09-26 10:52:28 +02:00
extern int __vgetcpu_mode ;
2005-04-16 15:20:36 -07:00
extern struct timespec __xtime ;
extern volatile unsigned long __jiffies ;
extern struct timezone __sys_tz ;
extern seqlock_t __xtime_lock ;
/* kernel space (writeable) */
extern struct vxtime_data vxtime ;
2006-09-26 10:52:28 +02:00
extern int vgetcpu_mode ;
2005-04-16 15:20:36 -07:00
extern struct timezone sys_tz ;
extern int sysctl_vsyscall ;
extern seqlock_t xtime_lock ;
2005-05-16 21:53:28 -07:00
extern int sysctl_vsyscall ;
2005-04-16 15:20:36 -07:00
# define ARCH_HAVE_XTIME_LOCK 1
# endif /* __KERNEL__ */
# endif /* _ASM_X86_64_VSYSCALL_H_ */