- Backport patch to make FC6 guests work by Kevin Kofler

<Kevin@tigcc.ticalc.org> (bz 207843).
This commit is contained in:
Hans de Goede 2006-11-14 18:19:44 +00:00
parent f6b93be703
commit 9cd3a05d44
2 changed files with 89 additions and 1 deletions

82
qemu-0.8.2-mb-nops.diff Normal file
View File

@ -0,0 +1,82 @@
===================================================================
RCS file: /sources/qemu/qemu/target-i386/translate.c,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -r1.59 -r1.60
--- qemu/target-i386/translate.c 2006/07/10 19:53:04 1.59
+++ qemu/target-i386/translate.c 2006/09/03 17:09:02 1.60
@@ -1615,6 +1615,56 @@
*offset_ptr = disp;
}
+static void gen_nop_modrm(DisasContext *s, int modrm)
+{
+ int mod, rm, base, code;
+
+ mod = (modrm >> 6) & 3;
+ if (mod == 3)
+ return;
+ rm = modrm & 7;
+
+ if (s->aflag) {
+
+ base = rm;
+
+ if (base == 4) {
+ code = ldub_code(s->pc++);
+ base = (code & 7);
+ }
+
+ switch (mod) {
+ case 0:
+ if (base == 5) {
+ s->pc += 4;
+ }
+ break;
+ case 1:
+ s->pc++;
+ break;
+ default:
+ case 2:
+ s->pc += 4;
+ break;
+ }
+ } else {
+ switch (mod) {
+ case 0:
+ if (rm == 6) {
+ s->pc += 2;
+ }
+ break;
+ case 1:
+ s->pc++;
+ break;
+ default:
+ case 2:
+ s->pc += 2;
+ break;
+ }
+ }
+}
+
/* used for LEA and MOV AX, mem */
static void gen_add_A0_ds_seg(DisasContext *s)
{
@@ -5791,10 +5841,15 @@
gen_lea_modrm(s, modrm, &reg_addr, &offset_addr);
/* nothing more to do */
break;
- default:
- goto illegal_op;
+ default: /* nop (multi byte) */
+ gen_nop_modrm(s, modrm);
+ break;
}
break;
+ case 0x119 ... 0x11f: /* nop (multi byte) */
+ modrm = ldub_code(s->pc++);
+ gen_nop_modrm(s, modrm);
+ break;
case 0x120: /* mov reg, crN */
case 0x122: /* mov crN, reg */
if (s->cpl != 0) {

View File

@ -8,7 +8,7 @@
Summary: QEMU is a FAST! processor emulator
Name: qemu
Version: 0.8.2
Release: 3%{?dist}
Release: 4%{?dist}
License: GPL/LGPL
Group: Development/Tools
URL: http://www.qemu.org/
@ -18,6 +18,7 @@ Patch0: qemu-0.7.0-build.patch
Patch1: qemu-0.8.0-sdata.patch
Patch2: qemu-0.8.2-kernheaders.patch
Patch3: qemu-0.8.2-target-sparc.patch
Patch4: qemu-0.8.2-mb-nops.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: SDL-devel compat-gcc-%{gccver} zlib-devel which texi2html
Requires(post): /sbin/chkconfig
@ -44,6 +45,7 @@ As QEMU requires no host kernel patches to run, it is safe and easy to use.
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%build
./configure \
@ -92,6 +94,10 @@ fi
%{_mandir}/man1/*
%changelog
* Mon Nov 13 2006 Hans de Goede <j.w.r.degoede@hhs.nl> 0.8.2-4
- Backport patch to make FC6 guests work by Kevin Kofler
<Kevin@tigcc.ticalc.org> (bz 207843).
* Mon Sep 11 2006 David Woodhouse <dwmw2@infradead.org> 0.8.2-3
- Rebuild