]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
AArch64 [1/10]
authorIan Bolton <ian.bolton@arm.com>
Tue, 23 Oct 2012 17:35:16 +0000 (17:35 +0000)
committerMarcus Shawcroft <mshawcroft@gcc.gnu.org>
Tue, 23 Oct 2012 17:35:16 +0000 (17:35 +0000)
2012-10-23  Ian Bolton  <ian.bolton@arm.com>
    James Greenhalgh  <james.greenhalgh@arm.com>
    Jim MacArthur  <jim.macarthur@arm.com>
    Marcus Shawcroft  <marcus.shawcroft@arm.com>
    Nigel Stephens  <nigel.stephens@arm.com>
    Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
    Richard Earnshaw  <rearnsha@arm.com>
    Sofiane Naci  <sofiane.naci@arm.com>
    Stephen Thomas  <stephen.thomas@arm.com>
    Tejas Belagod  <tejas.belagod@arm.com>
    Yufeng Zhang  <yufeng.zhang@arm.com>

* config.gcc: Add AArch64.
* configure.ac: Add AArch64 TLS support detection.
* configure: Regenerate.

Co-Authored-By: James Greenhalgh <james.greenhalgh@arm.com>
Co-Authored-By: Jim MacArthur <jim.macarthur@arm.com>
Co-Authored-By: Marcus Shawcroft <marcus.shawcroft@arm.com>
Co-Authored-By: Nigel Stephens <nigel.stephens@arm.com>
Co-Authored-By: Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
Co-Authored-By: Richard Earnshaw <rearnsha@arm.com>
Co-Authored-By: Sofiane Naci <sofiane.naci@arm.com>
Co-Authored-By: Stephen Thomas <stephen.thomas@arm.com>
Co-Authored-By: Tejas Belagod <tejas.belagod@arm.com>
Co-Authored-By: Yufeng Zhang <yufeng.zhang@arm.com>
From-SVN: r192732

gcc/ChangeLog
gcc/config.gcc
gcc/configure
gcc/configure.ac

index 6c0628eaa981c0446aef6be01ab3d857173359a1..8a6ea4e88e93e45c10649f3c920c95c8609ef364 100644 (file)
@@ -1,3 +1,19 @@
+2012-10-23  Ian Bolton  <ian.bolton@arm.com>
+           James Greenhalgh  <james.greenhalgh@arm.com>
+           Jim MacArthur  <jim.macarthur@arm.com>
+           Marcus Shawcroft  <marcus.shawcroft@arm.com>
+           Nigel Stephens  <nigel.stephens@arm.com>
+           Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+           Richard Earnshaw  <rearnsha@arm.com>
+           Sofiane Naci  <sofiane.naci@arm.com>
+           Stephen Thomas  <stephen.thomas@arm.com>
+           Tejas Belagod  <tejas.belagod@arm.com>
+           Yufeng Zhang  <yufeng.zhang@arm.com>
+
+       * config.gcc: Add AArch64.
+       * configure.ac: Add AArch64 TLS support detection.
+       * configure: Regenerate.
+
 2012-10-23  Ian Bolton  <ian.bolton@arm.com>
            James Greenhalgh  <james.greenhalgh@arm.com>
            Jim MacArthur  <jim.macarthur@arm.com>
index fbbf38943a9d998fcf0688c2097b7310b5dd214a..58bbe5451ccfd739b41fff8e1ea958b13c8c1c85 100644 (file)
@@ -309,6 +309,13 @@ m32c*-*-*)
        tmake_file=m32c/t-m32c
        target_has_targetm_common=no
         ;;
+aarch64*-*-*)
+       cpu_type=aarch64
+       need_64bit_hwint=yes
+       extra_headers="arm_neon.h"
+       extra_objs="aarch64-builtins.o"
+       target_has_targetm_common=yes
+       ;;
 alpha*-*-*)
        cpu_type=alpha
        need_64bit_hwint=yes
@@ -799,6 +806,27 @@ case ${target} in
 esac
 
 case ${target} in
+aarch64*-*-elf)
+       tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h"
+       tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-elf-raw.h"
+       tmake_file="${tmake_file} aarch64/t-aarch64"
+       use_gcc_stdint=wrap
+       case $target in
+       aarch64_be-*)
+               tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
+               ;;
+       esac
+       ;;
+aarch64*-*-linux*)
+       tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
+       tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-linux.h"
+       tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
+       case $target in
+       aarch64_be-*)
+               tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
+               ;;
+       esac
+       ;;
 alpha*-*-linux*)
        tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
        extra_options="${extra_options} alpha/elf.opt"
@@ -2998,6 +3026,92 @@ fi
 
 supported_defaults=
 case "${target}" in
+       aarch64*-*-*)
+               supported_defaults="cpu arch"
+               for which in cpu arch; do
+
+                       eval "val=\$with_$which"
+                       base_val=`echo $val | sed -e 's/\+.*//'`
+                       ext_val=`echo $val | sed -e 's/[a-z0-9\-]\+//'`
+
+                       if [ $which = arch ]; then
+                         def=aarch64-arches.def
+                         pattern=AARCH64_ARCH
+                       else
+                         def=aarch64-cores.def
+                         pattern=AARCH64_CORE
+                       fi
+
+                       ext_mask=AARCH64_CPU_DEFAULT_FLAGS
+
+                       # Find the base CPU or ARCH id in aarch64-cores.def or
+                       # aarch64-arches.def
+                       if [ x"$base_val" = x ] \
+                           || grep "^$pattern(\"$base_val\"," \
+                                   ${srcdir}/config/aarch64/$def \
+                                   > /dev/null; then
+
+                         if [ $which = arch ]; then
+                               base_id=`grep "^$pattern(\"$base_val\"," \
+                                 ${srcdir}/config/aarch64/$def | \
+                                 sed -e 's/^[^,]*,[    ]*//' | \
+                                 sed -e 's/,.*$//'`
+                         else
+                               base_id=`grep "^$pattern(\"$base_val\"," \
+                                 ${srcdir}/config/aarch64/$def | \
+                                 sed -e 's/^[^,]*,[    ]*//' | \
+                                 sed -e 's/,.*$//'`
+                         fi
+
+                         while [ x"$ext_val" != x ]
+                         do
+                               ext_val=`echo $ext_val | sed -e 's/\+//'`
+                               ext=`echo $ext_val | sed -e 's/\+.*//'`
+                               base_ext=`echo $ext | sed -e 's/^no//'`
+
+                               if [ x"$base_ext" = x ] \
+                                   || grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
+                                   ${srcdir}/config/aarch64/aarch64-option-extensions.def \
+                                   > /dev/null; then
+
+                                 ext_on=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
+                                       ${srcdir}/config/aarch64/aarch64-option-extensions.def | \
+                                       sed -e 's/^[^,]*,[      ]*//' | \
+                                       sed -e 's/,.*$//'`
+                                 ext_off=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
+                                       ${srcdir}/config/aarch64/aarch64-option-extensions.def | \
+                                       sed -e 's/^[^,]*,[      ]*[^,]*,[       ]*//' | \
+                                       sed -e 's/,.*$//' | \
+                                       sed -e 's/).*$//'`
+
+                                 if [ $ext = $base_ext ]; then
+                                       # Adding extension
+                                       ext_mask="("$ext_mask") | ("$ext_on")"
+                                 else
+                                       # Removing extension
+                                       ext_mask="("$ext_mask") & ~("$ext_off")"
+                                 fi
+
+                                 true
+                               else
+                                 echo "Unknown extension used in --with-$which=$val" 1>&2
+                                 exit 1
+                               fi
+                               ext_val=`echo $ext_val | sed -e 's/[a-z0-9]\+//'`
+                         done
+
+                         ext_mask="(("$ext_mask") << 6)"
+                         if [ x"$base_id" != x ]; then
+                               target_cpu_cname="TARGET_CPU_$base_id | $ext_mask"
+                         fi
+                         true
+                       else
+                         echo "Unknown $which used in --with-$which=$val" 1>&2
+                         exit 1
+                       fi
+               done
+               ;;
+
        alpha*-*-*)
                supported_defaults="cpu tune"
                for which in cpu tune; do
@@ -3480,6 +3594,15 @@ esac
 # Set some miscellaneous flags for particular targets.
 target_cpu_default2=
 case ${target} in
+       aarch64*-*-*)
+               if test x$target_cpu_cname = x
+               then
+                       target_cpu_default2=TARGET_CPU_generic
+               else
+                       target_cpu_default2=$target_cpu_cname
+               fi
+               ;;
+
        arm*-*-*)
                if test x$target_cpu_cname = x
                then
index a223c600d9a3759b06cbd720b32c91c20a277b9e..4c90e9b795418a5fd978efde873b61d322eb93de 100755 (executable)
@@ -23189,6 +23189,19 @@ foo:
        tls_first_minor=19
        tls_as_opt='--fatal-warnings'
        ;;
+  aarch64*-*-*)
+    conftest_s='
+       .section ".tdata","awT",%progbits
+foo:   .long   25
+       .text
+       adrp  x0, :tlsgd:x
+       add   x0, x0, #:tlsgd_lo12:x
+        bl    __tls_get_addr
+       nop'
+       tls_first_major=2
+       tls_first_minor=20
+       tls_as_opt='--fatal-warnings'
+       ;;
   powerpc-*-*)
     conftest_s='
        .section ".tdata","awT",@progbits
index 17e1d86e349212be4da400ad5e3eee9f32f70764..f629d1561222f9e9b9fb64c1bef247c3c9897ca1 100644 (file)
@@ -2965,6 +2965,19 @@ foo:
        tls_first_minor=19
        tls_as_opt='--fatal-warnings'
        ;;
+  aarch64*-*-*)
+    conftest_s='
+       .section ".tdata","awT",%progbits
+foo:   .long   25
+       .text
+       adrp  x0, :tlsgd:x
+       add   x0, x0, #:tlsgd_lo12:x
+        bl    __tls_get_addr
+       nop'
+       tls_first_major=2
+       tls_first_minor=20
+       tls_as_opt='--fatal-warnings'
+       ;;
   powerpc-*-*)
     conftest_s='
        .section ".tdata","awT",@progbits