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 <[email protected]> | |
| 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
 | |
| 
 |