diff mbox series

[aarch64] add netbsd/aarch64 target

Message ID 20190614153846.GA20055@SDF.ORG
State New
Headers show
Series [aarch64] add netbsd/aarch64 target | expand

Commit Message

Maya Rashish June 14, 2019, 3:38 p.m. UTC
Hi folks,

This patch adds support for netbsd/aarch64.
It would be nice to have it committed, please tell me if anything is
wrong.

Thanks.

Matthew Green <mrg@eterna.com.au>
Maya Rashish <coypu@sdf.org>

gcc:
	* config.gcc (aarch64*-*-netbsd*): New target.
	* config/aarch64/aarch64-netbsd.h: New file.
	* config/aarch64/t-aarch64-netbsd: Likewise.

libgcc:
	* config.host (aarch64*-*-netbsd*): New case.



---
 gcc/config.gcc                      |  6 +++
 gcc/config/aarch64/aarch64-netbsd.h | 80 +++++++++++++++++++++++++++++
 gcc/config/aarch64/t-aarch64-netbsd | 21 ++++++++
 libgcc/config.host                  |  6 +++
 4 files changed, 113 insertions(+)
 create mode 100644 gcc/config/aarch64/aarch64-netbsd.h
 create mode 100644 gcc/config/aarch64/t-aarch64-netbsd

Comments

Richard Earnshaw (lists) June 17, 2019, 2:43 p.m. UTC | #1
On 14/06/2019 16:38, coypu@sdf.org wrote:
> Hi folks,
> 
> This patch adds support for netbsd/aarch64.
> It would be nice to have it committed, please tell me if anything is
> wrong.
> 
> Thanks.
> 
> Matthew Green <mrg@eterna.com.au>
> Maya Rashish <coypu@sdf.org>
> 
> gcc:
> 	* config.gcc (aarch64*-*-netbsd*): New target.
> 	* config/aarch64/aarch64-netbsd.h: New file.
> 	* config/aarch64/t-aarch64-netbsd: Likewise.
> 
> libgcc:
> 	* config.host (aarch64*-*-netbsd*): New case.
> 
> 

Thanks, I've put this in.

R.

> 
> ---
>  gcc/config.gcc                      |  6 +++
>  gcc/config/aarch64/aarch64-netbsd.h | 80 +++++++++++++++++++++++++++++
>  gcc/config/aarch64/t-aarch64-netbsd | 21 ++++++++
>  libgcc/config.host                  |  6 +++
>  4 files changed, 113 insertions(+)
>  create mode 100644 gcc/config/aarch64/aarch64-netbsd.h
>  create mode 100644 gcc/config/aarch64/t-aarch64-netbsd
> 
> diff --git a/gcc/config.gcc b/gcc/config.gcc
> index 0f80e836f4e..678c4ec51a3 100644
> --- a/gcc/config.gcc
> +++ b/gcc/config.gcc
> @@ -1021,6 +1021,12 @@ aarch64*-*-freebsd*)
>  	tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
>  	tm_defines="${tm_defines}  TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
>  	;;
> +aarch64*-*-netbsd*)
> +	tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file}"
> +	tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-netbsd.h"
> +	tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
> +	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
> +	;;
>  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"
> diff --git a/gcc/config/aarch64/aarch64-netbsd.h b/gcc/config/aarch64/aarch64-netbsd.h
> new file mode 100644
> index 00000000000..72fe6a2bdb5
> --- /dev/null
> +++ b/gcc/config/aarch64/aarch64-netbsd.h
> @@ -0,0 +1,80 @@
> +/* Definitions for AArch64 running NetBSD
> +   Copyright (C) 2016-2019 Free Software Foundation, Inc.
> +
> +   This file is part of GCC.
> +
> +   GCC is free software; you can redistribute it and/or modify it
> +   under the terms of the GNU General Public License as published by
> +   the Free Software Foundation; either version 3, or (at your option)
> +   any later version.
> +
> +   GCC is distributed in the hope that it will be useful, but
> +   WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   General Public License for more details.
> +
> +   You should have received a copy of the GNU General Public License
> +   along with GCC; see the file COPYING3.  If not see
> +   <http://www.gnu.org/licenses/>.  */
> +
> +#ifndef GCC_AARCH64_NETBSD_H
> +#define GCC_AARCH64_NETBSD_H
> +
> +#define TARGET_LINKER_BIG_EMULATION "aarch64nbsdb"
> +#define TARGET_LINKER_LITTLE_EMULATION "aarch64nbsd"
> +
> +#if TARGET_BIG_ENDIAN_DEFAULT
> +#define TARGET_LINKER_EMULATION  TARGET_LINKER_BIG_EMULATION
> +#else
> +#define TARGET_LINKER_EMULATION  TARGET_LINKER_LITTLE_EMULATION
> +#endif
> +
> +#undef  SUBTARGET_EXTRA_LINK_SPEC
> +#define SUBTARGET_EXTRA_LINK_SPEC " -m" TARGET_LINKER_EMULATION
> +
> +#define NETBSD_ENTRY_POINT "__start"
> +
> +#define NETBSD_TARGET_LINK_SPEC  "%{h*}			\
> +   -X %{mbig-endian:-EB -m " TARGET_LINKER_BIG_EMULATION "} \
> +   %{mlittle-endian:-EL -m " TARGET_LINKER_LITTLE_EMULATION "} \
> +   %(netbsd_link_spec)"
> +
> +#if TARGET_FIX_ERR_A53_835769_DEFAULT
> +#define CA53_ERR_835769_SPEC \
> +  " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
> +#else
> +#define CA53_ERR_835769_SPEC \
> +  " %{mfix-cortex-a53-835769:--fix-cortex-a53-835769}"
> +#endif
> +
> +#ifdef TARGET_FIX_ERR_A53_843419_DEFAULT
> +#define CA53_ERR_843419_SPEC \
> +  " %{!mno-fix-cortex-a53-843419:--fix-cortex-a53-843419}"
> +#else
> +#define CA53_ERR_843419_SPEC \
> +  " %{mfix-cortex-a53-843419:--fix-cortex-a53-843419}"
> +#endif
> +
> +#undef  LINK_SPEC
> +#define LINK_SPEC NETBSD_LINK_SPEC_ELF 		\
> +		  NETBSD_TARGET_LINK_SPEC	\
> +                  CA53_ERR_835769_SPEC		\
> +                  CA53_ERR_843419_SPEC
> +
> +#undef TARGET_OS_CPP_BUILTINS
> +#define TARGET_OS_CPP_BUILTINS()		\
> +  do						\
> +    {						\
> +      NETBSD_OS_CPP_BUILTINS_ELF();		\
> +    }						\
> +  while (0)
> +
> +#undef SUBTARGET_CPP_SPEC
> +#define SUBTARGET_CPP_SPEC NETBSD_CPP_SPEC
> +
> +#undef EXTRA_SPECS
> +#define EXTRA_SPECS \
> +  { "asm_cpu_spec",             ASM_CPU_SPEC }, \
> +  NETBSD_SUBTARGET_EXTRA_SPECS
> +
> +#endif  /* GCC_AARCH64_NETBSD_H */
> diff --git a/gcc/config/aarch64/t-aarch64-netbsd b/gcc/config/aarch64/t-aarch64-netbsd
> new file mode 100644
> index 00000000000..aa447d0f6d4
> --- /dev/null
> +++ b/gcc/config/aarch64/t-aarch64-netbsd
> @@ -0,0 +1,21 @@
> +# Machine description for AArch64 architecture.
> +#  Copyright (C) 2016-2019 Free Software Foundation, Inc.
> +#
> +#  This file is part of GCC.
> +#
> +#  GCC is free software; you can redistribute it and/or modify it
> +#  under the terms of the GNU General Public License as published by
> +#  the Free Software Foundation; either version 3, or (at your option)
> +#  any later version.
> +#
> +#  GCC is distributed in the hope that it will be useful, but
> +#  WITHOUT ANY WARRANTY; without even the implied warranty of
> +#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +#  General Public License for more details.
> +#
> +#  You should have received a copy of the GNU General Public License
> +#  along with GCC; see the file COPYING3.  If not see
> +#  <http://www.gnu.org/licenses/>.
> +
> +LIB1ASMSRC   = aarch64/lib1funcs.asm
> +LIB1ASMFUNCS = _aarch64_sync_cache_range
> diff --git a/libgcc/config.host b/libgcc/config.host
> index 0574b4d7741..e6a834b8fc8 100644
> --- a/libgcc/config.host
> +++ b/libgcc/config.host
> @@ -359,6 +359,12 @@ aarch64*-*-freebsd*)
>  	tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
>  	md_unwind_header=aarch64/freebsd-unwind.h
>  	;;
> +aarch64*-*-netbsd*)
> +	extra_parts="$extra_parts crtfastmath.o"
> +	tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
> +	tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
> +	md_unwind_header=aarch64/aarch64-unwind.h
> +	;;
>  aarch64*-*-fuchsia*)
>  	tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
>  	tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp"
>
diff mbox series

Patch

diff --git a/gcc/config.gcc b/gcc/config.gcc
index 0f80e836f4e..678c4ec51a3 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1021,6 +1021,12 @@  aarch64*-*-freebsd*)
 	tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
 	tm_defines="${tm_defines}  TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
 	;;
+aarch64*-*-netbsd*)
+	tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file}"
+	tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-netbsd.h"
+	tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
+	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+	;;
 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"
diff --git a/gcc/config/aarch64/aarch64-netbsd.h b/gcc/config/aarch64/aarch64-netbsd.h
new file mode 100644
index 00000000000..72fe6a2bdb5
--- /dev/null
+++ b/gcc/config/aarch64/aarch64-netbsd.h
@@ -0,0 +1,80 @@ 
+/* Definitions for AArch64 running NetBSD
+   Copyright (C) 2016-2019 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_AARCH64_NETBSD_H
+#define GCC_AARCH64_NETBSD_H
+
+#define TARGET_LINKER_BIG_EMULATION "aarch64nbsdb"
+#define TARGET_LINKER_LITTLE_EMULATION "aarch64nbsd"
+
+#if TARGET_BIG_ENDIAN_DEFAULT
+#define TARGET_LINKER_EMULATION  TARGET_LINKER_BIG_EMULATION
+#else
+#define TARGET_LINKER_EMULATION  TARGET_LINKER_LITTLE_EMULATION
+#endif
+
+#undef  SUBTARGET_EXTRA_LINK_SPEC
+#define SUBTARGET_EXTRA_LINK_SPEC " -m" TARGET_LINKER_EMULATION
+
+#define NETBSD_ENTRY_POINT "__start"
+
+#define NETBSD_TARGET_LINK_SPEC  "%{h*}			\
+   -X %{mbig-endian:-EB -m " TARGET_LINKER_BIG_EMULATION "} \
+   %{mlittle-endian:-EL -m " TARGET_LINKER_LITTLE_EMULATION "} \
+   %(netbsd_link_spec)"
+
+#if TARGET_FIX_ERR_A53_835769_DEFAULT
+#define CA53_ERR_835769_SPEC \
+  " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
+#else
+#define CA53_ERR_835769_SPEC \
+  " %{mfix-cortex-a53-835769:--fix-cortex-a53-835769}"
+#endif
+
+#ifdef TARGET_FIX_ERR_A53_843419_DEFAULT
+#define CA53_ERR_843419_SPEC \
+  " %{!mno-fix-cortex-a53-843419:--fix-cortex-a53-843419}"
+#else
+#define CA53_ERR_843419_SPEC \
+  " %{mfix-cortex-a53-843419:--fix-cortex-a53-843419}"
+#endif
+
+#undef  LINK_SPEC
+#define LINK_SPEC NETBSD_LINK_SPEC_ELF 		\
+		  NETBSD_TARGET_LINK_SPEC	\
+                  CA53_ERR_835769_SPEC		\
+                  CA53_ERR_843419_SPEC
+
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS()		\
+  do						\
+    {						\
+      NETBSD_OS_CPP_BUILTINS_ELF();		\
+    }						\
+  while (0)
+
+#undef SUBTARGET_CPP_SPEC
+#define SUBTARGET_CPP_SPEC NETBSD_CPP_SPEC
+
+#undef EXTRA_SPECS
+#define EXTRA_SPECS \
+  { "asm_cpu_spec",             ASM_CPU_SPEC }, \
+  NETBSD_SUBTARGET_EXTRA_SPECS
+
+#endif  /* GCC_AARCH64_NETBSD_H */
diff --git a/gcc/config/aarch64/t-aarch64-netbsd b/gcc/config/aarch64/t-aarch64-netbsd
new file mode 100644
index 00000000000..aa447d0f6d4
--- /dev/null
+++ b/gcc/config/aarch64/t-aarch64-netbsd
@@ -0,0 +1,21 @@ 
+# Machine description for AArch64 architecture.
+#  Copyright (C) 2016-2019 Free Software Foundation, Inc.
+#
+#  This file is part of GCC.
+#
+#  GCC is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 3, or (at your option)
+#  any later version.
+#
+#  GCC is distributed in the hope that it will be useful, but
+#  WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#  General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with GCC; see the file COPYING3.  If not see
+#  <http://www.gnu.org/licenses/>.
+
+LIB1ASMSRC   = aarch64/lib1funcs.asm
+LIB1ASMFUNCS = _aarch64_sync_cache_range
diff --git a/libgcc/config.host b/libgcc/config.host
index 0574b4d7741..e6a834b8fc8 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -359,6 +359,12 @@  aarch64*-*-freebsd*)
 	tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
 	md_unwind_header=aarch64/freebsd-unwind.h
 	;;
+aarch64*-*-netbsd*)
+	extra_parts="$extra_parts crtfastmath.o"
+	tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
+	tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
+	md_unwind_header=aarch64/aarch64-unwind.h
+	;;
 aarch64*-*-fuchsia*)
 	tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
 	tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp"