select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6
        select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU
        select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU
+       select HAVE_ARCH_MMAP_RND_BITS if MMU
        select HAVE_ARCH_SECCOMP_FILTER if (AEABI && !OABI_COMPAT)
        select HAVE_ARCH_TRACEHOOK
        select HAVE_ARM_SMCCC if CPU_V7
          Select if you want MMU-based virtualised addressing space
          support by paged memory management. If unsure, say 'Y'.
 
+config ARCH_MMAP_RND_BITS_MIN
+       default 8
+
+config ARCH_MMAP_RND_BITS_MAX
+       default 14 if PAGE_OFFSET=0x40000000
+       default 15 if PAGE_OFFSET=0x80000000
+       default 16
+
 #
 # The "ARM system type" choice list is ordered alphabetically by option
 # text.  Please add new entries in the option alphabetic order.
 
 {
        unsigned long rnd;
 
-       /* 8 bits of randomness in 20 address space bits */
-       rnd = (unsigned long)get_random_int() % (1 << 8);
+       rnd = (unsigned long)get_random_int() & ((1 << mmap_rnd_bits) - 1);
 
        return rnd << PAGE_SHIFT;
 }