11965aae3SH. Peter Anvin #ifndef _ASM_X86_VSYSCALL_H 21965aae3SH. Peter Anvin #define _ASM_X86_VSYSCALL_H 3bb898558SAl Viro 4bb898558SAl Viro enum vsyscall_num { 5bb898558SAl Viro __NR_vgettimeofday, 6bb898558SAl Viro __NR_vtime, 7bb898558SAl Viro __NR_vgetcpu, 8bb898558SAl Viro }; 9bb898558SAl Viro 10bb898558SAl Viro #define VSYSCALL_START (-10UL << 20) 11bb898558SAl Viro #define VSYSCALL_SIZE 1024 12bb898558SAl Viro #define VSYSCALL_END (-2UL << 20) 13bb898558SAl Viro #define VSYSCALL_MAPPED_PAGES 1 14bb898558SAl Viro #define VSYSCALL_ADDR(vsyscall_nr) (VSYSCALL_START+VSYSCALL_SIZE*(vsyscall_nr)) 15bb898558SAl Viro 16bb898558SAl Viro #ifdef __KERNEL__ 17bb898558SAl Viro #include <linux/seqlock.h> 18bb898558SAl Viro 19bb898558SAl Viro #define VGETCPU_RDTSCP 1 20bb898558SAl Viro #define VGETCPU_LSL 2 21bb898558SAl Viro 22bb898558SAl Viro /* kernel space (writeable) */ 23bb898558SAl Viro extern int vgetcpu_mode; 24bb898558SAl Viro extern struct timezone sys_tz; 25bb898558SAl Viro 268c49d9a7SAndy Lutomirski #include <asm/vvar.h> 278c49d9a7SAndy Lutomirski 28bb898558SAl Viro extern void map_vsyscall(void); 29bb898558SAl Viro 30*3ae36655SAndy Lutomirski /* 31*3ae36655SAndy Lutomirski * Called on instruction fetch fault in vsyscall page. 32*3ae36655SAndy Lutomirski * Returns true if handled. 33*3ae36655SAndy Lutomirski */ 34*3ae36655SAndy Lutomirski extern bool emulate_vsyscall(struct pt_regs *regs, unsigned long address); 35*3ae36655SAndy Lutomirski 36bb898558SAl Viro #endif /* __KERNEL__ */ 37bb898558SAl Viro 381965aae3SH. Peter Anvin #endif /* _ASM_X86_VSYSCALL_H */ 39