sim: ppc: hoist igen execution to top-level

Invoke ppc's igen from the top-level like we do for all other ports.
This commit is contained in:
Mike Frysinger 2024-01-02 02:00:09 -05:00
parent 5f7e03a6bb
commit 431d8a2ca4
4 changed files with 153 additions and 88 deletions

View File

@ -280,32 +280,41 @@ TESTS = testsuite/common/bits32m0$(EXEEXT) \
@SIM_ENABLE_ARCH_or1k_TRUE@am__append_87 = or1k/eng.h
@SIM_ENABLE_ARCH_or1k_TRUE@am__append_88 = $(or1k_BUILD_OUTPUTS)
@SIM_ENABLE_ARCH_ppc_TRUE@am__append_89 = common/libcommon.a \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/defines.h $(PPC_IGEN)
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/defines.h ppc/stamp-igen
@SIM_ENABLE_ARCH_ppc_TRUE@am__append_90 = ppc/run
@SIM_ENABLE_ARCH_ppc_TRUE@am__append_91 = ppc/defines.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/stamp-defines $(ppc_IGEN_TOOLS) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/libigen.a
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/stamp-defines \
@SIM_ENABLE_ARCH_ppc_TRUE@ $(ppc_BUILD_OUTPUTS) \
@SIM_ENABLE_ARCH_ppc_TRUE@ $(ppc_IGEN_TOOLS) ppc/libigen.a
@SIM_ENABLE_ARCH_ppc_TRUE@am__append_92 = ppc/libigen.a
@SIM_ENABLE_ARCH_ppc_TRUE@am__append_93 = $(ppc_IGEN_TOOLS)
@SIM_ENABLE_ARCH_pru_TRUE@am__append_94 = pru/libsim.a
@SIM_ENABLE_ARCH_pru_TRUE@am__append_95 = pru/run
@SIM_ENABLE_ARCH_riscv_TRUE@am__append_96 = riscv/libsim.a
@SIM_ENABLE_ARCH_riscv_TRUE@am__append_97 = riscv/run
@SIM_ENABLE_ARCH_rl78_TRUE@am__append_98 = rl78/libsim.a
@SIM_ENABLE_ARCH_rl78_TRUE@am__append_99 = rl78/run
@SIM_ENABLE_ARCH_rx_TRUE@am__append_100 = rx/libsim.a
@SIM_ENABLE_ARCH_rx_TRUE@am__append_101 = rx/run
@SIM_ENABLE_ARCH_sh_TRUE@am__append_102 = sh/libsim.a
@SIM_ENABLE_ARCH_sh_TRUE@am__append_103 = sh/run
@SIM_ENABLE_ARCH_sh_TRUE@am__append_104 = \
@SIM_ENABLE_ARCH_ppc_TRUE@am__append_93 = \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/icache.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/idecode.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/semantics.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/model.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/support.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/itable.h
@SIM_ENABLE_ARCH_ppc_TRUE@am__append_94 = $(ppc_IGEN_TOOLS)
@SIM_ENABLE_ARCH_pru_TRUE@am__append_95 = pru/libsim.a
@SIM_ENABLE_ARCH_pru_TRUE@am__append_96 = pru/run
@SIM_ENABLE_ARCH_riscv_TRUE@am__append_97 = riscv/libsim.a
@SIM_ENABLE_ARCH_riscv_TRUE@am__append_98 = riscv/run
@SIM_ENABLE_ARCH_rl78_TRUE@am__append_99 = rl78/libsim.a
@SIM_ENABLE_ARCH_rl78_TRUE@am__append_100 = rl78/run
@SIM_ENABLE_ARCH_rx_TRUE@am__append_101 = rx/libsim.a
@SIM_ENABLE_ARCH_rx_TRUE@am__append_102 = rx/run
@SIM_ENABLE_ARCH_sh_TRUE@am__append_103 = sh/libsim.a
@SIM_ENABLE_ARCH_sh_TRUE@am__append_104 = sh/run
@SIM_ENABLE_ARCH_sh_TRUE@am__append_105 = \
@SIM_ENABLE_ARCH_sh_TRUE@ sh/code.c \
@SIM_ENABLE_ARCH_sh_TRUE@ sh/ppi.c
@SIM_ENABLE_ARCH_sh_TRUE@am__append_105 = sh/gencode
@SIM_ENABLE_ARCH_sh_TRUE@am__append_106 = $(sh_BUILD_OUTPUTS)
@SIM_ENABLE_ARCH_v850_TRUE@am__append_107 = v850/libsim.a
@SIM_ENABLE_ARCH_v850_TRUE@am__append_108 = v850/run
@SIM_ENABLE_ARCH_v850_TRUE@am__append_109 = \
@SIM_ENABLE_ARCH_sh_TRUE@am__append_106 = sh/gencode
@SIM_ENABLE_ARCH_sh_TRUE@am__append_107 = $(sh_BUILD_OUTPUTS)
@SIM_ENABLE_ARCH_v850_TRUE@am__append_108 = v850/libsim.a
@SIM_ENABLE_ARCH_v850_TRUE@am__append_109 = v850/run
@SIM_ENABLE_ARCH_v850_TRUE@am__append_110 = \
@SIM_ENABLE_ARCH_v850_TRUE@ v850/icache.h \
@SIM_ENABLE_ARCH_v850_TRUE@ v850/idecode.h \
@SIM_ENABLE_ARCH_v850_TRUE@ v850/semantics.h \
@ -314,7 +323,7 @@ TESTS = testsuite/common/bits32m0$(EXEEXT) \
@SIM_ENABLE_ARCH_v850_TRUE@ v850/itable.h \
@SIM_ENABLE_ARCH_v850_TRUE@ v850/engine.h
@SIM_ENABLE_ARCH_v850_TRUE@am__append_110 = $(v850_BUILD_OUTPUTS)
@SIM_ENABLE_ARCH_v850_TRUE@am__append_111 = $(v850_BUILD_OUTPUTS)
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
@ -1850,13 +1859,14 @@ noinst_LIBRARIES = common/libcommon.a $(am__append_3) $(am__append_5) \
$(am__append_46) $(am__append_50) $(am__append_54) \
$(am__append_58) $(am__append_62) $(am__append_64) \
$(am__append_69) $(am__append_77) $(am__append_81) \
$(am__append_83) $(am__append_85) $(am__append_94) \
$(am__append_96) $(am__append_98) $(am__append_100) \
$(am__append_102) $(am__append_107)
$(am__append_83) $(am__append_85) $(am__append_95) \
$(am__append_97) $(am__append_99) $(am__append_101) \
$(am__append_103) $(am__append_108)
BUILT_SOURCES = $(am__append_15) $(am__append_21) $(am__append_25) \
$(am__append_36) $(am__append_44) $(am__append_48) \
$(am__append_56) $(am__append_71) $(am__append_79) \
$(am__append_87) $(am__append_104) $(am__append_109)
$(am__append_87) $(am__append_93) $(am__append_105) \
$(am__append_110)
CLEANFILES = common/version.c common/version.c-stamp \
testsuite/common/bits-gen testsuite/common/bits32m0.c \
testsuite/common/bits32m31.c testsuite/common/bits64m0.c \
@ -1872,7 +1882,7 @@ MOSTLYCLEANFILES = core $(SIM_ENABLED_ARCHES:%=%/*.o) \
$(am__append_37) $(am__append_45) $(am__append_49) \
$(am__append_53) $(am__append_57) $(am__append_61) \
$(am__append_75) $(am__append_80) $(am__append_88) \
$(am__append_91) $(am__append_106) $(am__append_110)
$(am__append_91) $(am__append_107) $(am__append_111)
CONFIG_STATUS_DEPENDENCIES = $(srcroot)/bfd/development.sh
AM_CFLAGS = \
$(WERROR_CFLAGS) \
@ -2950,7 +2960,39 @@ testsuite_common_CPPFLAGS = \
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_igen_SOURCES = ppc/igen.c
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_igen_LDADD = ppc/libigen.a
# igen leaks memory, and therefore makes AddressSanitizer unhappy. Disable
# leak detection while running it.
@SIM_ENABLE_ARCH_ppc_TRUE@PPC_IGEN = ppc/igen$(EXEEXT)
@SIM_ENABLE_ARCH_ppc_TRUE@PPC_IGEN_RUN = ASAN_OPTIONS=detect_leaks=0 $(PPC_IGEN) $(ppc_IGEN_FLAGS)
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_IGEN_FLAGS = \
@SIM_ENABLE_ARCH_ppc_TRUE@ @sim_ppc_decode_mechanism@ \
@SIM_ENABLE_ARCH_ppc_TRUE@ @sim_ppc_dup@ \
@SIM_ENABLE_ARCH_ppc_TRUE@ @sim_ppc_jump@ \
@SIM_ENABLE_ARCH_ppc_TRUE@ @sim_ppc_filter@ \
@SIM_ENABLE_ARCH_ppc_TRUE@ @sim_ppc_icache@ \
@SIM_ENABLE_ARCH_ppc_TRUE@ @sim_ppc_igen_smp@ \
@SIM_ENABLE_ARCH_ppc_TRUE@ @sim_ppc_line_nr@
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_BUILT_SRC_FROM_IGEN = \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/icache.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/icache.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/idecode.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/idecode.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/semantics.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/semantics.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/model.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/model.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/support.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/support.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/itable.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/itable.c
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_BUILD_OUTPUTS = \
@SIM_ENABLE_ARCH_ppc_TRUE@ $(ppc_BUILT_SRC_FROM_IGEN) \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/stamp-igen
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_IGEN_OPCODE_RULES = ppc/@sim_ppc_opcode@
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_filter_SOURCES =
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_filter_LDADD = ppc/filter-main.o ppc/libigen.a
@SIM_ENABLE_ARCH_ppc_TRUE@ppc_ld_cache_SOURCES =
@ -2966,6 +3008,7 @@ testsuite_common_CPPFLAGS = \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-decode \
@SIM_ENABLE_ARCH_ppc_TRUE@ ppc/ld-insn
@SIM_ENABLE_ARCH_ppc_TRUE@IGEN_OPCODE_RULES = @sim_ppc_opcode@
@SIM_ENABLE_ARCH_ppc_TRUE@ppcdocdir = $(docdir)/ppc
@SIM_ENABLE_ARCH_ppc_TRUE@ppcdoc_DATA = ppc/BUGS ppc/INSTALL ppc/README ppc/RUN
@SIM_ENABLE_ARCH_pru_TRUE@nodist_pru_libsim_a_SOURCES = \
@ -5782,6 +5825,24 @@ testsuite/common/bits64m63.c: testsuite/common/bits-gen$(EXEEXT) testsuite/commo
@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_GEN)$(srcdir)/ppc/spreg-gen.py --header $@.tmp
@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_at)$(SHELL) $(srcroot)/move-if-change $@.tmp $(srcdir)/ppc/spreg.h
@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_at)touch $(srcdir)/ppc/spreg.h
@SIM_ENABLE_ARCH_ppc_TRUE@$(ppc_BUILT_SRC_FROM_IGEN): ppc/stamp-igen
@SIM_ENABLE_ARCH_ppc_TRUE@ppc/stamp-igen: ppc/powerpc.igen ppc/altivec.igen ppc/e500.igen $(ppc_IGEN_OPCODE_RULES) $(PPC_IGEN)
@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_GEN)$(PPC_IGEN_RUN) \
@SIM_ENABLE_ARCH_ppc_TRUE@ -o $(srcdir)/$(ppc_IGEN_OPCODE_RULES) \
@SIM_ENABLE_ARCH_ppc_TRUE@ -I $(srcdir)/ppc -i $(srcdir)/ppc/powerpc.igen \
@SIM_ENABLE_ARCH_ppc_TRUE@ -n icache.h -hc ppc/icache.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ -n icache.c -c ppc/icache.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ -n semantics.h -hs ppc/semantics.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ -n semantics.c -s ppc/semantics.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ -n idecode.h -hd ppc/idecode.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ -n idecode.c -d ppc/idecode.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ -n itable.h -ht ppc/itable.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ -n itable.c -t ppc/itable.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ -n model.h -hm ppc/model.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ -n model.c -m ppc/model.c \
@SIM_ENABLE_ARCH_ppc_TRUE@ -n support.h -hf ppc/support.h \
@SIM_ENABLE_ARCH_ppc_TRUE@ -n support.c -f ppc/support.c
@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_at)touch $@
@SIM_ENABLE_ARCH_ppc_TRUE@ppc/libigen.a: $(ppc_libigen_a_OBJECTS) $(ppc_libigen_a_DEPENDENCIES) $(EXTRA_ppc_libigen_a_DEPENDENCIES) ppc/$(am__dirstamp)
@SIM_ENABLE_ARCH_ppc_TRUE@ $(AM_V_at)-rm -f $@

View File

@ -64,3 +64,5 @@ MAINT = ; @true
SIM_INLINE = @SIM_INLINE@
SIM_HW_CFLAGS = @SIM_HW_CFLAGS@
PPC_IGEN_FLAGS = $(ppc_IGEN_FLAGS)

View File

@ -86,29 +86,6 @@ NOWARN_CFLAGS = $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(INCLUDES) $(SIM_FP
LIBS = $(COMMON_LIBS) @LIBS@ $(LIBGNU) $(LIBGNU_EXTRA_LIBS)
IGEN_OPCODE_RULES = @sim_ppc_opcode@
IGEN_DECODE_MECHANISM = @sim_ppc_decode_mechanism@
IGEN_DUPLICATE = @sim_ppc_dup@
IGEN_JUMP = @sim_ppc_jump@
IGEN_FILTER = @sim_ppc_filter@
IGEN_ICACHE = @sim_ppc_icache@
IGEN_SMP = @sim_ppc_igen_smp@
IGEN_LINE_NR = @sim_ppc_line_nr@
IGEN_FLAGS = \
$(IGEN_DECODE_MECHANISM) \
$(IGEN_DUPLICATE) \
$(IGEN_JUMP) \
$(IGEN_FILTER) \
$(IGEN_ICACHE) \
$(IGEN_SMP) \
$(IGEN_LINE_NR)
# igen leaks memory, and therefore makes AddressSanitizer unhappy. Disable
# leak detection while running it.
IGEN = ASAN_OPTIONS=detect_leaks=0 ./igen
.NOEXPORT:
MAKEOVERRIDES=
@ -268,9 +245,6 @@ IDECODE_EXPRESSION_H = \
IDECODE_FIELDS_H = \
idecode_fields.h
IGEN_H = \
igen.h
INLINE_H = \
inline.h
@ -388,13 +362,6 @@ INLINE = \
inline.c
BUILT_SRC_WO_CONFIG = \
icache.h icache.c \
support.h support.c \
idecode.h idecode.c \
semantics.h semantics.c \
itable.h itable.c \
model.h model.c \
support.h support.c \
pk.h \
hw.h hw.c
@ -489,7 +456,7 @@ PACKAGE_SRC = pk_disklabel.c
PACKAGE_OBJ = $(PACKAGE_SRC:.c=.o)
$(TARGETLIB): tmp-igen tmp-hw defines.h $(LIB_OBJ) $(GDB_OBJ)
$(TARGETLIB): tmp-hw defines.h $(LIB_OBJ) $(GDB_OBJ)
$(ECHO_AR) $(AR) $(AR_FLAGS) $(TARGETLIB) $(LIB_OBJ) $(GDB_OBJ)
$(ECHO_RANLIB) $(RANLIB) $(TARGETLIB)
@ -560,33 +527,7 @@ sim-fpu.o: $(srcdir)/../common/sim-fpu.c
# Rebuild options whenever something changes so the date/time is up to date.
options.o: options.c $(CPU_H) $(OPTIONS_H) $(DEFINES_H) $(BASICS_H) $(IDECODE_H) $(INLINE) $(LIB_SRC) $(BUILT_SRC) ../config.status Makefile
$(ECHO_CC) $(CC) -c $(STD_CFLAGS) '-DOPCODE_RULES="@sim_ppc_opcode@"' '-DIGEN_FLAGS="$(IGEN_FLAGS)"' $(srcdir)/options.c
#
# Rules to create the built c source code files
#
tmp-igen: igen $(srcdir)/powerpc.igen $(srcdir)/altivec.igen $(srcdir)/e500.igen $(IGEN_OPCODE_RULES) $(srcroot)/move-if-change
$(ECHO_GEN) $(IGEN) $(IGEN_FLAGS) \
-o $(srcdir)/$(IGEN_OPCODE_RULES) \
-I $(srcdir) -i $(srcdir)/powerpc.igen \
-n icache.h -hc icache.h \
-n icache.c -c icache.c \
-n semantics.h -hs semantics.h \
-n semantics.c -s semantics.c \
-n idecode.h -hd idecode.h \
-n idecode.c -d idecode.c \
-n itable.h -ht itable.h \
-n itable.c -t itable.c \
-n model.h -hm model.h \
-n model.c -m model.c \
-n support.h -hf support.h \
-n support.c -f support.c
$(SILENCE) touch $@
$(TARGETLIB): tmp-igen
itable.h itable.c icache.h icache.c idecode.h idecode.c semantics.h semantics.c model.h model.c support.h support.c: tmp-igen
$(ECHO_CC) $(CC) -c $(STD_CFLAGS) '-DOPCODE_RULES="@sim_ppc_opcode@"' '-DIGEN_FLAGS="$(ppc_IGEN_FLAGS)"' $(srcdir)/options.c
# real hardware
hw.c hw.h: tmp-hw; @true

View File

@ -74,9 +74,68 @@ EXTRA_LIBRARIES += %D%/libigen.a
%C%_igen_SOURCES = %D%/igen.c
%C%_igen_LDADD = %D%/libigen.a
# igen leaks memory, and therefore makes AddressSanitizer unhappy. Disable
# leak detection while running it.
PPC_IGEN = %D%/igen$(EXEEXT)
PPC_IGEN_RUN = ASAN_OPTIONS=detect_leaks=0 $(PPC_IGEN) $(%C%_IGEN_FLAGS)
SIM_ALL_RECURSIVE_DEPS += $(PPC_IGEN)
%C%_IGEN_FLAGS = \
@sim_ppc_decode_mechanism@ \
@sim_ppc_dup@ \
@sim_ppc_jump@ \
@sim_ppc_filter@ \
@sim_ppc_icache@ \
@sim_ppc_igen_smp@ \
@sim_ppc_line_nr@
## List all generated headers to help Automake dependency tracking.
BUILT_SOURCES += \
%D%/icache.h \
%D%/idecode.h \
%D%/semantics.h \
%D%/model.h \
%D%/support.h \
%D%/itable.h
%C%_BUILT_SRC_FROM_IGEN = \
%D%/icache.h \
%D%/icache.c \
%D%/idecode.h \
%D%/idecode.c \
%D%/semantics.h \
%D%/semantics.c \
%D%/model.h \
%D%/model.c \
%D%/support.h \
%D%/support.c \
%D%/itable.h \
%D%/itable.c
%C%_BUILD_OUTPUTS = \
$(%C%_BUILT_SRC_FROM_IGEN) \
%D%/stamp-igen
SIM_ALL_RECURSIVE_DEPS += %D%/stamp-igen
$(%C%_BUILT_SRC_FROM_IGEN): %D%/stamp-igen
%C%_IGEN_OPCODE_RULES = %D%/@sim_ppc_opcode@
%D%/stamp-igen: %D%/powerpc.igen %D%/altivec.igen %D%/e500.igen $(%C%_IGEN_OPCODE_RULES) $(PPC_IGEN)
$(AM_V_GEN)$(PPC_IGEN_RUN) \
-o $(srcdir)/$(%C%_IGEN_OPCODE_RULES) \
-I $(srcdir)/%D% -i $(srcdir)/%D%/powerpc.igen \
-n icache.h -hc %D%/icache.h \
-n icache.c -c %D%/icache.c \
-n semantics.h -hs %D%/semantics.h \
-n semantics.c -s %D%/semantics.c \
-n idecode.h -hd %D%/idecode.h \
-n idecode.c -d %D%/idecode.c \
-n itable.h -ht %D%/itable.h \
-n itable.c -t %D%/itable.c \
-n model.h -hm %D%/model.h \
-n model.c -m %D%/model.c \
-n support.h -hf %D%/support.h \
-n support.c -f %D%/support.c
$(AM_V_at)touch $@
MOSTLYCLEANFILES += $(%C%_BUILD_OUTPUTS)
## These rules are copied from automake, but tweaked to use FOR_BUILD variables.
%D%/libigen.a: $(%C%_libigen_a_OBJECTS) $(%C%_libigen_a_DEPENDENCIES) $(EXTRA_%C%_libigen_a_DEPENDENCIES) %D%/$(am__dirstamp)
@ -116,5 +175,7 @@ $(%C%_libigen_a_OBJECTS) $(%C%_igen_OBJECTS): %D%/%.o: %D%/%.c
EXTRA_PROGRAMS += $(%C%_IGEN_TOOLS)
MOSTLYCLEANFILES += $(%C%_IGEN_TOOLS) %D%/libigen.a
IGEN_OPCODE_RULES = @sim_ppc_opcode@
%C%docdir = $(docdir)/%C%
%C%doc_DATA = %D%/BUGS %D%/INSTALL %D%/README %D%/RUN