Re: [kvm-devel] [PATCH] Qemu powerpc work around

2008-02-13 Thread Anthony Liguori

Hi Jerone,

Jerone Young wrote:

Ok taking everybodys suggestions. This patch adds a
--disable-cpu-emulation option to qemu.  This way powerpc has the
ability to compile, and also gives other archs the ability to easily add
the ability to compile without the tcg code.

Signed-off-by: Jerone Young [EMAIL PROTECTED]
  


Can you try out this version of the patch on PPC?  This version also 
supports --disable-cpu-emulation on x86.  It also eliminates -no-kvm 
when using --disable-cpu-emulation and exit's if KVM can not be initialized.


This should be useful on x86 where people cannot easily get their hands 
on gcc-3 and only wish to run KVM.


Regards,

Anthony Liguori
diff --git a/qemu/Makefile.target b/qemu/Makefile.target
index 49b81df..8b0436b 100644
--- a/qemu/Makefile.target
+++ b/qemu/Makefile.target
@@ -179,11 +179,17 @@ all: $(PROGS)
 
 #
 # cpu emulator library
-LIBOBJS=exec.o kqemu.o translate-all.o cpu-exec.o\
-translate.o op.o host-utils.o
+LIBOBJS=exec.o kqemu.o cpu-exec.o host-utils.o
+
+ifeq ($(NO_CPU_EMULATION), 1)
+LIBOBJS+=fake-exec.o
+else
+LIBOBJS+= translate-all.o translate.o op.o 
 # 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)
+endif
+
 ifeq ($(USE_KVM), 1)
 LIBOBJS+=qemu-kvm.o
 endif
diff --git a/qemu/configure b/qemu/configure
index 92299b9..bc42665 100755
--- a/qemu/configure
+++ b/qemu/configure
@@ -110,6 +110,7 @@ linux_user=no
 darwin_user=no
 build_docs=no
 uname_release=
+cpu_emulation=yes
 
 # OS specific
 targetos=`uname -s`
@@ -339,6 +340,8 @@ for opt do
   ;;
   --disable-werror) werror=no
   ;;
+  --disable-cpu-emulation) cpu_emulation=no 
+  ;;
   *) echo ERROR: unknown option $opt; exit 1
   ;;
   esac
@@ -770,6 +773,7 @@ if test -n $sparc_cpu; then
 fi
 echo kqemu support $kqemu
 echo kvm support   $kvm
+echo CPU emulation $cpu_emulation
 echo Documentation $build_docs
 [ ! -z $uname_release ]  \
 echo uname -r  $uname_release
@@ -1094,12 +1098,20 @@ elfload32=no
 interp_prefix1=`echo $interp_prefix | sed s/%M/$target_cpu/g`
 echo #define CONFIG_QEMU_PREFIX \$interp_prefix1\  $config_h
 
+disable_cpu_emulation() {
+  if test $cpu_emulation = no; then
+echo #define NO_CPU_EMULATION 1  $config_h
+echo NO_CPU_EMULATION=1  $config_mak
+  fi
+}
+
 configure_kvm() {
   if test $kvm = yes -a $target_softmmu = yes -a \
   \( $cpu = i386 -o $cpu = x86_64 -o $cpu = ia64 -o $cpu = powerpc \); then
 echo #define USE_KVM 1  $config_h
 echo USE_KVM=1  $config_mak
 echo CONFIG_KVM_KERNEL_INC=$kernel_path/include  $config_mak
+disable_cpu_emulation 
   fi
 }
 
diff --git a/qemu/exec.c b/qemu/exec.c
index 050b150..960adcd 100644
--- a/qemu/exec.c
+++ b/qemu/exec.c
@@ -35,7 +35,11 @@
 
 #include cpu.h
 #include exec-all.h
+
+#if !defined(NO_CPU_EMULATION)
 #include tcg-target.h
+#endif
+
 #include qemu-kvm.h
 #if defined(CONFIG_USER_ONLY)
 #include qemu.h
diff --git a/qemu/target-i386/fake-exec.c b/qemu/target-i386/fake-exec.c
new file mode 100644
index 000..737286d
--- /dev/null
+++ b/qemu/target-i386/fake-exec.c
@@ -0,0 +1,54 @@
+/*
+ * fake-exec.c
+ *
+ * This is a file for stub functions so that compilation is possible
+ * when TCG CPU emulation is disabled during compilation.
+ *
+ * Copyright 2007 IBM Corporation.
+ * Added by  Authors:
+ * 	Jerone Young [EMAIL PROTECTED]
+ * This work is licensed under the GNU GPL licence version 2 or later.
+ *
+ */
+#include exec.h
+#include cpu.h
+
+int code_copy_enabled = 0;
+
+CCTable cc_table[CC_OP_NB];
+
+void cpu_dump_statistics (CPUState *env, FILE*f,
+  int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+  int flags)
+{
+}
+
+unsigned long code_gen_max_block_size(void)
+{
+return 32;
+}
+
+void cpu_gen_init(void)
+{
+}
+
+int cpu_restore_state(TranslationBlock *tb,
+  CPUState *env, unsigned long searched_pc,
+  void *puc)
+
+{
+return 0;
+}
+
+int cpu_x86_gen_code(CPUState *env, TranslationBlock *tb, int *gen_code_size_ptr)
+{
+return 0;
+}
+
+void flush_icache_range(unsigned long start, unsigned long stop)
+{
+}
+
+void optimize_flags_init(void)
+{
+}
diff --git a/qemu/target-ppc/fake-exec.c b/qemu/target-ppc/fake-exec.c
new file mode 100644
index 000..b042f58
--- /dev/null
+++ b/qemu/target-ppc/fake-exec.c
@@ -0,0 +1,75 @@
+/*
+ * fake-exec.c
+ *
+ * This is a file for stub functions so that compilation is possible
+ * when TCG CPU emulation is disabled during compilation.
+ *
+ * Copyright 2007 IBM Corporation.
+ * Added by  Authors:
+ * 	Jerone Young [EMAIL PROTECTED]
+ * This work is licensed under the GNU GPL licence version 2 or later.
+ *
+ */
+
+#include stdarg.h
+#include stdlib.h
+#include stdio.h
+#include string.h
+#include inttypes.h
+
+#include cpu.h
+#include exec-all.h
+
+int code_copy_enabled = 0;
+
+void 

[kvm-devel] [PATCH] Qemu powerpc work around

2008-02-13 Thread Jerone Young
Ok taking everybodys suggestions. This patch adds a
--disable-cpu-emulation option to qemu.  This way powerpc has the
ability to compile, and also gives other archs the ability to easily add
the ability to compile without the tcg code.

Signed-off-by: Jerone Young [EMAIL PROTECTED]

diff --git a/qemu/Makefile.target b/qemu/Makefile.target
--- a/qemu/Makefile.target
+++ b/qemu/Makefile.target
@@ -179,11 +179,15 @@ all: $(PROGS)
 
 #
 # cpu emulator library
-LIBOBJS=exec.o kqemu.o translate-all.o cpu-exec.o\
-translate.o op.o host-utils.o
+LIBOBJS=exec.o kqemu.o cpu-exec.o host-utils.o
+
+ifneq ($(NO_CPU_EMULATION), 1)
+LIBOBJS+= translate-all.o translate.o op.o 
 # 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)
+endif
+
 ifeq ($(USE_KVM), 1)
 LIBOBJS+=qemu-kvm.o
 endif
@@ -214,6 +218,9 @@ LIBOBJS+= op_helper.o helper.o
 LIBOBJS+= op_helper.o helper.o
 ifeq ($(USE_KVM), 1)
 LIBOBJS+= qemu-kvm-powerpc.o
+endif
+ifeq ($(NO_CPU_EMULATION), 1)
+LIBOBJS+=fake-exec-ppc.o
 endif
 endif
 
diff --git a/qemu/configure b/qemu/configure
--- a/qemu/configure
+++ b/qemu/configure
@@ -110,6 +110,7 @@ darwin_user=no
 darwin_user=no
 build_docs=no
 uname_release=
+cpu_emulation=yes
 
 # OS specific
 targetos=`uname -s`
@@ -339,6 +340,8 @@ for opt do
   ;;
   --disable-werror) werror=no
   ;;
+  --disable-cpu-emulation) cpu_emulation=no 
+  ;;
   *) echo ERROR: unknown option $opt; exit 1
   ;;
   esac
@@ -770,6 +773,7 @@ fi
 fi
 echo kqemu support $kqemu
 echo kvm support   $kvm
+echo CPU emulation $cpu_emulation
 echo Documentation $build_docs
 [ ! -z $uname_release ]  \
 echo uname -r  $uname_release
@@ -1094,12 +1098,20 @@ interp_prefix1=`echo $interp_prefix | 
 interp_prefix1=`echo $interp_prefix | sed s/%M/$target_cpu/g`
 echo #define CONFIG_QEMU_PREFIX \$interp_prefix1\  $config_h
 
+disable_cpu_emulation() {
+  if test $cpu_emulation = no; then
+echo #define NO_CPU_EMULATION 1  $config_h
+echo NO_CPU_EMULATION=1  $config_mak
+  fi
+}
+
 configure_kvm() {
   if test $kvm = yes -a $target_softmmu = yes -a \
   \( $cpu = i386 -o $cpu = x86_64 -o $cpu = ia64 -o $cpu 
= powerpc \); then
 echo #define USE_KVM 1  $config_h
 echo USE_KVM=1  $config_mak
 echo CONFIG_KVM_KERNEL_INC=$kernel_path/include  $config_mak
+disable_cpu_emulation 
   fi
 }
 
diff --git a/qemu/exec.c b/qemu/exec.c
--- a/qemu/exec.c
+++ b/qemu/exec.c
@@ -35,7 +35,11 @@
 
 #include cpu.h
 #include exec-all.h
+
+#if !defined(NO_CPU_EMULATION)
 #include tcg-target.h
+#endif
+
 #include qemu-kvm.h
 #if defined(CONFIG_USER_ONLY)
 #include qemu.h
diff --git a/qemu/fake-exec-ppc.c b/qemu/fake-exec-ppc.c
new file mode 100644
--- /dev/null
+++ b/qemu/fake-exec-ppc.c
@@ -0,0 +1,75 @@
+/*
+ * fake-exec.c
+ *
+ * This is a file for stub functions so that compilation is possible
+ * when TCG CPU emulation is disabled during compilation.
+ *
+ * Copyright 2007 IBM Corporation.
+ * Added by  Authors:
+ * Jerone Young [EMAIL PROTECTED]
+ * This work is licensed under the GNU GPL licence version 2 or later.
+ *
+ */
+
+#include stdarg.h
+#include stdlib.h
+#include stdio.h
+#include string.h
+#include inttypes.h
+
+#include cpu.h
+#include exec-all.h
+
+int code_copy_enabled = 0;
+
+void cpu_dump_state (CPUState *env, FILE *f,
+ int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+ int flags)
+{
+}
+
+void ppc_cpu_list (FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...))
+{
+}
+
+void cpu_dump_statistics (CPUState *env, FILE*f,
+  int (*cpu_fprintf)(FILE *f, const char *fmt, ...),
+  int flags)
+{
+}
+
+unsigned long code_gen_max_block_size(void)
+{
+return 32;
+}
+
+void cpu_gen_init(void)
+{
+}
+
+int cpu_restore_state(TranslationBlock *tb,
+  CPUState *env, unsigned long searched_pc,
+  void *puc)
+
+{
+return 0;
+}
+
+int cpu_ppc_gen_code(CPUState *env, TranslationBlock *tb, int 
*gen_code_size_ptr)
+{
+return 0;
+}
+
+const ppc_def_t *cpu_ppc_find_by_name (const unsigned char *name)
+{
+return NULL;
+}
+
+int cpu_ppc_register_internal (CPUPPCState *env, const ppc_def_t *def)
+{
+return 0;
+}
+
+void flush_icache_range(unsigned long start, unsigned long stop)
+{
+}



-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/
___
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel