public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
  • * [PATCH] [1/10] AArch64 Port
           [not found] <50865E58.4020507@arm.com>
           [not found] ` <50865F45.2030707@arm.com>
    @ 2012-10-23  9:43 ` Marcus Shawcroft
      2012-10-23 15:48   ` Jeff Law
      1 sibling, 1 reply; 26+ messages in thread
    From: Marcus Shawcroft @ 2012-10-23  9:43 UTC (permalink / raw)
      To: gcc-patches
    
    [-- Attachment #1: Type: text/plain, Size: 266 bytes --]
    
    
    This patch contains the adjustments to top level gcc configury required 
    to enable the AArch64 port.
    
    Proposed ChangeLog:
    
              * config.gcc: Add AArch64.
              * configure.ac: Add AArch64 TLS support detection.
              * configure: Regenerate.
    
    [-- Attachment #2: xx-gcc-configury-patch.txt --]
    [-- Type: text/plain, Size: 5697 bytes --]
    
    diff --git a/gcc/config.gcc b/gcc/config.gcc
    index ed7474ad68c4ae7234072d508b697a9a2218d18d..75ca21756ebca80479d69c38ff8d3c4142d822f3 100644
    --- a/gcc/config.gcc
    +++ b/gcc/config.gcc
    @@ -310,6 +310,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
    @@ -796,6 +803,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"
    @@ -2995,6 +3023,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
    @@ -3476,6 +3590,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
    diff --git a/gcc/configure b/gcc/configure
    index 387de5b743cb2b44afb1206ef6a8689ab1fcbbfa..bef4ea36af785578d111ff702acf615aa556b49c 100755
    --- a/gcc/configure
    +++ b/gcc/configure
    @@ -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
    diff --git a/gcc/configure.ac b/gcc/configure.ac
    index b6c049b022bd85ddf2e42a55f98d57a50ce2775c..dee70dc2061a56a02b5d62954ac75bbfa52a72d8 100644
    --- a/gcc/configure.ac
    +++ b/gcc/configure.ac
    @@ -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
    
    ^ permalink raw reply	[flat|nested] 26+ messages in thread

  • end of thread, other threads:[~2012-10-23 19:27 UTC | newest]
    
    Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
    -- links below jump to the message on this page --
         [not found] <50865E58.4020507@arm.com>
         [not found] ` <50865F45.2030707@arm.com>
    2012-10-23  9:43   ` [PATCH] [2/10] AArch64 Port Marcus Shawcroft
    2012-10-23 14:58     ` Joseph S. Myers
    2012-10-23 18:02       ` Marcus Shawcroft
    2012-10-23 15:38     ` Jeff Law
         [not found]   ` <50865F98.8020403@arm.com>
         [not found]     ` <50865FF6.4040301@arm.com>
         [not found]       ` <5086603D.8080003@arm.com>
    2012-10-23  9:43         ` [PATCH] [5/10] " Marcus Shawcroft
    2012-10-23 15:32           ` Jeff Law
         [not found]         ` <5086604F.8060700@arm.com>
         [not found]           ` <5086605C.3020502@arm.com>
         [not found]             ` <50866077.5040300@arm.com>
    2012-10-23  9:43               ` [PATCH] [7/10] " Marcus Shawcroft
    2012-10-23 15:18                 ` Jeff Law
    2012-10-23 19:41                 ` Tom Tromey
    2012-10-23  9:43               ` [PATCH] [9/10] " Marcus Shawcroft
    2012-10-23  9:52                 ` Jakub Jelinek
         [not found]               ` <50866080.7040807@arm.com>
    2012-10-23  9:44                 ` [PATCH] [10/10] " Marcus Shawcroft
    2012-10-23 15:48                   ` Jeff Law
    2012-10-23  9:44                 ` [PATCH] [8/10] " Marcus Shawcroft
    2012-10-23 15:33                   ` Jeff Law
    2012-10-23  9:46           ` [PATCH] [6/10] " Marcus Shawcroft
    2012-10-23 15:19             ` Jeff Law
    2012-10-23 17:52               ` Marcus Shawcroft
    2012-10-23  9:44       ` [PATCH] [4/10] " Marcus Shawcroft
    2012-10-23 15:14         ` Jeff Law
    2012-10-23  9:47     ` [PATCH] [3/10] " Marcus Shawcroft
    2012-10-23 15:40       ` Jeff Law
    2012-10-23 16:03         ` Ramana Radhakrishnan
    2012-10-23 16:57         ` Marcus Shawcroft
    2012-10-23  9:43 ` [PATCH] [1/10] " Marcus Shawcroft
    2012-10-23 15:48   ` Jeff Law
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox;
    as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).