aboutsummaryrefslogtreecommitdiff
path: root/sim/configure
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2022-12-24 21:28:03 -0500
committerMike Frysinger <vapier@gentoo.org>2022-12-24 22:13:13 -0500
commitabc494c65d640626891408d551a0fe1842e728e3 (patch)
treea4edab1fc38f7e7fed76c090a18d3e4696039737 /sim/configure
parentfec5386aef5869fbc982e5e287ffd9e4f030d8d2 (diff)
downloadgdb-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-xsim/configure268
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_/ {