···62626363 // I'm not sure if Linux has seperate page sizes for kernel and user space.
6464 // Apple's code uses left shift logical (1 << user_page_shift) to get the page size value.
6565+ // Since it's very unlikely that the page size won't be a power of 2, we can use __builtin_ctzl()
6666+ // as a substitute for log2().
6567 user_page_shift = (uint8_t*)CGET(_64bit ? _COMM_PAGE_USER_PAGE_SHIFT_64 : _COMM_PAGE_USER_PAGE_SHIFT_32);
6668 kernel_page_shift = (uint8_t*)CGET(_COMM_PAGE_KERNEL_PAGE_SHIFT);
6767- *kernel_page_shift = *user_page_shift = log2(sysconf(_SC_PAGESIZE));
6969+ *kernel_page_shift = *user_page_shift = (uint8_t)__builtin_ctzl(sysconf(_SC_PAGESIZE));
68706971 my_caps = get_cpu_caps();
7072 if (*ncpus == 1)