Commit 0b0babc623d1e6e0fe19a3b05a1f418edb65b371
1 parent
20f32282
x86_64 target support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1191 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
36 additions
and
16 deletions
Makefile.target
1 | include config.mak | 1 | include config.mak |
2 | 2 | ||
3 | -TARGET_PATH=$(SRC_PATH)/target-$(TARGET_ARCH) | 3 | +TARGET_BASE_ARCH:=$(TARGET_ARCH) |
4 | +ifeq ($(TARGET_ARCH), x86_64) | ||
5 | +TARGET_BASE_ARCH:=i386 | ||
6 | +endif | ||
7 | +TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH) | ||
4 | VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw:$(SRC_PATH)/audio | 8 | VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw:$(SRC_PATH)/audio |
5 | DEFINES=-I. -I$(TARGET_PATH) -I$(SRC_PATH) | 9 | DEFINES=-I. -I$(TARGET_PATH) -I$(SRC_PATH) |
6 | ifdef CONFIG_USER_ONLY | 10 | ifdef CONFIG_USER_ONLY |
@@ -8,6 +12,7 @@ VPATH+=:$(SRC_PATH)/linux-user | @@ -8,6 +12,7 @@ VPATH+=:$(SRC_PATH)/linux-user | ||
8 | DEFINES+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ARCH) | 12 | DEFINES+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ARCH) |
9 | endif | 13 | endif |
10 | CFLAGS=-Wall -O2 -g -fno-strict-aliasing | 14 | CFLAGS=-Wall -O2 -g -fno-strict-aliasing |
15 | +#CFLAGS+=-Werror | ||
11 | LDFLAGS=-g | 16 | LDFLAGS=-g |
12 | LIBS= | 17 | LIBS= |
13 | HELPER_CFLAGS=$(CFLAGS) | 18 | HELPER_CFLAGS=$(CFLAGS) |
@@ -52,6 +57,12 @@ endif # ARCH != i386 | @@ -52,6 +57,12 @@ endif # ARCH != i386 | ||
52 | 57 | ||
53 | endif # TARGET_ARCH = i386 | 58 | endif # TARGET_ARCH = i386 |
54 | 59 | ||
60 | +ifeq ($(TARGET_ARCH), x86_64) | ||
61 | +ifdef CONFIG_SOFTMMU | ||
62 | +PROGS+=$(QEMU_SYSTEM) | ||
63 | +endif | ||
64 | +endif # TARGET_ARCH = x86_64 | ||
65 | + | ||
55 | ifeq ($(TARGET_ARCH), ppc) | 66 | ifeq ($(TARGET_ARCH), ppc) |
56 | 67 | ||
57 | ifeq ($(ARCH), ppc) | 68 | ifeq ($(ARCH), ppc) |
@@ -64,11 +75,11 @@ PROGS+=$(QEMU_SYSTEM) | @@ -64,11 +75,11 @@ PROGS+=$(QEMU_SYSTEM) | ||
64 | endif | 75 | endif |
65 | endif # ARCH = i386 | 76 | endif # ARCH = i386 |
66 | 77 | ||
67 | -ifeq ($(ARCH), amd64) | 78 | +ifeq ($(ARCH), x86_64) |
68 | ifdef CONFIG_SOFTMMU | 79 | ifdef CONFIG_SOFTMMU |
69 | PROGS+=$(QEMU_SYSTEM) | 80 | PROGS+=$(QEMU_SYSTEM) |
70 | endif | 81 | endif |
71 | -endif # ARCH = amd64 | 82 | +endif # ARCH = x86_64 |
72 | 83 | ||
73 | endif # TARGET_ARCH = ppc | 84 | endif # TARGET_ARCH = ppc |
74 | 85 | ||
@@ -84,11 +95,11 @@ PROGS+=$(QEMU_SYSTEM) | @@ -84,11 +95,11 @@ PROGS+=$(QEMU_SYSTEM) | ||
84 | endif | 95 | endif |
85 | endif # ARCH = i386 | 96 | endif # ARCH = i386 |
86 | 97 | ||
87 | -ifeq ($(ARCH), amd64) | 98 | +ifeq ($(ARCH), x86_64) |
88 | ifdef CONFIG_SOFTMMU | 99 | ifdef CONFIG_SOFTMMU |
89 | PROGS+=$(QEMU_SYSTEM) | 100 | PROGS+=$(QEMU_SYSTEM) |
90 | endif | 101 | endif |
91 | -endif # ARCH = amd64 | 102 | +endif # ARCH = x86_64 |
92 | 103 | ||
93 | endif # TARGET_ARCH = sparc | 104 | endif # TARGET_ARCH = sparc |
94 | endif # !CONFIG_USER_ONLY | 105 | endif # !CONFIG_USER_ONLY |
@@ -122,9 +133,9 @@ LDFLAGS+=-Wl,-shared | @@ -122,9 +133,9 @@ LDFLAGS+=-Wl,-shared | ||
122 | endif | 133 | endif |
123 | endif | 134 | endif |
124 | 135 | ||
125 | -ifeq ($(ARCH),amd64) | 136 | +ifeq ($(ARCH),x86_64) |
126 | OP_CFLAGS=$(CFLAGS) -falign-functions=0 | 137 | OP_CFLAGS=$(CFLAGS) -falign-functions=0 |
127 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/amd64.ld | 138 | +LDFLAGS+=-Wl,-T,$(SRC_PATH)/x86_64.ld |
128 | endif | 139 | endif |
129 | 140 | ||
130 | ifeq ($(ARCH),ppc) | 141 | ifeq ($(ARCH),ppc) |
@@ -226,6 +237,10 @@ LIBOBJS+=translate-copy.o | @@ -226,6 +237,10 @@ LIBOBJS+=translate-copy.o | ||
226 | endif | 237 | endif |
227 | endif | 238 | endif |
228 | 239 | ||
240 | +ifeq ($(TARGET_ARCH), x86_64) | ||
241 | +LIBOBJS+=helper.o helper2.o | ||
242 | +endif | ||
243 | + | ||
229 | ifeq ($(TARGET_ARCH), ppc) | 244 | ifeq ($(TARGET_ARCH), ppc) |
230 | LIBOBJS+= op_helper.o helper.o | 245 | LIBOBJS+= op_helper.o helper.o |
231 | endif | 246 | endif |
@@ -239,7 +254,7 @@ LIBOBJS+=disas.o | @@ -239,7 +254,7 @@ LIBOBJS+=disas.o | ||
239 | ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386) | 254 | ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386) |
240 | USE_I386_DIS=y | 255 | USE_I386_DIS=y |
241 | endif | 256 | endif |
242 | -ifeq ($(findstring amd64, $(TARGET_ARCH) $(ARCH)),amd64) | 257 | +ifeq ($(findstring x86_64, $(TARGET_ARCH) $(ARCH)),x86_64) |
243 | USE_I386_DIS=y | 258 | USE_I386_DIS=y |
244 | endif | 259 | endif |
245 | ifdef USE_I386_DIS | 260 | ifdef USE_I386_DIS |
@@ -297,11 +312,11 @@ audio.o fmodaudio.o: DEFINES := -I$(CONFIG_FMOD_INC) $(DEFINES) | @@ -297,11 +312,11 @@ audio.o fmodaudio.o: DEFINES := -I$(CONFIG_FMOD_INC) $(DEFINES) | ||
297 | LIBS += $(CONFIG_FMOD_LIB) | 312 | LIBS += $(CONFIG_FMOD_LIB) |
298 | endif | 313 | endif |
299 | 314 | ||
300 | -ifeq ($(TARGET_ARCH), i386) | 315 | +ifeq ($(TARGET_BASE_ARCH), i386) |
301 | # Hardware support | 316 | # Hardware support |
302 | VL_OBJS+= ide.o ne2000.o pckbd.o vga.o $(SOUND_HW) dma.o $(AUDIODRV) | 317 | VL_OBJS+= ide.o ne2000.o pckbd.o vga.o $(SOUND_HW) dma.o $(AUDIODRV) |
303 | VL_OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pc.o | 318 | VL_OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pc.o |
304 | -VL_OBJS+= cirrus_vga.o mixeng.o | 319 | +VL_OBJS+= cirrus_vga.o mixeng.o apic.o |
305 | endif | 320 | endif |
306 | ifeq ($(TARGET_ARCH), ppc) | 321 | ifeq ($(TARGET_ARCH), ppc) |
307 | VL_OBJS+= ppc.o ide.o ne2000.o pckbd.o vga.o $(SOUND_HW) dma.o $(AUDIODRV) | 322 | VL_OBJS+= ppc.o ide.o ne2000.o pckbd.o vga.o $(SOUND_HW) dma.o $(AUDIODRV) |
@@ -376,7 +391,7 @@ op.o: op.c | @@ -376,7 +391,7 @@ op.o: op.c | ||
376 | helper.o: helper.c | 391 | helper.o: helper.c |
377 | $(CC) $(HELPER_CFLAGS) $(DEFINES) -c -o $@ $< | 392 | $(CC) $(HELPER_CFLAGS) $(DEFINES) -c -o $@ $< |
378 | 393 | ||
379 | -ifeq ($(TARGET_ARCH), i386) | 394 | +ifeq ($(TARGET_BASE_ARCH), i386) |
380 | op.o: op.c opreg_template.h ops_template.h ops_template_mem.h ops_mem.h | 395 | op.o: op.c opreg_template.h ops_template.h ops_template_mem.h ops_mem.h |
381 | endif | 396 | endif |
382 | 397 |
configure
@@ -27,7 +27,7 @@ ar="ar" | @@ -27,7 +27,7 @@ ar="ar" | ||
27 | make="make" | 27 | make="make" |
28 | strip="strip" | 28 | strip="strip" |
29 | cpu=`uname -m` | 29 | cpu=`uname -m` |
30 | -target_list="i386-user i386 i386-softmmu arm-user armeb-user sparc-user ppc-user ppc-softmmu sparc-softmmu" | 30 | +target_list="i386-user i386 i386-softmmu arm-user armeb-user sparc-user ppc-user ppc-softmmu sparc-softmmu x86_64-softmmu" |
31 | case "$cpu" in | 31 | case "$cpu" in |
32 | i386|i486|i586|i686|i86pc|BePC) | 32 | i386|i486|i586|i686|i86pc|BePC) |
33 | cpu="i386" | 33 | cpu="i386" |
@@ -63,7 +63,7 @@ case "$cpu" in | @@ -63,7 +63,7 @@ case "$cpu" in | ||
63 | cpu="m68k" | 63 | cpu="m68k" |
64 | ;; | 64 | ;; |
65 | x86_64|amd64) | 65 | x86_64|amd64) |
66 | - cpu="amd64" | 66 | + cpu="x86_64" |
67 | ;; | 67 | ;; |
68 | *) | 68 | *) |
69 | cpu="unknown" | 69 | cpu="unknown" |
@@ -383,9 +383,9 @@ echo "EXESUF=$EXESUF" >> $config_mak | @@ -383,9 +383,9 @@ echo "EXESUF=$EXESUF" >> $config_mak | ||
383 | if test "$cpu" = "i386" ; then | 383 | if test "$cpu" = "i386" ; then |
384 | echo "ARCH=i386" >> $config_mak | 384 | echo "ARCH=i386" >> $config_mak |
385 | echo "#define HOST_I386 1" >> $config_h | 385 | echo "#define HOST_I386 1" >> $config_h |
386 | -elif test "$cpu" = "amd64" ; then | ||
387 | - echo "ARCH=amd64" >> $config_mak | ||
388 | - echo "#define HOST_AMD64 1" >> $config_h | 386 | +elif test "$cpu" = "x86_64" ; then |
387 | + echo "ARCH=x86_64" >> $config_mak | ||
388 | + echo "#define HOST_X86_64 1" >> $config_h | ||
389 | elif test "$cpu" = "armv4b" ; then | 389 | elif test "$cpu" = "armv4b" ; then |
390 | echo "ARCH=arm" >> $config_mak | 390 | echo "ARCH=arm" >> $config_mak |
391 | echo "#define HOST_ARM 1" >> $config_h | 391 | echo "#define HOST_ARM 1" >> $config_h |
@@ -538,6 +538,11 @@ elif test "$target_cpu" = "ppc" ; then | @@ -538,6 +538,11 @@ elif test "$target_cpu" = "ppc" ; then | ||
538 | echo "TARGET_ARCH=ppc" >> $config_mak | 538 | echo "TARGET_ARCH=ppc" >> $config_mak |
539 | echo "#define TARGET_ARCH \"ppc\"" >> $config_h | 539 | echo "#define TARGET_ARCH \"ppc\"" >> $config_h |
540 | echo "#define TARGET_PPC 1" >> $config_h | 540 | echo "#define TARGET_PPC 1" >> $config_h |
541 | +elif test "$target_cpu" = "x86_64" ; then | ||
542 | + echo "TARGET_ARCH=x86_64" >> $config_mak | ||
543 | + echo "#define TARGET_ARCH \"x86_64\"" >> $config_h | ||
544 | + echo "#define TARGET_I386 1" >> $config_h | ||
545 | + echo "#define TARGET_X86_64 1" >> $config_h | ||
541 | else | 546 | else |
542 | echo "Unsupported target CPU" | 547 | echo "Unsupported target CPU" |
543 | exit 1 | 548 | exit 1 |