You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
315 lines
8.1 KiB
315 lines
8.1 KiB
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|
# |
|
# Filename: package/.../qemu/qvm86.patch |
|
# Copyright (C) 2006 The OpenSDE Project |
|
# |
|
# More information can be found in the files COPYING and README. |
|
# |
|
# This patch file is dual-licensed. It is available under the license the |
|
# patched project is licensed under, as long as it is an OpenSource license |
|
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms |
|
# of the GNU General Public License as published by the Free Software |
|
# Foundation; either version 2 of the License, or (at your option) any later |
|
# version. |
|
# --- SDE-COPYRIGHT-NOTE-END --- |
|
|
|
by AgBr <agbr@hotbox.ru> |
|
http://lists.gnu.org/archive/html/qvm86-devel/2006-10/msg00000.html |
|
|
|
diff -urN qemu-0.8.2/configure qemu-0.8.2-qvm86/configure |
|
--- qemu-0.8.2/configure 2006-07-22 21:23:34.000000000 +0400 |
|
+++ qemu-0.8.2-qvm86/configure 2006-10-15 18:34:17.438159229 +0400 |
|
@@ -87,6 +87,8 @@ |
|
bsd="no" |
|
linux="no" |
|
kqemu="no" |
|
+qvm86="no" |
|
+kernel_module="no" |
|
profiler="no" |
|
kernel_path="" |
|
cocoa="no" |
|
@@ -107,6 +109,10 @@ |
|
;; |
|
MINGW32*) |
|
mingw32="yes" |
|
+if [ "$cpu" = "i386" ] ; then |
|
+ kqemu="yes" |
|
+ qvm86="yes" |
|
+fi |
|
;; |
|
FreeBSD) |
|
bsd="yes" |
|
@@ -136,6 +142,7 @@ |
|
user="yes" |
|
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then |
|
kqemu="yes" |
|
+ qvm86="yes" |
|
fi |
|
;; |
|
esac |
|
@@ -221,6 +228,8 @@ |
|
;; |
|
--disable-kqemu) kqemu="no" |
|
;; |
|
+ --disable-qvm86) qvm86="no" |
|
+ ;; |
|
--enable-profiler) profiler="yes" |
|
;; |
|
--kernel-path=*) kernel_path="$optarg" |
|
@@ -267,6 +276,7 @@ |
|
echo "" |
|
echo "kqemu kernel acceleration support:" |
|
echo " --disable-kqemu disable kqemu support" |
|
+echo " --disable-qvm86 disable qvm86 build" |
|
echo " --kernel-path=PATH set the kernel path (configure probes it)" |
|
echo "" |
|
echo "Advanced options (experts only):" |
|
@@ -515,6 +525,64 @@ |
|
bindir="$prefix/bin" |
|
fi |
|
|
|
+# kqemu support |
|
+if test $kqemu = "yes" ; then |
|
+ # test if the source code is installed |
|
+ if test '!' -f "kqemu/Makefile" ; then |
|
+ kqemu="no" |
|
+ fi |
|
+fi |
|
+if test $qvm86 = "yes" ; then |
|
+ # test if the source code is installed |
|
+ if test '!' -f "qvm86/Makefile" ; then |
|
+ qvm86="no" |
|
+ fi |
|
+fi |
|
+ |
|
+if test $kqemu = "yes" -o $qvm86 = "yes" ; then |
|
+ kernel_module=yes |
|
+fi |
|
+ |
|
+# find the kernel path |
|
+if test $kernel_module = "yes"; then |
|
+if test "$linux" = "yes"; then |
|
+if test -z "$kernel_path" ; then |
|
+kernel_version=`uname -r` |
|
+kernel_path="/lib/modules/$kernel_version/build" |
|
+if test '!' -d "$kernel_path/include" ; then |
|
+ kernel_path="/usr/src/linux" |
|
+ if test '!' -d "$kernel_path/include" ; then |
|
+ echo "Could not find kernel includes in /lib/modules or /usr/src/linux - cannot build the kernel module" |
|
+ kernel_module="no" |
|
+ fi |
|
+fi |
|
+fi |
|
+fi # linux |
|
+fi # kernel_module |
|
+ |
|
+if test $kernel_module = yes; then |
|
+if test "$linux" = "yes"; then |
|
+ |
|
+# test that the kernel config is present |
|
+if test '!' -f "$kernel_path/.config" ; then |
|
+ echo "No .config file present in $kernel_path - kernel module cannot be built" |
|
+ kernel_module="no"; |
|
+fi |
|
+ |
|
+# find build system (2.6 or legacy) |
|
+kbuild26="yes" |
|
+if grep -q "PATCHLEVEL = 4" $kernel_path/Makefile ; then |
|
+kbuild26="no" |
|
+fi |
|
+ |
|
+fi # linux |
|
+fi # kernel_module |
|
+ |
|
+if test ! $kernel_module = "yes"; then |
|
+ kqemu="no" |
|
+ qvm86="no" |
|
+fi |
|
+ |
|
echo "Install prefix $prefix" |
|
echo "BIOS directory $datadir" |
|
echo "binary directory $bindir" |
|
@@ -559,6 +627,20 @@ |
|
fi |
|
echo "FMOD support $fmod $fmod_support" |
|
echo "kqemu support $kqemu" |
|
+echo "qvm86 support $qvm86" |
|
+if test $kernel_module = "yes"; then |
|
+if test "$linux" = "yes"; then |
|
+echo "" |
|
+echo "Kernel module configuration:" |
|
+echo "kernel sources $kernel_path" |
|
+echo -n "kbuild type " |
|
+if test $kbuild26 = "yes"; then |
|
+echo "2.6" |
|
+else |
|
+echo "2.4" |
|
+fi |
|
+fi |
|
+fi |
|
echo "Documentation $build_docs" |
|
[ ! -z "$uname_release" ] && \ |
|
echo "uname -r $uname_release" |
|
@@ -700,14 +782,26 @@ |
|
echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak |
|
echo "#define CONFIG_FMOD 1" >> $config_h |
|
fi |
|
-qemu_version=`head $source_path/VERSION` |
|
-echo "VERSION=$qemu_version" >>$config_mak |
|
-echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h |
|
- |
|
-echo "SRC_PATH=$source_path" >> $config_mak |
|
-if [ "$source_path_used" = "yes" ]; then |
|
- echo "VPATH=$source_path" >> $config_mak |
|
+echo -n "VERSION=" >>$config_mak |
|
+head $source_path/VERSION >>$config_mak |
|
+echo "" >>$config_mak |
|
+echo -n "#define QEMU_VERSION \"" >> $config_h |
|
+head $source_path/VERSION >> $config_h |
|
+echo "\"" >> $config_h |
|
+ |
|
+if test $kqemu = "yes" ; then |
|
+ echo "CONFIG_KQEMU=yes" >> $config_mak |
|
+fi |
|
+if test $qvm86 = "yes" ; then |
|
+ echo "CONFIG_QVM86=yes" >> $config_mak |
|
+fi |
|
+if test $kernel_module = "yes" ; then |
|
+ echo "KERNEL_PATH=$kernel_path" >> $config_mak |
|
+ if test "$kbuild26" = "yes" ; then |
|
+ echo "CONFIG_KBUILD26=yes" >> $config_mak |
|
+ fi |
|
fi |
|
+echo "SRC_PATH=$source_path" >> $config_mak |
|
echo "TARGET_DIRS=$target_list" >> $config_mak |
|
if [ "$build_docs" = "yes" ] ; then |
|
echo "BUILD_DOCS=yes" >> $config_mak |
|
@@ -788,7 +882,7 @@ |
|
echo "TARGET_ARCH=i386" >> $config_mak |
|
echo "#define TARGET_ARCH \"i386\"" >> $config_h |
|
echo "#define TARGET_I386 1" >> $config_h |
|
- if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then |
|
+ if test $kernel_module = "yes" -a "$target_softmmu" = "yes" -a "$cpu" = "i386"; then |
|
echo "#define USE_KQEMU 1" >> $config_h |
|
fi |
|
elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then |
|
diff -urN qemu-0.8.2/kqemu.c qemu-0.8.2-qvm86/kqemu.c |
|
--- qemu-0.8.2/kqemu.c 2006-07-22 21:23:34.000000000 +0400 |
|
+++ qemu-0.8.2-qvm86/kqemu.c 2006-10-15 18:34:32.971225425 +0400 |
|
@@ -45,6 +45,7 @@ |
|
#include <unistd.h> |
|
#include <fcntl.h> |
|
#include "kqemu.h" |
|
+#include "qvm86/kqemu.h" |
|
|
|
/* compatibility stuff */ |
|
#ifndef KQEMU_RET_SYSCALL |
|
@@ -59,9 +60,9 @@ |
|
#endif |
|
|
|
#ifdef _WIN32 |
|
-#define KQEMU_DEVICE "\\\\.\\kqemu" |
|
+#define KQEMU_DEVICE "\\\\.\\qvm86" |
|
#else |
|
-#define KQEMU_DEVICE "/dev/kqemu" |
|
+#define KQEMU_DEVICE "/dev/qvm86" |
|
#endif |
|
|
|
#ifdef _WIN32 |
|
@@ -152,6 +153,8 @@ |
|
/* XXX: we could update more of the target CPUID state so that the |
|
non accelerated code sees exactly the same CPU features as the |
|
accelerated code */ |
|
+ /* Other flags not supported by qvm86 */ |
|
+ env->cpuid_features &= ~(CPUID_PAT | CPUID_PAE | CPUID_SEP); |
|
} |
|
|
|
int kqemu_init(CPUState *env) |
|
@@ -236,6 +239,7 @@ |
|
env->kqemu_enabled = kqemu_allowed; |
|
nb_pages_to_flush = 0; |
|
nb_ram_pages_to_update = 0; |
|
+ printf ("QEMU acceleration layer enabled\n"); |
|
return 0; |
|
} |
|
|
|
diff -urN qemu-0.8.2/Makefile qemu-0.8.2-qvm86/Makefile |
|
--- qemu-0.8.2/Makefile 2006-07-22 21:23:34.000000000 +0400 |
|
+++ qemu-0.8.2-qvm86/Makefile 2006-10-15 18:34:13.967814690 +0400 |
|
@@ -26,7 +26,14 @@ |
|
endif |
|
|
|
all: $(TOOLS) $(DOCS) recurse-all |
|
- |
|
+ifdef CONFIG_QVM86 |
|
+ifdef CONFIG_WIN32 |
|
+ $(MAKE) -C qvm86 -f Makefile.winnt |
|
+else |
|
+ $(MAKE) -C qvm86 |
|
+endif |
|
+endif |
|
+ |
|
subdir-%: dyngen$(EXESUF) |
|
$(MAKE) -C $(subst subdir-,,$@) all |
|
|
|
@@ -46,6 +53,16 @@ |
|
for d in $(TARGET_DIRS); do \ |
|
$(MAKE) -C $$d $@ || exit 1 ; \ |
|
done |
|
+ifdef CONFIG_KQEMU |
|
+ $(MAKE) -C kqemu clean |
|
+endif |
|
+ifdef CONFIG_QVM86 |
|
+ifdef CONFIG_WIN32 |
|
+ $(MAKE) -C qvm86 -f Makefile.winnt clean |
|
+else |
|
+ $(MAKE) -C qvm86 clean |
|
+endif |
|
+endif |
|
|
|
distclean: clean |
|
rm -f config-host.mak config-host.h $(DOCS) |
|
@@ -83,6 +100,12 @@ |
|
for d in $(TARGET_DIRS); do \ |
|
$(MAKE) -C $$d $@ || exit 1 ; \ |
|
done |
|
+ifdef CONFIG_KQEMU |
|
+ cd kqemu ; ./install.sh |
|
+endif |
|
+ifdef CONFIG_QVM86 |
|
+ cd qvm86 ; ./install.sh |
|
+endif |
|
|
|
# various test targets |
|
test speed test2: all |
|
diff -urN qemu-0.8.2/osdep.c qemu-0.8.2-qvm86/osdep.c |
|
--- qemu-0.8.2/osdep.c 2006-07-22 21:23:34.000000000 +0400 |
|
+++ qemu-0.8.2-qvm86/osdep.c 2006-10-15 18:34:20.677547390 +0400 |
|
@@ -326,7 +326,7 @@ |
|
|
|
#else |
|
|
|
-#if defined(USE_KQEMU) |
|
+#if 0 && defined(USE_KQEMU) |
|
|
|
#include <sys/vfs.h> |
|
#include <sys/mman.h> |
|
@@ -419,7 +419,7 @@ |
|
/* alloc shared memory pages */ |
|
void *qemu_vmalloc(size_t size) |
|
{ |
|
-#if defined(USE_KQEMU) |
|
+#if 0 && defined(USE_KQEMU) |
|
if (kqemu_allowed) |
|
return kqemu_vmalloc(size); |
|
#endif |
|
@@ -432,7 +432,7 @@ |
|
|
|
void qemu_vfree(void *ptr) |
|
{ |
|
-#if defined(USE_KQEMU) |
|
+#if 0 && defined(USE_KQEMU) |
|
if (kqemu_allowed) |
|
kqemu_vfree(ptr); |
|
#endif
|
|
|