[PATCH] RISC-V: Add custom RTEMS multilibs

Hesham Almatary heshamelmatary at gmail.com
Wed Jun 13 10:21:10 UTC 2018


On Wed, Jun 13, 2018 at 10:39 AM, Sebastian Huber
<sebastian.huber at embedded-brains.de> wrote:
> Add multilib variants for -march=rv64imafd, e.g. to support the BOOMv2 core.
>
> Add -mcmodel=medany as a variant of the 64-bit multilibs for RTEMS.  The
> ratinale for this change is that several existing RISC-V chips map the
> RAM at 0x80000000.  In RTEMS, we do not use virtual memory, so
> applications will run at this location which is outside the +-2GiB range
> in a 64-bit configuration.
>
> gcc/
>         * config.gcc (riscv*-*-elf* | riscv*-*-rtems*): Use custom
>         multilibs for *-*-rtems*.
>         * config/riscv/t-rtems: New file.
> ---
>  gcc/config.gcc           | 20 +++++++++++---------
>  gcc/config/riscv/t-rtems | 25 +++++++++++++++++++++++++
>  2 files changed, 36 insertions(+), 9 deletions(-)
>  create mode 100644 gcc/config/riscv/t-rtems
>
> diff --git a/gcc/config.gcc b/gcc/config.gcc
> index c3aecbfe764..25383423721 100644
> --- a/gcc/config.gcc
> +++ b/gcc/config.gcc
> @@ -2085,10 +2085,17 @@ riscv*-*-linux*)
>         ;;
>  riscv*-*-elf* | riscv*-*-rtems*)
>         tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
> -       case "x${enable_multilib}" in
> -       xno) ;;
> -       xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
> -       *) echo "Unknown value for enable_multilib"; exit 1
> +       case ${target} in
> +       *-*-rtems*)
> +         tm_file="${tm_file} rtems.h riscv/rtems.h"
> +         tmake_file="${tmake_file} riscv/t-rtems"
> +         ;;
> +       *)
> +         case "x${enable_multilib}" in
> +         xno) ;;
> +         xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
> +         *) echo "Unknown value for enable_multilib"; exit 1
> +         esac
>         esac
>         tmake_file="${tmake_file} riscv/t-riscv"
>         gnu_ld=yes
> @@ -2096,11 +2103,6 @@ riscv*-*-elf* | riscv*-*-rtems*)
>         # Force .init_array support.  The configure script cannot always
>         # automatically detect that GAS supports it, yet we require it.
>         gcc_cv_initfini_array=yes
> -       case ${target} in
> -       riscv*-*-rtems*)
> -         tm_file="${tm_file} rtems.h riscv/rtems.h"
> -         ;;
> -       esac
>         ;;
>  riscv*-*-freebsd*)
>         tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
> diff --git a/gcc/config/riscv/t-rtems b/gcc/config/riscv/t-rtems
> new file mode 100644
> index 00000000000..41f5927fc87
> --- /dev/null
> +++ b/gcc/config/riscv/t-rtems
> @@ -0,0 +1,25 @@
> +MULTILIB_OPTIONS       =
> +MULTILIB_DIRNAMES      =
> +
> +MULTILIB_OPTIONS       += march=rv32i/march=rv32im/march=rv32imafd/march=rv32iac/march=rv32imac/march=rv32imafc/march=rv64imafd/march=rv64imac/march=rv64imafdc
> +MULTILIB_DIRNAMES      += rv32i       rv32im       rv32imafd       rv32iac       rv32imac       rv32imafc       rv64imafd       rv64imac       rv64imafdc
> +
Is there a specific reason why there is no rv32ima?

> +MULTILIB_OPTIONS       += mabi=ilp32/mabi=ilp32f/mabi=ilp32d/mabi=lp64/mabi=lp64d
> +MULTILIB_DIRNAMES      += ilp32      ilp32f      ilp32d      lp64      lp64d
> +
> +MULTILIB_OPTIONS       += mcmodel=medany
> +MULTILIB_DIRNAMES      += medany
> +
> +MULTILIB_REQUIRED      =
> +MULTILIB_REQUIRED      += march=rv32i/mabi=ilp32
> +MULTILIB_REQUIRED      += march=rv32im/mabi=ilp32
> +MULTILIB_REQUIRED      += march=rv32imafd/mabi=ilp32d
> +MULTILIB_REQUIRED      += march=rv32iac/mabi=ilp32
> +MULTILIB_REQUIRED      += march=rv32imac/mabi=ilp32
> +MULTILIB_REQUIRED      += march=rv32imafc/mabi=ilp32f
> +MULTILIB_REQUIRED      += march=rv64imafd/mabi=lp64d
> +MULTILIB_REQUIRED      += march=rv64imafd/mabi=lp64d/mcmodel=medany
> +MULTILIB_REQUIRED      += march=rv64imac/mabi=lp64
> +MULTILIB_REQUIRED      += march=rv64imac/mabi=lp64/mcmodel=medany
> +MULTILIB_REQUIRED      += march=rv64imafdc/mabi=lp64d
> +MULTILIB_REQUIRED      += march=rv64imafdc/mabi=lp64d/mcmodel=medany
> --
> 2.13.7
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel



-- 
Hesham



More information about the devel mailing list