Commit a8ef8061 by Sebastian Huber Committed by Sebastian Huber

RISC-V: Add custom RTEMS multilibs

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
rationale 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.

From-SVN: r261619
parent cb4f9a8c
2018-06-15 Sebastian Huber <sebastian.huber@embedded-brains.de>
* config.gcc (riscv*-*-elf* | riscv*-*-rtems*): Use custom
multilibs for *-*-rtems*.
* config/riscv/t-rtems: New file.
2018-06-14 Jakub Jelinek <jakub@redhat.com> 2018-06-14 Jakub Jelinek <jakub@redhat.com>
PR middle-end/86122 PR middle-end/86122
......
...@@ -2080,10 +2080,17 @@ riscv*-*-linux*) ...@@ -2080,10 +2080,17 @@ riscv*-*-linux*)
;; ;;
riscv*-*-elf* | riscv*-*-rtems*) riscv*-*-elf* | riscv*-*-rtems*)
tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h" tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
case "x${enable_multilib}" in case ${target} in
xno) ;; *-*-rtems*)
xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;; tm_file="${tm_file} rtems.h riscv/rtems.h"
*) echo "Unknown value for enable_multilib"; exit 1 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 esac
tmake_file="${tmake_file} riscv/t-riscv" tmake_file="${tmake_file} riscv/t-riscv"
gnu_ld=yes gnu_ld=yes
...@@ -2091,11 +2098,6 @@ riscv*-*-elf* | riscv*-*-rtems*) ...@@ -2091,11 +2098,6 @@ riscv*-*-elf* | riscv*-*-rtems*)
# Force .init_array support. The configure script cannot always # Force .init_array support. The configure script cannot always
# automatically detect that GAS supports it, yet we require it. # automatically detect that GAS supports it, yet we require it.
gcc_cv_initfini_array=yes gcc_cv_initfini_array=yes
case ${target} in
riscv*-*-rtems*)
tm_file="${tm_file} rtems.h riscv/rtems.h"
;;
esac
;; ;;
riscv*-*-freebsd*) riscv*-*-freebsd*)
tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h" tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
......
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
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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment