public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Jerone Young <jyoung5@us.ibm.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: kvm-devel <kvm-devel@lists.sourceforge.net>,
	hollisb <hollisb@linux.vnet.ibm.com>,
	Avi Kivity <avi@qumranet.com>
Subject: [PATCH] Qemu powerpc work around
Date: Wed, 13 Feb 2008 13:27:22 -0600	[thread overview]
Message-ID: <1202930842.9966.2.camel@thinkpad.austin.ibm.com> (raw)
In-Reply-To: <47B33D20.7030709@codemonkey.ws>

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 <jyoung5@us.ibm.com>

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 <jyoung5@us.ibm.com>
+ * 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/vse0120000070mrt/direct/01/

  reply	other threads:[~2008-02-13 19:27 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-12 21:37 [RFC] Qemu powerpc work around Jerone Young
2008-02-12 21:44 ` Anthony Liguori
2008-02-12 21:53   ` Jerone Young
2008-02-12 22:03     ` Anthony Liguori
2008-02-12 22:50       ` Jerone Young
2008-02-13  0:47         ` Anthony Liguori
2008-02-13  7:29 ` Avi Kivity
2008-02-13 17:39   ` Jerone Young
2008-02-13 18:55     ` Anthony Liguori
2008-02-13 19:27       ` Jerone Young [this message]
2008-02-13 20:20         ` [PATCH] " Anthony Liguori
2008-02-13 20:29       ` [RFC] " Jerone Young
2008-02-14  9:33         ` Avi Kivity

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1202930842.9966.2.camel@thinkpad.austin.ibm.com \
    --to=jyoung5@us.ibm.com \
    --cc=anthony@codemonkey.ws \
    --cc=avi@qumranet.com \
    --cc=hollisb@linux.vnet.ibm.com \
    --cc=kvm-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox