X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=arch%2Fx86_64%2Fkernel%2Fvsyscall.c;h=f28a07c77b48562e90573858a28c9eb52c4f2d9f;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=13ec453e2756c7ebbb479b7ebf969c7da997b29f;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/arch/x86_64/kernel/vsyscall.c b/arch/x86_64/kernel/vsyscall.c index 13ec453e2..f28a07c77 100644 --- a/arch/x86_64/kernel/vsyscall.c +++ b/arch/x86_64/kernel/vsyscall.c @@ -40,6 +40,7 @@ #include #include #include +#include #include #include @@ -88,7 +89,7 @@ static force_inline void do_vgettimeofday(struct timeval * tv) __vxtime.tsc_quot) >> 32; /* See comment in x86_64 do_gettimeofday. */ } else { - usec += ((readl(fix_to_virt(VSYSCALL_HPET) + 0xf0) - + usec += ((readl((void *)fix_to_virt(VSYSCALL_HPET) + 0xf0) - __vxtime.last) * __vxtime.quot) >> 32; } } while (read_seqretry(&__xtime_lock, sequence)); @@ -165,14 +166,12 @@ static void __init map_vsyscall(void) static int __init vsyscall_init(void) { - if ((unsigned long) &vgettimeofday != VSYSCALL_ADDR(__NR_vgettimeofday)) - panic("vgettimeofday link addr broken"); - if ((unsigned long) &vtime != VSYSCALL_ADDR(__NR_vtime)) - panic("vtime link addr broken"); - if (VSYSCALL_ADDR(0) != __fix_to_virt(VSYSCALL_FIRST_PAGE)) - panic("fixmap first vsyscall %lx should be %lx", __fix_to_virt(VSYSCALL_FIRST_PAGE), - VSYSCALL_ADDR(0)); + BUG_ON(((unsigned long) &vgettimeofday != + VSYSCALL_ADDR(__NR_vgettimeofday))); + BUG_ON((unsigned long) &vtime != VSYSCALL_ADDR(__NR_vtime)); + BUG_ON((VSYSCALL_ADDR(0) != __fix_to_virt(VSYSCALL_FIRST_PAGE))); map_vsyscall(); + sysctl_vsyscall = 1; return 0; }