Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> --- target/mips/Makefile.objs | 8 ++++++++ target/mips/insns.decode | 2 ++ target/mips/translate.c | 7 +++++++ target/mips/translate.inc.c | 13 +++++++++++++ 4 files changed, 30 insertions(+) create mode 100644 target/mips/insns.decode create mode 100644 target/mips/translate.inc.c
diff --git a/target/mips/Makefile.objs b/target/mips/Makefile.objs index 651f36f517..3510835d57 100644 --- a/target/mips/Makefile.objs +++ b/target/mips/Makefile.objs @@ -2,3 +2,11 @@ obj-y += translate.o dsp_helper.o op_helper.o lmi_helper.o helper.o cpu.o obj-y += gdbstub.o msa_helper.o mips-semi.o obj-$(CONFIG_SOFTMMU) += machine.o cp0_timer.o obj-$(CONFIG_KVM) += kvm.o + +DECODETREE = $(SRC_PATH)/scripts/decodetree.py + +target/mips/decode.inc.c: $(SRC_PATH)/target/mips/insns.decode $(DECODETREE) + $(call quiet-command,\ + $(PYTHON) $(DECODETREE) -o $@ $<, "GEN", $(TARGET_DIR)$@) + +target/mips/translate.o: target/mips/decode.inc.c diff --git a/target/mips/insns.decode b/target/mips/insns.decode new file mode 100644 index 0000000000..7fbf21cbb9 --- /dev/null +++ b/target/mips/insns.decode @@ -0,0 +1,2 @@ +# MIPS32/MIPS64 Instruction Set +# diff --git a/target/mips/translate.c b/target/mips/translate.c index e726f3ec00..560325c563 100644 --- a/target/mips/translate.c +++ b/target/mips/translate.c @@ -27848,6 +27848,8 @@ static void gen_msa(CPUMIPSState *env, DisasContext *ctx) } +#include "translate.inc.c" + static void decode_opc(CPUMIPSState *env, DisasContext *ctx) { int32_t offset; @@ -27872,6 +27874,11 @@ static void decode_opc(CPUMIPSState *env, DisasContext *ctx) gen_set_label(l1); } + /* Transition to the auto-generated decoder. */ + if (decode(ctx, ctx->opcode)) { + return; + } + op = MASK_OP_MAJOR(ctx->opcode); rs = (ctx->opcode >> 21) & 0x1f; rt = (ctx->opcode >> 16) & 0x1f; diff --git a/target/mips/translate.inc.c b/target/mips/translate.inc.c new file mode 100644 index 0000000000..69fe78ac89 --- /dev/null +++ b/target/mips/translate.inc.c @@ -0,0 +1,13 @@ +/* + * MIPS emulation for QEMU - MIPS32 translation routines + * + * Copyright (c) 2004-2005 Jocelyn Mayer + * Copyright (c) 2006 Marius Groeger (FPU operations) + * Copyright (c) 2006 Thiemo Seufer (MIPS32R2 support) + * Copyright (c) 2018 Philippe Mathieu-Daudé + * + * This code is licensed under the GNU GPLv2 and later. + */ + +/* Include the auto-generated decoder. */ +#include "decode.inc.c" -- 2.17.2