[PATCH] Add port for Phoenix-RTOS on ARM platform.

Jakub Sejdak jakub.sejdak@phoesys.com
Wed May 18 07:03:00 GMT 2016


OK for trunk and backports to branch 6 and 5?

2016-05-17 10:42 GMT+02:00 Kuba Sejdak <jakub.sejdak@phoesys.com>:
> ---
>  ChangeLog                |  6 ++++++
>  MAINTAINERS              |  1 +
>  configure                |  6 ++++++
>  configure.ac             |  6 ++++++
>  gcc/ChangeLog            |  6 ++++++
>  gcc/config.gcc           | 11 +++++++++++
>  gcc/config/arm/t-phoenix | 29 +++++++++++++++++++++++++++++
>  gcc/config/phoenix.h     | 33 +++++++++++++++++++++++++++++++++
>  libgcc/ChangeLog         |  4 ++++
>  libgcc/config.host       |  7 +++++++
>  10 files changed, 109 insertions(+)
>  create mode 100644 gcc/config/arm/t-phoenix
>  create mode 100644 gcc/config/phoenix.h
>
> diff --git a/ChangeLog b/ChangeLog
> index 8698133..2d25a91 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,9 @@
> +2016-05-17  Jakub Sejdak  <jakub.sejdak@phoesys.com>
> +
> +    * configure.ac: Disable libgcj and libgloss for Phoenix-RTOS targets.
> +    * configure: Regenerated.
> +       * MAINTAINERS (OS maintainers): Add myself.
> +
>  2016-05-16  Jakub Sejdak  <jakub.sejdak@phoesys.com>
>
>         * config.guess: Import version 2016-04-02 (newest).
> diff --git a/MAINTAINERS b/MAINTAINERS
> index c615168..1d22df6 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -134,6 +134,7 @@ hpux                        Steve Ellcey            <sellcey@imgtec.com>
>  solaris                        Rainer Orth             <ro@CeBiTec.Uni-Bielefeld.DE>
>  netbsd                 Jason Thorpe            <thorpej@netbsd.org>
>  netbsd                 Krister Walfridsson     <krister.walfridsson@gmail.com>
> +Phoenix-RTOS   Jakub Sejdak            <jakub.sejdak@phoesys.com>
>  sh-linux-gnu           Kaz Kojima              <kkojima@gcc.gnu.org>
>  RTEMS Ports            Joel Sherrill           <joel@oarcorp.com>
>  RTEMS Ports            Ralf Corsepius          <ralf.corsepius@rtems.org>
> diff --git a/configure b/configure
> index ea63784..19451d2 100755
> --- a/configure
> +++ b/configure
> @@ -3469,6 +3469,9 @@ case "${target}" in
>    *-*-netware*)
>      noconfigdirs="$noconfigdirs ${libgcj}"
>      ;;
> +  *-*-phoenix*)
> +    noconfigdirs="$noconfigdirs ${libgcj}"
> +    ;;
>    *-*-rtems*)
>      noconfigdirs="$noconfigdirs ${libgcj}"
>      ;;
> @@ -3725,6 +3728,9 @@ case "${target}" in
>      ;;
>    *-*-netware*)
>      ;;
> +  *-*-phoenix*)
> +    noconfigdirs="$noconfigdirs target-libgloss"
> +    ;;
>    *-*-rtems*)
>      noconfigdirs="$noconfigdirs target-libgloss"
>      # this is not caught below because this stanza matches earlier
> diff --git a/configure.ac b/configure.ac
> index 54558df..d965059 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -805,6 +805,9 @@ case "${target}" in
>    *-*-netware*)
>      noconfigdirs="$noconfigdirs ${libgcj}"
>      ;;
> +  *-*-phoenix*)
> +    noconfigdirs="$noconfigdirs ${libgcj}"
> +    ;;
>    *-*-rtems*)
>      noconfigdirs="$noconfigdirs ${libgcj}"
>      ;;
> @@ -1061,6 +1064,9 @@ case "${target}" in
>      ;;
>    *-*-netware*)
>      ;;
> +  *-*-phoenix*)
> +    noconfigdirs="$noconfigdirs target-libgloss"
> +    ;;
>    *-*-rtems*)
>      noconfigdirs="$noconfigdirs target-libgloss"
>      # this is not caught below because this stanza matches earlier
> diff --git a/gcc/ChangeLog b/gcc/ChangeLog
> index c854a3e..0b1f96b 100644
> --- a/gcc/ChangeLog
> +++ b/gcc/ChangeLog
> @@ -1,3 +1,9 @@
> +2016-05-17 Jakub Sejdak <jakub.sejdak@phoesys.com>
> +
> +       * config.gcc: Add support for arm*-*-phoenix* targets.
> +       * config/arm/t-phoenix: New.
> +       * config/phoenix.h: New.
> +
>  2016-05-16  Wilco Dijkstra  <wdijkstr@arm.com>
>
>          * doc/invoke.texi (AArch64 Options): Various updates.
> diff --git a/gcc/config.gcc b/gcc/config.gcc
> index 51af122a..5470fa6 100644
> --- a/gcc/config.gcc
> +++ b/gcc/config.gcc
> @@ -815,6 +815,11 @@ case ${target} in
>        ;;
>    esac
>    ;;
> +*-*-phoenix*)
> +  gas=yes
> +  gnu_ld=yes
> +  default_use_cxa_atexit=yes
> +  ;;
>  *-*-rtems*)
>    case ${enable_threads} in
>      "" | yes | rtems) thread_file='rtems' ;;
> @@ -1099,6 +1104,12 @@ arm*-*-uclinux*eabi*)            # ARM ucLinux
>         # The EABI requires the use of __cxa_atexit.
>         default_use_cxa_atexit=yes
>         ;;
> +arm*-*-phoenix*)
> +       tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
> +       tm_file="${tm_file} newlib-stdint.h phoenix.h"
> +       tm_file="${tm_file} arm/aout.h arm/arm.h"
> +       tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
> +       ;;
>  arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
>         case ${target} in
>         arm*eb-*-eabi*)
> diff --git a/gcc/config/arm/t-phoenix b/gcc/config/arm/t-phoenix
> new file mode 100644
> index 0000000..d881884
> --- /dev/null
> +++ b/gcc/config/arm/t-phoenix
> @@ -0,0 +1,29 @@
> +# Copyright (C) 2016 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/>.
> +
> +MULTILIB_OPTIONS     = marm/mthumb
> +MULTILIB_DIRNAMES    = arm thumb
> +MULTILIB_EXCEPTIONS  =
> +MULTILIB_MATCHES     =
> +
> +MULTILIB_OPTIONS     += mfloat-abi=hard
> +MULTILIB_DIRNAMES    += fpu
> +MULTILIB_MATCHES     += mfloat-abi?hard=mhard-float
> +
> +MULTILIB_OPTIONS     += mno-thumb-interwork/mthumb-interwork
> +MULTILIB_DIRNAMES    += normal interwork
> diff --git a/gcc/config/phoenix.h b/gcc/config/phoenix.h
> new file mode 100644
> index 0000000..830d202
> --- /dev/null
> +++ b/gcc/config/phoenix.h
> @@ -0,0 +1,33 @@
> +/* Base configuration file for all Phoenix-RTOS targets.
> +   Copyright (C) 2016 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/>.  */
> +
> +#undef TARGET_OS_CPP_BUILTINS
> +#define TARGET_OS_CPP_BUILTINS()      \
> +    do {                                \
> +      builtin_define_std ("phoenix");      \
> +      builtin_define_std ("unix");      \
> +      builtin_assert ("system=phoenix");   \
> +      builtin_assert ("system=unix");   \
> +    } while(0);
> +
> +#define STD_LIB_SPEC "%{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}}"
> +
> +/* This will prevent selecting 'unsigned long int' instead of 'unsigned int' as 'uint32_t' in stdint-newlib.h. */
> +#undef STDINT_LONG32
> +#define STDINT_LONG32          0
> diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
> index 91f968a..bcb4963 100644
> --- a/libgcc/ChangeLog
> +++ b/libgcc/ChangeLog
> @@ -1,3 +1,7 @@
> +2016-05-17 Jakub Sejdak <jakub.sejdak@phoesys.com>
> +
> +       * config.host: Add suport for arm*-*-phoenix* targets.
> +
>  2016-05-10  Joel Sherrill <joel@rtems.org>
>
>         PR libgcc/70720
> diff --git a/libgcc/config.host b/libgcc/config.host
> index 4fe3085..86318c6 100644
> --- a/libgcc/config.host
> +++ b/libgcc/config.host
> @@ -404,6 +404,13 @@ arm*-*-uclinux*)           # ARM ucLinux
>         unwind_header=config/arm/unwind-arm.h
>         extra_parts="$extra_parts crti.o crtn.o"
>         ;;
> +arm*-*-phoenix*)
> +       tmake_file="t-hardfp t-softfp arm/t-arm arm/t-elf arm/t-softfp arm/t-phoenix"
> +       tmake_file="${tmake_file} arm/t-bpabi"
> +       tm_file="$tm_file arm/bpabi-lib.h"
> +       extra_parts="crtbegin.o crtend.o crti.o crtn.o"
> +       unwind_header=config/arm/unwind-arm.h
> +       ;;
>  arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
>         tmake_file="${tmake_file} arm/t-arm arm/t-elf t-fixedpoint-gnu-prefix"
>         tm_file="$tm_file arm/bpabi-lib.h"
> --
> 2.7.4
>



More information about the Gcc-patches mailing list