todo: modpost undefined errors
This commit is contained in:
@@ -7,7 +7,11 @@
|
||||
#include "config.h"
|
||||
#include "../../mcctrl.h"
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,8,0) && defined(CONFIG_X86_VSYSCALL_EMULATION)
|
||||
#define gtod (&VVAR(vsyscall_gtod_data))
|
||||
#else
|
||||
#define gtod NULL
|
||||
#endif
|
||||
|
||||
//#define SC_DEBUG
|
||||
|
||||
@@ -24,7 +28,7 @@ static void *vdso_start;
|
||||
static void *vdso_end;
|
||||
static struct page **vdso_pages;
|
||||
#endif
|
||||
static void *__vvar_page;
|
||||
static void *__vvar_page_ptr;
|
||||
static long *hpet_address;
|
||||
static void **hv_clock;
|
||||
|
||||
@@ -48,8 +52,8 @@ int arch_symbols_init(void)
|
||||
return -EFAULT;
|
||||
#endif
|
||||
|
||||
__vvar_page = (void *) kallsyms_lookup_name("__vvar_page");
|
||||
if (WARN_ON(!__vvar_page))
|
||||
__vvar_page_ptr = (void *) &__vvar_page;
|
||||
if (WARN_ON(!__vvar_page_ptr))
|
||||
return -EFAULT;
|
||||
|
||||
hpet_address = (void *) kallsyms_lookup_name("hpet_address");
|
||||
@@ -93,18 +97,18 @@ reserve_user_space(struct mcctrl_usrdata *usrdata, unsigned long *startp, unsign
|
||||
#define DESIRED_USER_END 0x800000000000
|
||||
#define GAP_FOR_MCEXEC 0x008000000000UL
|
||||
end = DESIRED_USER_END;
|
||||
down_write(¤t->mm->mmap_sem);
|
||||
mmap_write_lock(current->mm);
|
||||
vma = find_vma(current->mm, 0);
|
||||
if (vma) {
|
||||
end = (vma->vm_start - GAP_FOR_MCEXEC) & ~(GAP_FOR_MCEXEC - 1);
|
||||
}
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
|
||||
up_write(¤t->mm->mmap_sem);
|
||||
mmap_write_unlock(current->mm);
|
||||
#endif
|
||||
start = reserve_user_space_common(usrdata, start, end);
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0)
|
||||
up_write(¤t->mm->mmap_sem);
|
||||
mmap_write_unlock(current->mm);
|
||||
#endif
|
||||
|
||||
mutex_unlock(&usrdata->reserve_lock);
|
||||
@@ -161,19 +165,19 @@ void get_vdso_info(ihk_os_t os, long vdso_rpa)
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,5,0)
|
||||
vdso->vvar_is_global = 0;
|
||||
vdso->vvar_virt = (void *)(-3 * PAGE_SIZE);
|
||||
vdso->vvar_phys = virt_to_phys(__vvar_page);
|
||||
vdso->vvar_phys = virt_to_phys(__vvar_page_ptr);
|
||||
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0)
|
||||
vdso->vvar_is_global = 0;
|
||||
vdso->vvar_virt = (void *)(-2 * PAGE_SIZE);
|
||||
vdso->vvar_phys = virt_to_phys(__vvar_page);
|
||||
vdso->vvar_phys = virt_to_phys(__vvar_page_ptr);
|
||||
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,16,0)
|
||||
vdso->vvar_is_global = 0;
|
||||
vdso->vvar_virt = (void *)(vdso->vdso_npages * PAGE_SIZE);
|
||||
vdso->vvar_phys = virt_to_phys(__vvar_page);
|
||||
vdso->vvar_phys = virt_to_phys(__vvar_page_ptr);
|
||||
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
|
||||
vdso->vvar_is_global = 1;
|
||||
vdso->vvar_virt = (void *)fix_to_virt(VVAR_PAGE);
|
||||
vdso->vvar_phys = virt_to_phys(__vvar_page);
|
||||
vdso->vvar_phys = virt_to_phys(__vvar_page_ptr);
|
||||
#endif
|
||||
|
||||
/* HPET page */
|
||||
|
||||
Reference in New Issue
Block a user