Commit 86e840ee authored by aurel32's avatar aurel32

Remove a few dyngen and dyngen related code

Signed-off-by: default avatarAurelien Jarno <aurelien@aurel32.net>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5914 c046a42c-6fe2-441c-8c8c-71466251a162
parent 955a7dd5
......@@ -36,7 +36,7 @@ all: $(TOOLS) $(DOCS) recurse-all
SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS))
subdir-%: dyngen$(EXESUF)
subdir-%:
$(MAKE) -C $(subst subdir-,,$@) all
$(filter %-softmmu,$(SUBDIR_RULES)): libqemu_common.a
......@@ -195,15 +195,10 @@ qemu-img$(EXESUF): qemu-img.o qemu-tool.o osdep.o $(BLOCK_OBJS)
qemu-nbd$(EXESUF): qemu-nbd.o qemu-tool.o osdep.o $(BLOCK_OBJS)
$(CC) $(LDFLAGS) -o $@ $^ -lz $(LIBS)
# dyngen host tool
dyngen$(EXESUF): dyngen.c
$(HOST_CC) $(CFLAGS) $(CPPFLAGS) -o $@ $^
clean:
# avoid old build problems by removing potentially incorrect old files
rm -f config.mak config.h op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
rm -f *.o *.d *.a $(TOOLS) dyngen$(EXESUF) TAGS cscope.* *.pod *~ */*~
rm -rf dyngen.dSYM
rm -f *.o *.d *.a $(TOOLS) TAGS cscope.* *.pod *~ */*~
rm -f slirp/*.o slirp/*.d audio/*.o audio/*.d
$(MAKE) -C tests clean
for d in $(TARGET_DIRS); do \
......
......@@ -27,7 +27,6 @@ VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw
CPPFLAGS=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -MMD -MT $@ -MP -DNEED_CPU_H
#CFLAGS+=-Werror
LIBS=
DYNGEN=../dyngen$(EXESUF)
# user emulator name
ifndef TARGET_ARCH2
TARGET_ARCH2=$(TARGET_ARCH)
......@@ -186,10 +185,6 @@ all: $(PROGS)
# cpu emulator library
LIBOBJS=exec.o kqemu.o translate-all.o cpu-exec.o\
translate.o host-utils.o
ifdef CONFIG_DYNGEN_OP
exec.o: dyngen-opc.h
LIBOBJS+=op.o
endif
# TCG code generator
LIBOBJS+= tcg/tcg.o tcg/tcg-dyngen.o tcg/tcg-runtime.o
CPPFLAGS+=-I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/$(ARCH)
......@@ -261,35 +256,15 @@ endif
# libqemu
ifdef CONFIG_DYNGEN_OP
OPC_H = gen-op.h dyngen-opc.h op.h
endif
libqemu.a: $(LIBOBJS)
rm -f $@
$(AR) rcs $@ $(LIBOBJS)
translate.o: translate.c cpu.h $(OPC_H)
translate-all.o: translate-all.c cpu.h $(OPC_H)
tcg/tcg.o: cpu.h $(OPC_H)
tcg/tcg-dyngen.o: $(OPC_H)
tcg/tcg-runtime.o: $(OPC_H)
op.h: op.o $(DYNGEN)
$(DYNGEN) -o $@ $<
dyngen-opc.h: op.o $(DYNGEN)
$(DYNGEN) -c -o $@ $<
translate.o: translate.c cpu.h
gen-op.h: op.o $(DYNGEN)
$(DYNGEN) -g -o $@ $<
translate-all.o: translate-all.c cpu.h
op.o: op.c
$(CC) $(OP_CFLAGS) $(CPPFLAGS) $(I386_CFLAGS) -c -o $@ $<
tcg/tcg.o: cpu.h
machine.o: machine.c
$(CC) $(OP_CFLAGS) $(CPPFLAGS) -c -o $@ $<
......@@ -299,7 +274,7 @@ machine.o: machine.c
op_helper.o: op_helper.c
$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) $(I386_CFLAGS) -c -o $@ $<
cpu-exec.o: cpu-exec.c $(OPC_H)
cpu-exec.o: cpu-exec.c
$(CC) $(HELPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
#########################################################
......@@ -807,7 +782,7 @@ endif
$(CC) $(CPPFLAGS) -c -o $@ $<
clean:
rm -f *.o *.a *~ $(PROGS) gen-op.h dyngen-opc.h op.h nwfpe/*.o fpu/*.o
rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
rm -f *.d */*.d tcg/*.o
install: all
......
This diff is collapsed.
......@@ -60,9 +60,8 @@ add_i32 t0, t1, t2 (t0 <- t1 + t2)
- Basic blocks end after branches (e.g. brcond_i32 instruction),
goto_tb and exit_tb instructions.
- Basic blocks end before legacy dyngen operations.
- Basic blocks start after the end of a previous basic block, at a
set_label instruction or after a legacy dyngen operation.
- Basic blocks start after the end of a previous basic block, or at a
set_label instruction.
After the end of a basic block, the content of temporaries is
destroyed, but local temporaries and globals are preserved.
......@@ -423,18 +422,7 @@ register.
target, functions must be able to return 2 values in registers for
64 bit return type.
5) Migration from dyngen to TCG
TCG is backward compatible with QEMU "dyngen" operations. It means
that TCG instructions can be freely mixed with dyngen operations. It
is expected that QEMU targets will be progressively fully converted to
TCG. Once a target is fully converted to TCG, it will be possible
to apply more optimizations because more registers will be free for
the generated code.
The exception model is the same as the dyngen one.
6) Recommended coding rules for best performance
5) Recommended coding rules for best performance
- Use globals to represent the parts of the QEMU CPU state which are
often modified, e.g. the integer registers and the condition
......@@ -442,8 +430,7 @@ The exception model is the same as the dyngen one.
- Avoid globals stored in fixed registers. They must be used only to
store the pointer to the CPU state and possibly to store a pointer
to a register window. The other uses are to ensure backward
compatibility with dyngen during the porting a new target to TCG.
to a register window.
- Use temporaries. Use local temporaries only when really needed,
e.g. when you need to use a value after a jump. Local temporaries
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment