diff --git a/elflink.c b/elflink.c index a6bd44c..953e843 100644 --- a/elflink.c +++ b/elflink.c @@ -569,36 +569,34 @@ bail2: */ static unsigned long hugetlb_slice_start(unsigned long addr) { - if (!arch_has_slice_support()) { - return ALIGN_DOWN(addr, gethugepagesize()); - } - + if (arch_has_slice_support()) { #if defined(__powerpc64__) - if (addr < SLICE_LOW_TOP) - return ALIGN_DOWN(addr, SLICE_LOW_SIZE); - else if (addr < SLICE_HIGH_SIZE) - return SLICE_LOW_TOP; - else - return ALIGN_DOWN(addr, SLICE_HIGH_SIZE); + if (addr < SLICE_LOW_TOP) + return ALIGN_DOWN(addr, SLICE_LOW_SIZE); + else if (addr < SLICE_HIGH_SIZE) + return SLICE_LOW_TOP; + else + return ALIGN_DOWN(addr, SLICE_HIGH_SIZE); #elif defined(__powerpc__) && !defined(PPC_NO_SEGMENTS) - return ALIGN_DOWN(addr, SLICE_LOW_SIZE); + return ALIGN_DOWN(addr, SLICE_LOW_SIZE); #endif + } + return ALIGN_DOWN(addr, gethugepagesize()); } static unsigned long hugetlb_slice_end(unsigned long addr) { - if (!arch_has_slice_support()) { - return ALIGN_UP(addr, gethugepagesize()) - 1; - } - + if (arch_has_slice_support()) { #if defined(__powerpc64__) - if (addr < SLICE_LOW_TOP) - return ALIGN_UP(addr, SLICE_LOW_SIZE) - 1; - else - return ALIGN_UP(addr, SLICE_HIGH_SIZE) - 1; + if (addr < SLICE_LOW_TOP) + return ALIGN_UP(addr, SLICE_LOW_SIZE) - 1; + else + return ALIGN_UP(addr, SLICE_HIGH_SIZE) - 1; #elif defined(__powerpc__) && !defined(PPC_NO_SEGMENTS) - return ALIGN_UP(addr, SLICE_LOW_SIZE) - 1; + return ALIGN_UP(addr, SLICE_LOW_SIZE) - 1; #endif + } + return ALIGN_UP(addr, gethugepagesize()) - 1; } static unsigned long hugetlb_next_slice_start(unsigned long addr)