diff options
author | Mike Frysinger <vapier@gentoo.org> | 2022-12-24 21:28:03 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2022-12-24 22:13:13 -0500 |
commit | abc494c65d640626891408d551a0fe1842e728e3 (patch) | |
tree | a4edab1fc38f7e7fed76c090a18d3e4696039737 /sim/configure | |
parent | fec5386aef5869fbc982e5e287ffd9e4f030d8d2 (diff) | |
download | gdb-abc494c65d640626891408d551a0fe1842e728e3.zip gdb-abc494c65d640626891408d551a0fe1842e728e3.tar.gz gdb-abc494c65d640626891408d551a0fe1842e728e3.tar.bz2 |
sim: mips: move igen settings to top-level configure
This is the last bit of logic that exists in the mips configure
script, so move it to the top-level configure to kill it off.
We still have to move the Makefile.in igen logic to local.mk,
but this is a required first step for that.
Diffstat (limited to 'sim/configure')
-rwxr-xr-x | sim/configure | 268 |
1 files changed, 260 insertions, 8 deletions
diff --git a/sim/configure b/sim/configure index ed08f10..3a57189 100755 --- a/sim/configure +++ b/sim/configure @@ -641,6 +641,15 @@ LTLIBOBJS include_makefile SIM_RX_CYCLE_ACCURATE_FLAGS SIM_RISCV_BITSIZE +SIM_MIPS_MULTI_OBJ +SIM_MIPS_MULTI_SRC +SIM_MIPS_MULTI_IGEN_CONFIGS +SIM_MIPS_MULTI_FLAGS +SIM_MIPS_GEN +SIM_MIPS_MICROMIPS16_FLAGS +SIM_MIPS_MICROMIPS_FLAGS +SIM_MIPS_M16_FLAGS +SIM_MIPS_IGEN_FLAGS SIM_MIPS_FPU_BITSIZE SIM_MIPS_BITSIZE SIM_MIPS_SUBTARGET @@ -704,6 +713,7 @@ SIM_ENABLE_ARCH_ppc_TRUE CC_FOR_TARGET_PPC LD_FOR_TARGET_PPC AS_FOR_TARGET_PPC +subdirs SIM_ENABLE_ARCH_or1k_FALSE SIM_ENABLE_ARCH_or1k_TRUE CC_FOR_TARGET_OR1K @@ -729,7 +739,6 @@ SIM_ENABLE_ARCH_mips_TRUE CC_FOR_TARGET_MIPS LD_FOR_TARGET_MIPS AS_FOR_TARGET_MIPS -subdirs SIM_ENABLE_ARCH_microblaze_FALSE SIM_ENABLE_ARCH_microblaze_TRUE CC_FOR_TARGET_MICROBLAZE @@ -1113,8 +1122,7 @@ CC_FOR_TARGET_V850 AS_FOR_TARGET_EXAMPLE_SYNACOR LD_FOR_TARGET_EXAMPLE_SYNACOR CC_FOR_TARGET_EXAMPLE_SYNACOR' -ac_subdirs_all='mips -ppc' +ac_subdirs_all='ppc' # Initialize some variables set by options. ac_init_help= @@ -12434,7 +12442,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12437 "configure" +#line 12445 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -12540,7 +12548,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12543 "configure" +#line 12551 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -15165,10 +15173,11 @@ fi SIM_PRIMARY_TARGET=mips fi as_fn_append SIM_ENABLED_ARCHES " mips" + ac_config_files="$ac_config_files mips/Makefile.sim:mips/Makefile.in" + ac_config_commands="$ac_config_commands mips/Makefile" -subdirs="$subdirs mips" - + as_fn_append SIM_SUBDIRS " mips" ac_config_files="$ac_config_files mips/.gdbinit:common/gdbinit.in" @@ -15384,7 +15393,9 @@ fi SIM_PRIMARY_TARGET=ppc fi as_fn_append SIM_ENABLED_ARCHES " ppc" - subdirs="$subdirs ppc" + + +subdirs="$subdirs ppc" ac_config_files="$ac_config_files ppc/.gdbinit:common/gdbinit.in" @@ -16351,6 +16362,233 @@ esac $as_echo "$SIM_MIPS_FPU_BITSIZE" >&6; } +SIM_MIPS_GEN=IGEN +sim_mips_igen_machine="-M mipsIV" +sim_mips_m16_machine="-M mips16,mipsIII" +sim_mips_igen_filter="32,64,f" +sim_mips_m16_filter="16" +case ${target} in #( + mips*tx39*) : + SIM_MIPS_GEN=IGEN + sim_mips_igen_filter="32,f" + sim_mips_igen_machine="-M r3900" ;; #( + mips64vr41*) : + SIM_MIPS_GEN=M16 + sim_mips_igen_machine="-M vr4100" + sim_mips_m16_machine="-M vr4100" ;; #( + mips64*) : + SIM_MIPS_GEN=MULTI + sim_mips_multi_configs="\ + vr4100:mipsIII,mips16,vr4100:32,64:mips4100,mips4111\ + vr4120:mipsIII,mips16,vr4120:32,64:mips4120\ + vr5000:mipsIV:32,64,f:mips4300,mips5000,mips8000\ + vr5400:mipsIV,vr5400:32,64,f:mips5400\ + vr5500:mipsIV,vr5500:32,64,f:mips5500" + sim_mips_multi_default=mips5000 ;; #( + mips*-sde-elf* | mips*-mti-elf*) : + SIM_MIPS_GEN=MULTI + sim_mips_multi_configs="\ + micromips:micromips64,micromipsdsp:32,64,f:mips_micromips\ + mipsisa64r2:mips64r2,mips16,mips16e,mdmx,dsp,dsp2,mips3d,smartmips:32,64,f:mipsisa32r2,mipsisa64r2,mipsisa32r5,mipsisa64r5\ + mipsisa64r6:mips64r6:32,64,f:mipsisa32r6,mipsisa64r6" + sim_mips_multi_default=mipsisa64r2 ;; #( + mips16*) : + SIM_MIPS_GEN=M16 ;; #( + mipsisa32r2*) : + SIM_MIPS_GEN=MULTI + sim_mips_multi_configs="\ + micromips:micromips32,micromipsdsp:32,f:mips_micromips\ + mips32r2:mips32r2,mips3d,mips16,mips16e,mdmx,dsp,dsp2,smartmips:32,f:mipsisa32r2" + sim_mips_multi_default=mipsisa32r2 ;; #( + mipsisa32r6*) : + SIM_MIPS_GEN=IGEN + sim_mips_igen_machine="-M mips32r6" + sim_mips_igen_filter="32,f" ;; #( + mipsisa32*) : + SIM_MIPS_GEN=M16 + sim_mips_igen_machine="-M mips32,mips16,mips16e,smartmips" + sim_mips_m16_machine="-M mips16,mips16e,mips32" + sim_mips_igen_filter="32,f" ;; #( + mipsisa64r2*) : + SIM_MIPS_GEN=M16 + sim_mips_igen_machine="-M mips64r2,mips3d,mips16,mips16e,mdmx,dsp,dsp2" + sim_mips_m16_machine="-M mips16,mips16e,mips64r2" ;; #( + mipsisa64r6*) : + SIM_MIPS_GEN=IGEN + sim_mips_igen_machine="-M mips64r6" ;; #( + mipsisa64sb1*) : + SIM_MIPS_GEN=IGEN + sim_mips_igen_machine="-M mips64,mips3d,sb1" ;; #( + mipsisa64*) : + SIM_MIPS_GEN=M16 + sim_mips_igen_machine="-M mips64,mips3d,mips16,mips16e,mdmx" + sim_mips_m16_machine="-M mips16,mips16e,mips64" ;; #( + mips*lsi*) : + SIM_MIPS_GEN=M16 + sim_mips_igen_machine="-M mipsIII,mips16" + sim_mips_m16_machine="-M mips16,mipsIII" + sim_mips_igen_filter="32,f" ;; #( + mips*) : + SIM_MIPS_GEN=IGEN + sim_mips_igen_filter="32,f" ;; #( + *) : + ;; +esac + +SIM_MIPS_MULTI_FLAGS= +SIM_MIPS_MULTI_SRC= +SIM_MIPS_MULTI_OBJ= +SIM_MIPS_MULTI_IGEN_CONFIGS= +if test "x$SIM_MIPS_GEN" = x"MULTI"; then : + if test -z "${sim_mips_multi_configs}" || test -z "${sim_mips_multi_default}"; then : + as_fn_error $? "Error in configure.ac: MULTI simulator not set up correctly" "$LINENO" 5 +fi + + as_dir=mips; as_fn_mkdir_p + rm -f mips/multi-include.h mips/multi-run.c + sim_mips_seen_default=no + + cat << __EOF__ > mips/multi-run.c +/* Main entry point for MULTI simulators. + Copyright (C) 2003-2022 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 3 of the License, or + (at your option) any later version. + + This program 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 this program. If not, see <http://www.gnu.org/licenses/>. + + -- + + This file was generated by sim/mips/configure. */ + +#include "sim-main.h" +#include "multi-include.h" +#include "elf-bfd.h" +#include "elfxx-mips.h" +#include "elf/mips.h" + +#define SD sd +#define CPU cpu + +void +sim_engine_run (SIM_DESC sd, + int next_cpu_nr, + int nr_cpus, + int signal) /* ignore */ +{ + int mach; + + if (STATE_ARCHITECTURE (sd) == NULL) + mach = bfd_mach_${sim_mips_multi_default}; + else if (elf_elfheader (STATE_PROG_BFD (sd))->e_flags + & EF_MIPS_ARCH_ASE_MICROMIPS) + mach = bfd_mach_mips_micromips; + else + { + mach = _bfd_elf_mips_mach (elf_elfheader (STATE_PROG_BFD (sd))->e_flags); + if (!mach) + mach = STATE_ARCHITECTURE (SD)->mach; + } + + switch (mach) + { +__EOF__ + + for fc in ${sim_mips_multi_configs}; do + + c=`echo ${fc} | sed 's/:[^:]*$//'` + bfdmachs=`echo ${fc} | sed 's/.*://'` + name=`echo ${c} | sed 's/:.*//'` + machine=`echo ${c} | sed 's/.*:\(.*\):.*/\1/'` + filter=`echo ${c} | sed 's/.*://'` + + as_fn_append SIM_MIPS_MULTI_FLAGS " -F ${filter} -M ${machine}" + + case ${c} in #( + *:*mips16*:*) : + ws="m32 m16" + + as_fn_append SIM_MIPS_MULTI_SRC " m16${name}_run.c" + as_fn_append SIM_MIPS_MULTI_OBJ " m16${name}_run.o" + as_fn_append SIM_MIPS_MULTI_FLAGS " -F 16" + ;; #( + *:*micromips32*:*) : + ws="micromips_m32 micromips16 micromips32" + + as_fn_append SIM_MIPS_MULTI_SRC " micromips${name}_run.c" + as_fn_append SIM_MIPS_MULTI_OBJ " micromips${name}_run.o" + as_fn_append SIM_MIPS_MULTI_FLAGS " -F 16,32" + ;; #( + *:*micromips64*:*) : + ws="micromips_m64 micromips16 micromips64" + + as_fn_append SIM_MIPS_MULTI_SRC " micromips${name}_run.c" + as_fn_append SIM_MIPS_MULTI_OBJ " micromips${name}_run.o" + as_fn_append SIM_MIPS_MULTI_FLAGS " -F 16,32,64" + ;; #( + *) : + ws=m32 ;; +esac + + for w in ${ws}; do + for base in engine icache idecode model semantics support; do + as_fn_append SIM_MIPS_MULTI_SRC " ${w}${name}_${base}.c" + as_fn_append SIM_MIPS_MULTI_SRC " ${w}${name}_${base}.h" + as_fn_append SIM_MIPS_MULTI_OBJ " ${w}${name}_${base}.o" + done + as_fn_append SIM_MIPS_MULTI_IGEN_CONFIGS " ${w}${c}" + done + + echo "#include \"${w}${name}_engine.h\"" >> mips/multi-include.h + + for mach in `echo ${bfdmachs} | sed 's/,/ /g'`; do + echo " case bfd_mach_${mach}:" >> mips/multi-run.c + if test "x$mach" = x"${sim_mips_multi_default}"; then : + echo " default:" >> mips/multi-run.c + sim_mips_seen_default=yes + +fi + done + echo " ${w}${name}_engine_run (sd, next_cpu_nr, nr_cpus, signal);" \ + >> mips/multi-run.c + echo " break;" >> mips/multi-run.c + done + + if test "x$sim_mips_seen_default" = xno; then : + as_fn_error $? "Error in configure.ac: \${sim_mips_multi_configs} doesn't have an entry for \${sim_mips_multi_default}" "$LINENO" 5 +fi + + cat << __EOF__ >> mips/multi-run.c + } +} +__EOF__ + +else + SIM_MIPS_MULTI_SRC=doesnt-exist.c + +fi +SIM_MIPS_IGEN_FLAGS="-F ${sim_mips_igen_filter} ${sim_mips_igen_machine} ${sim_igen_smp}" +SIM_MIPS_M16_FLAGS="-F ${sim_mips_m16_filter} ${sim_mips_m16_machine} ${sim_igen_smp}" +SIM_MIPS_MICROMIPS16_FLAGS="-F ${sim_mips_micromips16_filter} ${sim_mips_micromips16_machine} ${sim_igen_smp}" +SIM_MIPS_MICROMIPS_FLAGS="-F ${sim_mips_micromips_filter} ${sim_mips_micromips_machine} ${sim_igen_smp}" + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking riscv bitsize" >&5 $as_echo_n "checking riscv bitsize... " >&6; } SIM_RISCV_BITSIZE=64 @@ -17629,6 +17867,8 @@ do "microblaze/Makefile") CONFIG_COMMANDS="$CONFIG_COMMANDS microblaze/Makefile" ;; "microblaze/.gdbinit") CONFIG_FILES="$CONFIG_FILES microblaze/.gdbinit:common/gdbinit.in" ;; "depdir-microblaze") CONFIG_COMMANDS="$CONFIG_COMMANDS depdir-microblaze" ;; + "mips/Makefile.sim") CONFIG_FILES="$CONFIG_FILES mips/Makefile.sim:mips/Makefile.in" ;; + "mips/Makefile") CONFIG_COMMANDS="$CONFIG_COMMANDS mips/Makefile" ;; "mips/.gdbinit") CONFIG_FILES="$CONFIG_FILES mips/.gdbinit:common/gdbinit.in" ;; "depdir-mips") CONFIG_COMMANDS="$CONFIG_COMMANDS depdir-mips" ;; "mn10300/Makefile.sim") CONFIG_FILES="$CONFIG_FILES mn10300/Makefile.sim:mn10300/Makefile.in" ;; @@ -19245,6 +19485,18 @@ $as_echo X"$file" | rm -f microblaze/Makesim1.tmp microblaze/Makesim2.tmp ;; "depdir-microblaze":C) $SHELL $ac_aux_dir/mkinstalldirs microblaze/$DEPDIR ;; + "mips/Makefile":C) sed -n \ + -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ { + /^srcdir = / s:$:/mips: + p + }' \ + <Make-common.sim >mips/Makesim1.tmp + sed -n -e '/^## COMMON_POST_/,/^## End COMMON_POST_/ p' <Make-common.sim >mips/Makesim2.tmp + sed -e '/^## COMMON_PRE_/ r mips/Makesim1.tmp' \ + -e '/^## COMMON_POST_/ r mips/Makesim2.tmp' \ + <mips/Makefile.sim >mips/Makefile + rm -f mips/Makesim1.tmp mips/Makesim2.tmp + ;; "depdir-mips":C) $SHELL $ac_aux_dir/mkinstalldirs mips/$DEPDIR ;; "mn10300/Makefile":C) sed -n \ -e '/^## COMMON_PRE_/,/^## End COMMON_PRE_/ { |