Loop was repalaced with __builtin_clz(). This still allows to precompute constants, but on some architectures it uses special instruction to calculate order. Signed-off-by: Maksym Planeta <mcsim.planeta@xxxxxxxxx> --- include/asm-generic/getorder.h | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) diff --git a/include/asm-generic/getorder.h b/include/asm-generic/getorder.h index 67e7245..fe8020c 100644 --- a/include/asm-generic/getorder.h +++ b/include/asm-generic/getorder.h @@ -11,11 +11,9 @@ static inline __attribute_const__ int get_order(unsigned long size) int order; size = (size - 1) >> (PAGE_SHIFT - 1); - order = -1; - do { - size >>= 1; - order++; - } while (size); + order = (__builtin_clzl(size) ^ (BITS_PER_LONG - 1)); + if (size == 0) + order = 0; return order; } -- 1.7.2.3 -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html