Note that all this is decided by the kernel's mmap area allocation strategy; see the various "get_unmapped_area" routines in platform-specific kernel code (e.g arch/arm/mm/mmap.c:arch_get_unmapped_area vs. x86/kernel/sys_x86_64.c:arch_get_unmapped_area_topdown).
If any change is required here (and this behaviour *was* in fact changed on x86; they used to behave the same way arm still does), it needs to be done on the kernel side.
Note that all this is decided by the kernel's mmap area allocation strategy; see the various "get_unmapped_area" routines in platform-specific kernel code (e.g arch/arm/ mm/mmap. c:arch_ get_unmapped_ area vs. x86/kernel/ sys_x86_ 64.c:arch_ get_unmapped_ area_topdown) .
If any change is required here (and this behaviour *was* in fact changed on x86; they used to behave the same way arm still does), it needs to be done on the kernel side.