625e3dd44a
Add the infrastructure for building and invoking a decodetree decoder
for the AArch32 Neon encodings. At the moment the new decoder covers
nothing, so we always fall back to the existing hand-written decode.
We follow the same pattern we did for the VFP decodetree conversion
(commit 78e138bc1f
and following): code that deals
with Neon will be moving gradually out to translate-neon.vfp.inc,
which we #include into translate.c.
In order to share the decode files between A32 and T32, we
split Neon into 3 parts:
* data-processing
* load-store
* 'shared' encodings
The first two groups of instructions have similar but not identical
A32 and T32 encodings, so we need to manually transform the T32
encoding into the A32 one before calling the decoder; the third group
covers the Neon instructions which are identical in A32 and T32.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20200430181003.21682-4-peter.maydell@linaro.org
88 lines
3.3 KiB
Makefile
88 lines
3.3 KiB
Makefile
obj-$(CONFIG_TCG) += arm-semi.o
|
|
obj-y += helper.o vfp_helper.o
|
|
obj-y += cpu.o gdbstub.o
|
|
obj-$(TARGET_AARCH64) += cpu64.o gdbstub64.o
|
|
|
|
obj-$(CONFIG_SOFTMMU) += machine.o arch_dump.o monitor.o
|
|
obj-$(CONFIG_SOFTMMU) += arm-powerctl.o
|
|
|
|
obj-$(CONFIG_KVM) += kvm.o
|
|
obj-$(call land,$(CONFIG_KVM),$(call lnot,$(TARGET_AARCH64))) += kvm32.o
|
|
obj-$(call land,$(CONFIG_KVM),$(TARGET_AARCH64)) += kvm64.o
|
|
obj-$(call lnot,$(CONFIG_KVM)) += kvm-stub.o
|
|
|
|
DECODETREE = $(SRC_PATH)/scripts/decodetree.py
|
|
|
|
target/arm/decode-sve.inc.c: $(SRC_PATH)/target/arm/sve.decode $(DECODETREE)
|
|
$(call quiet-command,\
|
|
$(PYTHON) $(DECODETREE) --decode disas_sve -o $@ $<,\
|
|
"GEN", $(TARGET_DIR)$@)
|
|
|
|
target/arm/decode-neon-shared.inc.c: $(SRC_PATH)/target/arm/neon-shared.decode $(DECODETREE)
|
|
$(call quiet-command,\
|
|
$(PYTHON) $(DECODETREE) --static-decode disas_neon_shared -o $@ $<,\
|
|
"GEN", $(TARGET_DIR)$@)
|
|
|
|
target/arm/decode-neon-dp.inc.c: $(SRC_PATH)/target/arm/neon-dp.decode $(DECODETREE)
|
|
$(call quiet-command,\
|
|
$(PYTHON) $(DECODETREE) --static-decode disas_neon_dp -o $@ $<,\
|
|
"GEN", $(TARGET_DIR)$@)
|
|
|
|
target/arm/decode-neon-ls.inc.c: $(SRC_PATH)/target/arm/neon-ls.decode $(DECODETREE)
|
|
$(call quiet-command,\
|
|
$(PYTHON) $(DECODETREE) --static-decode disas_neon_ls -o $@ $<,\
|
|
"GEN", $(TARGET_DIR)$@)
|
|
|
|
target/arm/decode-vfp.inc.c: $(SRC_PATH)/target/arm/vfp.decode $(DECODETREE)
|
|
$(call quiet-command,\
|
|
$(PYTHON) $(DECODETREE) --static-decode disas_vfp -o $@ $<,\
|
|
"GEN", $(TARGET_DIR)$@)
|
|
|
|
target/arm/decode-vfp-uncond.inc.c: $(SRC_PATH)/target/arm/vfp-uncond.decode $(DECODETREE)
|
|
$(call quiet-command,\
|
|
$(PYTHON) $(DECODETREE) --static-decode disas_vfp_uncond -o $@ $<,\
|
|
"GEN", $(TARGET_DIR)$@)
|
|
|
|
target/arm/decode-a32.inc.c: $(SRC_PATH)/target/arm/a32.decode $(DECODETREE)
|
|
$(call quiet-command,\
|
|
$(PYTHON) $(DECODETREE) --static-decode disas_a32 -o $@ $<,\
|
|
"GEN", $(TARGET_DIR)$@)
|
|
|
|
target/arm/decode-a32-uncond.inc.c: $(SRC_PATH)/target/arm/a32-uncond.decode $(DECODETREE)
|
|
$(call quiet-command,\
|
|
$(PYTHON) $(DECODETREE) --static-decode disas_a32_uncond -o $@ $<,\
|
|
"GEN", $(TARGET_DIR)$@)
|
|
|
|
target/arm/decode-t32.inc.c: $(SRC_PATH)/target/arm/t32.decode $(DECODETREE)
|
|
$(call quiet-command,\
|
|
$(PYTHON) $(DECODETREE) --static-decode disas_t32 -o $@ $<,\
|
|
"GEN", $(TARGET_DIR)$@)
|
|
|
|
target/arm/decode-t16.inc.c: $(SRC_PATH)/target/arm/t16.decode $(DECODETREE)
|
|
$(call quiet-command,\
|
|
$(PYTHON) $(DECODETREE) -w 16 --static-decode disas_t16 -o $@ $<,\
|
|
"GEN", $(TARGET_DIR)$@)
|
|
|
|
target/arm/translate-sve.o: target/arm/decode-sve.inc.c
|
|
target/arm/translate.o: target/arm/decode-neon-shared.inc.c
|
|
target/arm/translate.o: target/arm/decode-neon-dp.inc.c
|
|
target/arm/translate.o: target/arm/decode-neon-ls.inc.c
|
|
target/arm/translate.o: target/arm/decode-vfp.inc.c
|
|
target/arm/translate.o: target/arm/decode-vfp-uncond.inc.c
|
|
target/arm/translate.o: target/arm/decode-a32.inc.c
|
|
target/arm/translate.o: target/arm/decode-a32-uncond.inc.c
|
|
target/arm/translate.o: target/arm/decode-t32.inc.c
|
|
target/arm/translate.o: target/arm/decode-t16.inc.c
|
|
|
|
obj-y += tlb_helper.o debug_helper.o
|
|
obj-y += translate.o op_helper.o
|
|
obj-y += crypto_helper.o
|
|
obj-y += iwmmxt_helper.o vec_helper.o neon_helper.o
|
|
obj-y += m_helper.o
|
|
|
|
obj-$(CONFIG_SOFTMMU) += psci.o
|
|
|
|
obj-$(TARGET_AARCH64) += translate-a64.o helper-a64.o
|
|
obj-$(TARGET_AARCH64) += translate-sve.o sve_helper.o
|
|
obj-$(TARGET_AARCH64) += pauth_helper.o
|