[sanitizer] First step toward supporting 42-bit AS on aarch64

Kostya Serebryany kcc at google.com
Tue Jan 20 18:13:17 PST 2015


thanks again!
r226639.
Unfortunately, I don't have access to a aarch64 box, so no aarch64 testing
is done for these patches on my side.

On Tue, Jan 20, 2015 at 10:08 AM, Jakub Jelinek <jakub at redhat.com> wrote:

> Hi!
>
> aarch64-linux kernel has configurable 39, 42 or 47 bit virtual address
> space.  Most distros AFAIK use 42-bit VA right now, but there are also
> 39-bit VA users too.  The ppc64 handling can be used for this just fine
> and support all the 3 sizes.
>
> There are other issues, like allocator32 not really being able to support
> the larger addres spaces, and hardcoded 39-bit address space size in other
> macros.
>
> --- compiler-rt/lib/sanitizer_common/sanitizer_posix.cc.jj      2014-12-15
> 19:50:53.618624013 +0100
> +++ compiler-rt/lib/sanitizer_common/sanitizer_posix.cc 2015-01-20
> 18:53:21.012780056 +0100
> @@ -78,16 +78,15 @@ static uptr GetKernelAreaSize() {
>
>  uptr GetMaxVirtualAddress() {
>  #if SANITIZER_WORDSIZE == 64
> -# if defined(__powerpc64__)
> +# if defined(__powerpc64__) || defined(__aarch64__)
>    // On PowerPC64 we have two different address space layouts: 44- and
> 46-bit.
>    // We somehow need to figure out which one we are using now and choose
>    // one of 0x00000fffffffffffUL and 0x00003fffffffffffUL.
>    // Note that with 'ulimit -s unlimited' the stack is moved away from
> the top
>    // of the address space, so simply checking the stack address is not
> enough.
>    // This should (does) work for both PowerPC64 Endian modes.
> +  // Similarly, aarch64 has multiple address space layouts: 39, 42 and
> 47-bit.
>    return (1ULL << (MostSignificantSetBitIndex(GET_CURRENT_FRAME()) + 1))
> - 1;
> -# elif defined(__aarch64__)
> -  return (1ULL << 39) - 1;
>  # elif defined(__mips64)
>    return (1ULL << 40) - 1;  // 0x000000ffffffffffUL;
>  # else
>
>         Jakub
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150120/577fae4a/attachment.html>


More information about the llvm-commits mailing list