X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=sim%2Fmips%2Fconfigure.ac;h=84b8d774739b161809abcb676b786a907fa1cc1e;hb=5f4def5cbd12e77075f64a6854fb002f34be8a01;hp=76e3a264b416faa90f99bcf880456e36e25eaaa4;hpb=f05692463ca14b5fb6bbe4e207db0b2c73da963b;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/mips/configure.ac b/sim/mips/configure.ac index 76e3a264b4..84b8d77473 100644 --- a/sim/mips/configure.ac +++ b/sim/mips/configure.ac @@ -1,14 +1,11 @@ dnl Process this file with autoconf to produce a configure script. -AC_PREREQ(2.59)dnl AC_INIT(Makefile.in) +sinclude(../common/acinclude.m4) -sinclude(../common/common.m4) -sinclude(../common/aclocal.m4) +SIM_AC_COMMON dnl Options available in this module -SIM_AC_OPTION_INLINE() SIM_AC_OPTION_ALIGNMENT(NONSTRICT_ALIGNMENT) -SIM_AC_OPTION_HOSTENDIAN SIM_AC_OPTION_WARNINGS SIM_AC_OPTION_RESERVED_BITS(1) @@ -21,6 +18,8 @@ SIM_AC_OPTION_RESERVED_BITS(1) case "${target}" in mips64vr*-*-*) SIM_SUBTARGET="-DTARGET_ENABLE_FR=1" ;; mips*tx39*) SIM_SUBTARGET="-DSUBTARGET_R3900=1";; + mips*-sde-elf*) SIM_SUBTARGET="-DTARGET_ENABLE_FR=1";; + mips*-mti-elf*) SIM_SUBTARGET="-DTARGET_ENABLE_FR=1";; mipsisa32*-*-*) SIM_SUBTARGET="-DTARGET_ENABLE_FR=1";; mipsisa64*-*-*) SIM_SUBTARGET="-DTARGET_ENABLE_FR=1";; *) SIM_SUBTARGET="";; @@ -35,14 +34,14 @@ AC_SUBST(SIM_SUBTARGET) mips_endian= default_endian= case "${target}" in - mips64el*-*-*) mips_endian=LITTLE_ENDIAN ;; - mips64vr*el-*-*) default_endian=LITTLE_ENDIAN ;; - mips64*-*-*) default_endian=BIG_ENDIAN ;; - mips16*-*-*) default_endian=BIG_ENDIAN ;; - mipsisa32*-*-*) default_endian=BIG_ENDIAN ;; - mipsisa64*-*-*) default_endian=BIG_ENDIAN ;; - mips*-*-*) default_endian=BIG_ENDIAN ;; - *) default_endian=BIG_ENDIAN ;; + mips64el*-*-*) mips_endian=LITTLE ;; + mips64vr*el-*-*) default_endian=LITTLE ;; + mips64*-*-*) default_endian=BIG ;; + mips16*-*-*) default_endian=BIG ;; + mipsisa32*-*-*) default_endian=BIG ;; + mipsisa64*-*-*) default_endian=BIG ;; + mips*-*-*) default_endian=BIG ;; + *) default_endian=BIG ;; esac SIM_AC_OPTION_ENDIAN($mips_endian,$default_endian) @@ -53,6 +52,8 @@ SIM_AC_OPTION_ENDIAN($mips_endian,$default_endian) # mips_addr_bitsize= case "${target}" in + mips*-sde-elf*) mips_bitsize=64 ; mips_msb=63 ;; + mips*-mti-elf*) mips_bitsize=64 ; mips_msb=63 ;; mips64*-*-*) mips_bitsize=64 ; mips_msb=63 ;; mips16*-*-*) mips_bitsize=64 ; mips_msb=63 ;; mipsisa32*-*-*) mips_bitsize=32 ; mips_msb=31 ;; @@ -70,9 +71,9 @@ SIM_AC_OPTION_BITSIZE($mips_bitsize,$mips_msb,$mips_addr_bitsize) mips_fpu=HARDWARE_FLOATING_POINT mips_fpu_bitsize= case "${target}" in - mips*tx39*) mips_fpu=HARD_FLOATING_POINT - mips_fpu_bitsize=32 - ;; + mips*tx39*) mips_fpu=HARD_FLOATING_POINT ; mips_fpu_bitsize=32 ;; + mips*-sde-elf*) mips_fpu=HARD_FLOATING_POINT ; mips_fpu_bitsize=64 ;; + mips*-mti-elf*) mips_fpu=HARD_FLOATING_POINT ; mips_fpu_bitsize=64 ;; mips64*-*-*) mips_fpu=HARD_FLOATING_POINT ;; mips16*-*-*) mips_fpu=HARD_FLOATING_POINT ;; mipsisa32*-*-*) mips_fpu=HARD_FLOATING_POINT ; mips_fpu_bitsize=64 ;; @@ -84,16 +85,6 @@ SIM_AC_OPTION_FLOAT($mips_fpu,$mips_fpu_bitsize) -# -# Select the level of SMP support -# -case "${target}" in - *) mips_smp=0 ;; -esac -SIM_AC_OPTION_SMP($mips_smp) - - - # # Select the IGEN architecture # @@ -134,6 +125,13 @@ case "${target}" in vr5500:mipsIV,vr5500:32,64,f:mips5500" sim_multi_default=mips5000 ;; + mips*-sde-elf* | mips*-mti-elf*) + sim_gen=MULTI + sim_multi_configs="\ + micromips:micromips64,micromipsdsp:32,64,f:mips_micromips\ + mips64r2:mips64r2,mips3d,mips16,mips16e,mdmx,dsp,dsp2,smartmips:32,64,f:mipsisa64r2" + sim_multi_default=mipsisa64r2 + ;; mips64*-*-*) sim_igen_filter="32,64,f" sim_gen=IGEN ;; @@ -141,28 +139,42 @@ case "${target}" in sim_igen_filter="32,64,f" sim_m16_filter="16" ;; - mipsisa32*-*-*) sim_gen=IGEN - sim_igen_machine="-M mips32" + mipsisa32r2*-*-*) sim_gen=MULTI + sim_multi_configs="\ + micromips:micromips32,micromipsdsp:32,f:mips_micromips\ + mips32r2:mips32r2,mips3d,mips16,mips16e,mdmx,dsp,dsp2,smartmips:32,f:mipsisa32r2" + sim_multi_default=mipsisa32r2 + ;; + mipsisa32*-*-*) sim_gen=M16 + sim_igen_machine="-M mips32,mips16,mips16e,smartmips" + sim_m16_machine="-M mips16,mips16e,mips32" sim_igen_filter="32,f" sim_mach_default="mipsisa32" ;; + mipsisa64r2*-*-*) sim_gen=M16 + sim_igen_machine="-M mips64r2,mips3d,mips16,mips16e,mdmx,dsp,dsp2" + sim_m16_machine="-M mips16,mips16e,mips64r2" + sim_igen_filter="32,64,f" + sim_mach_default="mipsisa64r2" + ;; mipsisa64sb1*-*-*) sim_gen=IGEN - sim_igen_machine="-M mips64,mips3d,sb1" + sim_igen_machine="-M mips64,mips3d,sb1" sim_igen_filter="32,64,f" sim_mach_default="mips_sb1" ;; - mipsisa64*-*-*) sim_gen=IGEN - sim_igen_machine="-M mips64,mips3d" + mipsisa64*-*-*) sim_gen=M16 + sim_igen_machine="-M mips64,mips3d,mips16,mips16e,mdmx" + sim_m16_machine="-M mips16,mips16e,mips64" sim_igen_filter="32,64,f" sim_mach_default="mipsisa64" ;; - mips*lsi*) sim_gen=M16 + mips*lsi*) sim_gen=M16 sim_igen_machine="-M mipsIII,mips16" sim_m16_machine="-M mips16,mipsIII" sim_igen_filter="32,f" sim_m16_filter="16" sim_mach_default="mips4000" - ;; + ;; mips*-*-*) sim_gen=IGEN sim_igen_filter="32,f" ;; @@ -196,24 +208,24 @@ if test ${sim_gen} = MULTI; then # Simple sanity check. if test -z "${sim_multi_configs}" || test -z "${sim_multi_default}"; then - AC_MSG_ERROR(Error in configure.in: MULTI simulator not set up correctly) + AC_MSG_ERROR(Error in configure.ac: MULTI simulator not set up correctly) fi # Start in a known state. rm -f multi-include.h multi-run.c sim_multi_flags= sim_multi_src= - sim_multi_obj=multi-run.o + sim_multi_obj= sim_multi_igen_configs= sim_seen_default=no cat << __EOF__ > multi-run.c /* Main entry point for MULTI simulators. - Copyright (C) 2003 Free Software Foundation, Inc. + Copyright (C) 2003-2019 Free Software Foundation, Inc. This program 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 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -222,8 +234,7 @@ if test ${sim_gen} = MULTI; then GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + along with this program. If not, see . -- @@ -231,6 +242,8 @@ if test ${sim_gen} = MULTI; then #include "sim-main.h" #include "multi-include.h" +#include "elf-bfd.h" +#include "elf/mips.h" #define SD sd #define CPU cpu @@ -245,6 +258,9 @@ sim_engine_run (SIM_DESC sd, if (STATE_ARCHITECTURE (sd) == NULL) mach = bfd_mach_${sim_multi_default}; + else if (elf_elfheader (STATE_PROG_BFD (sd))->e_flags + & EF_MIPS_ARCH_ASE_MICROMIPS) + mach = bfd_mach_mips_micromips; else mach = STATE_ARCHITECTURE (SD)->mach; @@ -274,7 +290,7 @@ __EOF__ # the ${sim_multi_configs} entry. sim_multi_flags="${sim_multi_flags} -F ${filter} -M ${machine}" - # Check whether mips16 handling is needed. + # Check whether special handling is needed. case ${c} in *:*mips16*:*) # Run igen twice, once for normal mode and once for mips16. @@ -287,6 +303,30 @@ __EOF__ sim_multi_obj="${sim_multi_obj} m16${name}_run.o" sim_multi_flags="${sim_multi_flags} -F 16" ;; + *:*micromips32*:*) + # Run igen thrice, once for micromips32, once for micromips16, + # and once for m32. + ws="micromips_m32 micromips16 micromips32" + + # The top-level function for the micromips simulator is + # in a file micromips${name}_run.c, generated by the + # tmp-run-multi Makefile rule. + sim_multi_src="${sim_multi_src} micromips${name}_run.c" + sim_multi_obj="${sim_multi_obj} micromips${name}_run.o" + sim_multi_flags="${sim_multi_flags} -F 16,32" + ;; + *:*micromips64*:*) + # Run igen thrice, once for micromips64, once for micromips16, + # and once for m64. + ws="micromips_m64 micromips16 micromips64" + + # The top-level function for the micromips simulator is + # in a file micromips${name}_run.c, generated by the + # tmp-run-multi Makefile rule. + sim_multi_src="${sim_multi_src} micromips${name}_run.c" + sim_multi_obj="${sim_multi_obj} micromips${name}_run.o" + sim_multi_flags="${sim_multi_flags} -F 16,32,64" + ;; *) ws=m32 ;; @@ -322,7 +362,7 @@ __EOF__ # Check whether we added a 'default:' label. if test ${sim_seen_default} = no; then - AC_MSG_ERROR(Error in configure.in: \${sim_multi_configs} doesn't have an entry for \${sim_multi_default}) + AC_MSG_ERROR(Error in configure.ac: \${sim_multi_configs} doesn't have an entry for \${sim_multi_default}) fi cat << __EOF__ >> multi-run.c @@ -366,21 +406,23 @@ else sim_multi_src=doesnt-exist.c if test x"${sim_mach_default}" = x""; then - AC_MSG_ERROR(Error in configure.in: \${sim_mach_default} not defined) + AC_MSG_ERROR(Error in configure.ac: \${sim_mach_default} not defined) fi SIM_SUBTARGET="$SIM_SUBTARGET -DMIPS_MACH_DEFAULT=bfd_mach_${sim_mach_default}" fi sim_igen_flags="-F ${sim_igen_filter} ${sim_igen_machine} ${sim_igen_smp}" sim_m16_flags=" -F ${sim_m16_filter} ${sim_m16_machine} ${sim_igen_smp}" +sim_micromips16_flags=" -F ${sim_micromips16_filter} ${sim_micromips16_machine} ${sim_igen_smp}" +sim_micromips_flags=" -F ${sim_micromips_filter} ${sim_micromips_machine} ${sim_igen_smp}" AC_SUBST(sim_igen_flags) AC_SUBST(sim_m16_flags) +AC_SUBST(sim_micromips_flags) +AC_SUBST(sim_micromips16_flags) AC_SUBST(sim_gen) AC_SUBST(sim_multi_flags) AC_SUBST(sim_multi_igen_configs) AC_SUBST(sim_multi_src) AC_SUBST(sim_multi_obj) - - # # Add simulated hardware devices # @@ -389,15 +431,11 @@ case "${target}" in mips*tx39*) hw_enabled=yes hw_extra_devices="tx3904cpu tx3904irc tx3904tmr tx3904sio" - mips_extra_objs="dv-sockser.o" - SIM_SUBTARGET="$SIM_SUBTARGET -DTARGET_TX3904=1" ;; *) - mips_extra_objs="" ;; esac SIM_AC_OPTION_HARDWARE($hw_enabled,$hw_devices,$hw_extra_devices) -AC_SUBST(mips_extra_objs) # Choose simulator engine @@ -412,7 +450,6 @@ AC_PATH_X mips_extra_libs="" AC_SUBST(mips_extra_libs) -AC_CHECK_HEADERS(string.h strings.h stdlib.h stdlib.h) AC_CHECK_LIB(m, fabs) AC_CHECK_FUNCS(aint anint sqrt)