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.
316 lines
8.1 KiB
316 lines
8.1 KiB
18 years ago
|
# --- 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
|