Implements for sv39 and sv48 VMA layout.
Userspace only has access to the bottom half of vma range. The top half is used by kernel.
There is no dedicated vsyscall or heap segment.
PIE program is allocated to start at TASK_SIZE/3*2. Maximum ASLR is ARCH_MMAP_RND_BITS_MAX+PAGE_SHIFT=24+12=36
Loader, vdso and other libraries are allocated below stack from the top.
Also change RestoreAddr to use 4 bits to accommodate MappingRiscv64_48
This is only to work around a long-standing bug in GCC's atomics implementation for RISC-V. If you build compiler-rt with Clang you don't need this, and in theory future versions of GCC (possibly trunk already fixes this, I'm not sure of the status of it).