aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunqian Gordon Xu <xjqian@gmail.com>2008-08-02 18:57:05 +0000
committerJunqian Gordon Xu <xjqian@gmail.com>2008-08-02 18:57:05 +0000
commit7b0c0beb72a082c16eb1fdbf2fd523cd6b5d5958 (patch)
tree7fd9e9c733d17ea225432a414321eaf72ec7f9ca
parent5c88abe8fdb68e650e2bc0da92622f08766ab856 (diff)
downloadopenembedded-7b0c0beb72a082c16eb1fdbf2fd523cd6b5d5958.tar.gz
*qemu-native: apply RP and HRW's work to make qemu-native depend on gcc-3.x
*bump qemu and qemu-native to 0.9.1 acked by koen and xjqian applied changes from ef58abe1a06a5ea2601891b7f591ee28d96d29ac through be4a9a82ecf6de3dc409f7e421e00f48275630a4 applied changes from 50afd6b807893e2bbc045b74beb369a29ed89ae3 through efe97ae3379be57d5cfefbec26c1555a02dce199 applied changes from b342639828f6049e03634372396237442063157a through 7c47cd537d8cebaa3111aa836db24534a39b5ed9 applied partial changes from 274270bd49f45e5d154a09560078fd8473cebef3 through 0d7f35f44f5002f7df5f605bc373d3feecb8602d applied changes from dddb30d5049fad23f452f7c5364372053ad80330 through 426e966e25a73432fe84e2dc8d36d9fef772e918 applied changes from 50afd6b807893e2bbc045b74beb369a29ed89ae3 through efe97ae3379be57d5cfefbec26c1555a02dce199 applied changes from b342639828f6049e03634372396237442063157a through 7c47cd537d8cebaa3111aa836db24534a39b5ed9 applied changes from 274270bd49f45e5d154a09560078fd8473cebef3 through 0d7f35f44f5002f7df5f605bc373d3feecb8602d applied changes from dddb30d5049fad23f452f7c5364372053ad80330 through 426e966e25a73432fe84e2dc8d36d9fef772e918 applied changes from e8430eb8d57a51facac956886d5e14a2da5a83cd through 8aaa63b78b875201272cedf7c236b4dc8ccff2e4 applied changes from 2386d883918c833ff5a3693fa8645c6d28580c23 through edeeced17549bd274e2a7ea203acafb5fe7c781b applied changes from c4fef6b8c1889d57043bafed87e5447a2e8c9e58 through 47fc69292f976e333a4cd7e4982c12f0c4bcb844 applied changes from 2e62684434bad8e7a1ee7889de6b7bd78e7a5331 through 85d4ab967941a2bea382fb9211cd65212be527a6
-rw-r--r--classes/base.bbclass17
-rw-r--r--classes/sanity.bbclass8
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/.mtn2git_empty (renamed from packages/qemu/files/.mtn2git_empty)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/02_snapshot_use_tmpdir.patch (renamed from packages/qemu/files/02_snapshot_use_tmpdir.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/03_machines_list_no_error.patch (renamed from packages/qemu/files/03_machines_list_no_error.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/04_do_not_print_rtc_freq_if_ok.patch (renamed from packages/qemu/files/04_do_not_print_rtc_freq_if_ok.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/05_non-fatal_if_linux_hd_missing.patch (renamed from packages/qemu/files/05_non-fatal_if_linux_hd_missing.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/06_exit_segfault.patch (renamed from packages/qemu/files/06_exit_segfault.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/10_signal_jobs.patch (renamed from packages/qemu/files/10_signal_jobs.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/11_signal_sigaction.patch (renamed from packages/qemu/files/11_signal_sigaction.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/12_signal_powerpc_support.patch (renamed from packages/qemu/files/12_signal_powerpc_support.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/22_net_tuntap_stall.patch (renamed from packages/qemu/files/22_net_tuntap_stall.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/30_syscall_ipc.patch (renamed from packages/qemu/files/30_syscall_ipc.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/31_syscalls.patch (renamed from packages/qemu/files/31_syscalls.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/32_syscall_sysctl.patch (renamed from packages/qemu/files/32_syscall_sysctl.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/33_syscall_ppc_clone.patch (renamed from packages/qemu/files/33_syscall_ppc_clone.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/39_syscall_fadvise64.patch (renamed from packages/qemu/files/39_syscall_fadvise64.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/41_arm_fpa_sigfpe.patch (renamed from packages/qemu/files/41_arm_fpa_sigfpe.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/52_ne2000_return.patch (renamed from packages/qemu/files/52_ne2000_return.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/61_safe_64bit_int.patch (renamed from packages/qemu/files/61_safe_64bit_int.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/63_sparc_build.patch (renamed from packages/qemu/files/63_sparc_build.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/64_ppc_asm_constraints.patch (renamed from packages/qemu/files/64_ppc_asm_constraints.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/65_kfreebsd.patch (renamed from packages/qemu/files/65_kfreebsd.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/66_tls_ld.patch (renamed from packages/qemu/files/66_tls_ld.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/91-oh-sdl-cursor.patch (renamed from packages/qemu/files/91-oh-sdl-cursor.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/93-oh-pl110-rgb.patch (renamed from packages/qemu/files/93-oh-pl110-rgb.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/arm_nptl.patch (renamed from packages/qemu/files/arm_nptl.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/compiler.patch (renamed from packages/qemu/files/compiler.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/configure.patch (renamed from packages/qemu/files/configure.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/fix_segfault.patch (renamed from packages/qemu/files/fix_segfault.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/makefile.patch (renamed from packages/qemu/files/makefile.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/no-strip.patch (renamed from packages/qemu/files/no-strip.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/pl110_rgb-r0.patch (renamed from packages/qemu/files/pl110_rgb-r0.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-0.9.0-nptl-update.patch (renamed from packages/qemu/files/qemu-0.9.0-nptl-update.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-0.9.0-nptl.patch (renamed from packages/qemu/files/qemu-0.9.0-nptl.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-amd64-32b-mapping-0.9.0.patch (renamed from packages/qemu/files/qemu-amd64-32b-mapping-0.9.0.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-pci-irq-sharing.patch (renamed from packages/qemu/files/qemu-pci-irq-sharing.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-sdl-cursor.patch (renamed from packages/qemu/files/qemu-sdl-cursor.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-0.8.2.patch (renamed from packages/qemu/files/qemu-usb-wacom-0.8.2.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-buttons.patch (renamed from packages/qemu/files/qemu-usb-wacom-buttons.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-pressure.patch (renamed from packages/qemu/files/qemu-usb-wacom-pressure.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070613/workaround_bad_futex_headers.patch (renamed from packages/qemu/files/workaround_bad_futex_headers.patch)0
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070701/configure-0.9.0.patch12
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070701/pl110_rgb-r0-0.9.0.patch217
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070701/qemu-0.9.0-gcc4.patch881
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070701/qemu-amd64-32b-mapping-0.9.0.patch21
-rw-r--r--packages/qemu/qemu-0.9.0+cvs20070701/qemu-sdl-cursor-0.9.0.patch12
-rw-r--r--packages/qemu/qemu-0.9.1/.mtn2git_empty (renamed from packages/qemu/qemu-0.9.0+cvs20070701/.mtn2git_empty)0
-rw-r--r--packages/qemu/qemu-0.9.1/02_snapshot_use_tmpdir.patch23
-rw-r--r--packages/qemu/qemu-0.9.1/04_do_not_print_rtc_freq_if_ok.patch26
-rw-r--r--packages/qemu/qemu-0.9.1/05_non-fatal_if_linux_hd_missing.patch17
-rw-r--r--packages/qemu/qemu-0.9.1/06_exit_segfault.patch45
-rw-r--r--packages/qemu/qemu-0.9.1/10_signal_jobs.patch26
-rw-r--r--packages/qemu/qemu-0.9.1/11_signal_sigaction.patch21
-rw-r--r--packages/qemu/qemu-0.9.1/22_net_tuntap_stall.patch18
-rw-r--r--packages/qemu/qemu-0.9.1/31_syscalls.patch48
-rw-r--r--packages/qemu/qemu-0.9.1/32_syscall_sysctl.patch55
-rw-r--r--packages/qemu/qemu-0.9.1/33_syscall_ppc_clone.patch22
-rw-r--r--packages/qemu/qemu-0.9.1/39_syscall_fadvise64.patch21
-rw-r--r--packages/qemu/qemu-0.9.1/41_arm_fpa_sigfpe.patch104
-rw-r--r--packages/qemu/qemu-0.9.1/52_ne2000_return.patch17
-rw-r--r--packages/qemu/qemu-0.9.1/61_safe_64bit_int.patch27
-rw-r--r--packages/qemu/qemu-0.9.1/63_sparc_build.patch18
-rw-r--r--packages/qemu/qemu-0.9.1/64_ppc_asm_constraints.patch18
-rw-r--r--packages/qemu/qemu-0.9.1/65_kfreebsd.patch35
-rw-r--r--packages/qemu/qemu-0.9.1/66_tls_ld.patch55
-rw-r--r--packages/qemu/qemu-0.9.1/91-oh-sdl-cursor.patch18
-rw-r--r--packages/qemu/qemu-0.9.1/configure_symlinkpath_fix.patch28
-rw-r--r--packages/qemu/qemu-0.9.1/disable-error-in-configure.patch17
-rw-r--r--packages/qemu/qemu-0.9.1/fix_segfault.patch37
-rw-r--r--packages/qemu/qemu-0.9.1/no-strip.patch22
-rw-r--r--packages/qemu/qemu-0.9.1/qemu-0.9.0-nptl-update.patch219
-rw-r--r--packages/qemu/qemu-0.9.1/qemu-0.9.0-nptl.patch (renamed from packages/qemu/qemu-0.9.0+cvs20070701/arm_nptl-0.9.0.patch)490
-rw-r--r--packages/qemu/qemu-0.9.1/qemu-amd64-32b-mapping-0.9.0.patch37
-rw-r--r--packages/qemu/qemu-0.9.1/series25
-rw-r--r--packages/qemu/qemu-0.9.1/workaround_bad_futex_headers.patch25
-rw-r--r--packages/qemu/qemu-0.9.1/writev_fix.patch17
-rw-r--r--packages/qemu/qemu-gcc3-check.inc19
-rw-r--r--packages/qemu/qemu-native.inc7
-rw-r--r--packages/qemu/qemu-native_0.9.0+cvs.bb3
-rw-r--r--packages/qemu/qemu-native_0.9.1.bb2
-rw-r--r--packages/qemu/qemu-native_20070613.bb7
-rw-r--r--packages/qemu/qemu-native_cvs.bb1
-rw-r--r--packages/qemu/qemu_0.9.0+cvs.bb22
-rw-r--r--packages/qemu/qemu_0.9.1.bb49
-rw-r--r--packages/qemu/qemu_20070613.bb10
-rw-r--r--packages/qemu/qemu_cvs.bb67
87 files changed, 1452 insertions, 1434 deletions
diff --git a/classes/base.bbclass b/classes/base.bbclass
index d9ba201571..ba1e5abfe7 100644
--- a/classes/base.bbclass
+++ b/classes/base.bbclass
@@ -911,6 +911,23 @@ python () {
base_after_parse(d)
}
+def check_app_exists(app, d):
+ from bb import which, data
+
+ app = data.expand(app, d)
+ path = data.getVar('PATH', d, 1)
+ return len(which(path, app)) != 0
+
+def check_gcc3(data):
+
+ gcc3_versions = 'gcc-3.4 gcc34 gcc-3.4.4 gcc-3.4.6 gcc-3.4.7 gcc-3.3 gcc33 gcc-3.3.6 gcc-3.2 gcc32'
+
+ for gcc3 in gcc3_versions.split():
+ if check_app_exists(gcc3, data):
+ return gcc3
+
+ return False
+
# Patch handling
inherit patch
diff --git a/classes/sanity.bbclass b/classes/sanity.bbclass
index 0b47ca0213..43d8c25cfe 100644
--- a/classes/sanity.bbclass
+++ b/classes/sanity.bbclass
@@ -24,14 +24,6 @@ def check_conf_exists(fn, data):
return True
return False
-def check_app_exists(app, d):
- from bb import which, data
-
- app = data.expand(app, d)
- path = data.getVar('PATH', d)
- return len(which(path, app)) != 0
-
-
def check_sanity(e):
from bb import note, error, data, __version__
from bb.event import Handled, NotHandled, getName
diff --git a/packages/qemu/files/.mtn2git_empty b/packages/qemu/qemu-0.9.0+cvs20070613/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/qemu/files/.mtn2git_empty
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/.mtn2git_empty
diff --git a/packages/qemu/files/02_snapshot_use_tmpdir.patch b/packages/qemu/qemu-0.9.0+cvs20070613/02_snapshot_use_tmpdir.patch
index bd955b6db3..bd955b6db3 100644
--- a/packages/qemu/files/02_snapshot_use_tmpdir.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/02_snapshot_use_tmpdir.patch
diff --git a/packages/qemu/files/03_machines_list_no_error.patch b/packages/qemu/qemu-0.9.0+cvs20070613/03_machines_list_no_error.patch
index 73f31550fe..73f31550fe 100644
--- a/packages/qemu/files/03_machines_list_no_error.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/03_machines_list_no_error.patch
diff --git a/packages/qemu/files/04_do_not_print_rtc_freq_if_ok.patch b/packages/qemu/qemu-0.9.0+cvs20070613/04_do_not_print_rtc_freq_if_ok.patch
index 1575cbce63..1575cbce63 100644
--- a/packages/qemu/files/04_do_not_print_rtc_freq_if_ok.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/04_do_not_print_rtc_freq_if_ok.patch
diff --git a/packages/qemu/files/05_non-fatal_if_linux_hd_missing.patch b/packages/qemu/qemu-0.9.0+cvs20070613/05_non-fatal_if_linux_hd_missing.patch
index b7c4732f24..b7c4732f24 100644
--- a/packages/qemu/files/05_non-fatal_if_linux_hd_missing.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/05_non-fatal_if_linux_hd_missing.patch
diff --git a/packages/qemu/files/06_exit_segfault.patch b/packages/qemu/qemu-0.9.0+cvs20070613/06_exit_segfault.patch
index 447c3550b8..447c3550b8 100644
--- a/packages/qemu/files/06_exit_segfault.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/06_exit_segfault.patch
diff --git a/packages/qemu/files/10_signal_jobs.patch b/packages/qemu/qemu-0.9.0+cvs20070613/10_signal_jobs.patch
index 794a538676..794a538676 100644
--- a/packages/qemu/files/10_signal_jobs.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/10_signal_jobs.patch
diff --git a/packages/qemu/files/11_signal_sigaction.patch b/packages/qemu/qemu-0.9.0+cvs20070613/11_signal_sigaction.patch
index 5446efc562..5446efc562 100644
--- a/packages/qemu/files/11_signal_sigaction.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/11_signal_sigaction.patch
diff --git a/packages/qemu/files/12_signal_powerpc_support.patch b/packages/qemu/qemu-0.9.0+cvs20070613/12_signal_powerpc_support.patch
index d8d4198784..d8d4198784 100644
--- a/packages/qemu/files/12_signal_powerpc_support.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/12_signal_powerpc_support.patch
diff --git a/packages/qemu/files/22_net_tuntap_stall.patch b/packages/qemu/qemu-0.9.0+cvs20070613/22_net_tuntap_stall.patch
index e9b31dfe40..e9b31dfe40 100644
--- a/packages/qemu/files/22_net_tuntap_stall.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/22_net_tuntap_stall.patch
diff --git a/packages/qemu/files/30_syscall_ipc.patch b/packages/qemu/qemu-0.9.0+cvs20070613/30_syscall_ipc.patch
index 3dc58102ad..3dc58102ad 100644
--- a/packages/qemu/files/30_syscall_ipc.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/30_syscall_ipc.patch
diff --git a/packages/qemu/files/31_syscalls.patch b/packages/qemu/qemu-0.9.0+cvs20070613/31_syscalls.patch
index 3878079f19..3878079f19 100644
--- a/packages/qemu/files/31_syscalls.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/31_syscalls.patch
diff --git a/packages/qemu/files/32_syscall_sysctl.patch b/packages/qemu/qemu-0.9.0+cvs20070613/32_syscall_sysctl.patch
index d175cf96ba..d175cf96ba 100644
--- a/packages/qemu/files/32_syscall_sysctl.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/32_syscall_sysctl.patch
diff --git a/packages/qemu/files/33_syscall_ppc_clone.patch b/packages/qemu/qemu-0.9.0+cvs20070613/33_syscall_ppc_clone.patch
index a71f8b1944..a71f8b1944 100644
--- a/packages/qemu/files/33_syscall_ppc_clone.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/33_syscall_ppc_clone.patch
diff --git a/packages/qemu/files/39_syscall_fadvise64.patch b/packages/qemu/qemu-0.9.0+cvs20070613/39_syscall_fadvise64.patch
index 0a7f4c48dd..0a7f4c48dd 100644
--- a/packages/qemu/files/39_syscall_fadvise64.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/39_syscall_fadvise64.patch
diff --git a/packages/qemu/files/41_arm_fpa_sigfpe.patch b/packages/qemu/qemu-0.9.0+cvs20070613/41_arm_fpa_sigfpe.patch
index d579dbc66e..d579dbc66e 100644
--- a/packages/qemu/files/41_arm_fpa_sigfpe.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/41_arm_fpa_sigfpe.patch
diff --git a/packages/qemu/files/52_ne2000_return.patch b/packages/qemu/qemu-0.9.0+cvs20070613/52_ne2000_return.patch
index f0316c8042..f0316c8042 100644
--- a/packages/qemu/files/52_ne2000_return.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/52_ne2000_return.patch
diff --git a/packages/qemu/files/61_safe_64bit_int.patch b/packages/qemu/qemu-0.9.0+cvs20070613/61_safe_64bit_int.patch
index 553e57623e..553e57623e 100644
--- a/packages/qemu/files/61_safe_64bit_int.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/61_safe_64bit_int.patch
diff --git a/packages/qemu/files/63_sparc_build.patch b/packages/qemu/qemu-0.9.0+cvs20070613/63_sparc_build.patch
index 32a6bc0ee0..32a6bc0ee0 100644
--- a/packages/qemu/files/63_sparc_build.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/63_sparc_build.patch
diff --git a/packages/qemu/files/64_ppc_asm_constraints.patch b/packages/qemu/qemu-0.9.0+cvs20070613/64_ppc_asm_constraints.patch
index e4858b79d7..e4858b79d7 100644
--- a/packages/qemu/files/64_ppc_asm_constraints.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/64_ppc_asm_constraints.patch
diff --git a/packages/qemu/files/65_kfreebsd.patch b/packages/qemu/qemu-0.9.0+cvs20070613/65_kfreebsd.patch
index ea060811a1..ea060811a1 100644
--- a/packages/qemu/files/65_kfreebsd.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/65_kfreebsd.patch
diff --git a/packages/qemu/files/66_tls_ld.patch b/packages/qemu/qemu-0.9.0+cvs20070613/66_tls_ld.patch
index 54e02eff8b..54e02eff8b 100644
--- a/packages/qemu/files/66_tls_ld.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/66_tls_ld.patch
diff --git a/packages/qemu/files/91-oh-sdl-cursor.patch b/packages/qemu/qemu-0.9.0+cvs20070613/91-oh-sdl-cursor.patch
index 5280a5bd4a..5280a5bd4a 100644
--- a/packages/qemu/files/91-oh-sdl-cursor.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/91-oh-sdl-cursor.patch
diff --git a/packages/qemu/files/93-oh-pl110-rgb.patch b/packages/qemu/qemu-0.9.0+cvs20070613/93-oh-pl110-rgb.patch
index 4911ac131f..4911ac131f 100644
--- a/packages/qemu/files/93-oh-pl110-rgb.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/93-oh-pl110-rgb.patch
diff --git a/packages/qemu/files/arm_nptl.patch b/packages/qemu/qemu-0.9.0+cvs20070613/arm_nptl.patch
index f9b10aebc5..f9b10aebc5 100644
--- a/packages/qemu/files/arm_nptl.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/arm_nptl.patch
diff --git a/packages/qemu/files/compiler.patch b/packages/qemu/qemu-0.9.0+cvs20070613/compiler.patch
index dad18b3a61..dad18b3a61 100644
--- a/packages/qemu/files/compiler.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/compiler.patch
diff --git a/packages/qemu/files/configure.patch b/packages/qemu/qemu-0.9.0+cvs20070613/configure.patch
index ea83f8cd6d..ea83f8cd6d 100644
--- a/packages/qemu/files/configure.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/configure.patch
diff --git a/packages/qemu/files/fix_segfault.patch b/packages/qemu/qemu-0.9.0+cvs20070613/fix_segfault.patch
index 976c75cd60..976c75cd60 100644
--- a/packages/qemu/files/fix_segfault.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/fix_segfault.patch
diff --git a/packages/qemu/files/makefile.patch b/packages/qemu/qemu-0.9.0+cvs20070613/makefile.patch
index 75b5ac9c71..75b5ac9c71 100644
--- a/packages/qemu/files/makefile.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/makefile.patch
diff --git a/packages/qemu/files/no-strip.patch b/packages/qemu/qemu-0.9.0+cvs20070613/no-strip.patch
index 59ed8771fe..59ed8771fe 100644
--- a/packages/qemu/files/no-strip.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/no-strip.patch
diff --git a/packages/qemu/files/pl110_rgb-r0.patch b/packages/qemu/qemu-0.9.0+cvs20070613/pl110_rgb-r0.patch
index 09e5898d3a..09e5898d3a 100644
--- a/packages/qemu/files/pl110_rgb-r0.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/pl110_rgb-r0.patch
diff --git a/packages/qemu/files/qemu-0.9.0-nptl-update.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-0.9.0-nptl-update.patch
index 869acba2cf..869acba2cf 100644
--- a/packages/qemu/files/qemu-0.9.0-nptl-update.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-0.9.0-nptl-update.patch
diff --git a/packages/qemu/files/qemu-0.9.0-nptl.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-0.9.0-nptl.patch
index fc7b0cfa4b..fc7b0cfa4b 100644
--- a/packages/qemu/files/qemu-0.9.0-nptl.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-0.9.0-nptl.patch
diff --git a/packages/qemu/files/qemu-amd64-32b-mapping-0.9.0.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-amd64-32b-mapping-0.9.0.patch
index d9303e3464..d9303e3464 100644
--- a/packages/qemu/files/qemu-amd64-32b-mapping-0.9.0.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-amd64-32b-mapping-0.9.0.patch
diff --git a/packages/qemu/files/qemu-pci-irq-sharing.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-pci-irq-sharing.patch
index c47e89895f..c47e89895f 100644
--- a/packages/qemu/files/qemu-pci-irq-sharing.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-pci-irq-sharing.patch
diff --git a/packages/qemu/files/qemu-sdl-cursor.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-sdl-cursor.patch
index bd6a51a1f5..bd6a51a1f5 100644
--- a/packages/qemu/files/qemu-sdl-cursor.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-sdl-cursor.patch
diff --git a/packages/qemu/files/qemu-usb-wacom-0.8.2.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-0.8.2.patch
index 33a6db3f18..33a6db3f18 100644
--- a/packages/qemu/files/qemu-usb-wacom-0.8.2.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-0.8.2.patch
diff --git a/packages/qemu/files/qemu-usb-wacom-buttons.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-buttons.patch
index ee24c15780..ee24c15780 100644
--- a/packages/qemu/files/qemu-usb-wacom-buttons.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-buttons.patch
diff --git a/packages/qemu/files/qemu-usb-wacom-pressure.patch b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-pressure.patch
index 668d50d5f2..668d50d5f2 100644
--- a/packages/qemu/files/qemu-usb-wacom-pressure.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/qemu-usb-wacom-pressure.patch
diff --git a/packages/qemu/files/workaround_bad_futex_headers.patch b/packages/qemu/qemu-0.9.0+cvs20070613/workaround_bad_futex_headers.patch
index cc122ebdba..cc122ebdba 100644
--- a/packages/qemu/files/workaround_bad_futex_headers.patch
+++ b/packages/qemu/qemu-0.9.0+cvs20070613/workaround_bad_futex_headers.patch
diff --git a/packages/qemu/qemu-0.9.0+cvs20070701/configure-0.9.0.patch b/packages/qemu/qemu-0.9.0+cvs20070701/configure-0.9.0.patch
deleted file mode 100644
index d92f6a8264..0000000000
--- a/packages/qemu/qemu-0.9.0+cvs20070701/configure-0.9.0.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naru qemu-snapshot-2007-06-24_05.orig/configure qemu-snapshot-2007-06-24_05/configure
---- qemu-snapshot-2007-06-24_05.orig/configure 2007-06-23 18:03:35.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/configure 2007-06-24 16:30:32.000000000 +0200
-@@ -711,7 +711,7 @@
- echo "CC=$cc" >> $config_mak
- echo "HOST_CC=$host_cc" >> $config_mak
- echo "AR=$ar" >> $config_mak
--echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
-+echo "STRIP=$strip" >> $config_mak
- echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
- echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
- echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
diff --git a/packages/qemu/qemu-0.9.0+cvs20070701/pl110_rgb-r0-0.9.0.patch b/packages/qemu/qemu-0.9.0+cvs20070701/pl110_rgb-r0-0.9.0.patch
deleted file mode 100644
index 3ad4115e73..0000000000
--- a/packages/qemu/qemu-0.9.0+cvs20070701/pl110_rgb-r0-0.9.0.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-diff -Naru qemu-neo1973.orig/hw/pl110.c qemu-neo1973/hw/pl110.c
---- qemu-neo1973.orig/hw/pl110.c 2007-06-24 13:56:37.000000000 +0200
-+++ qemu-neo1973/hw/pl110.c 2007-06-24 14:12:09.000000000 +0200
-@@ -10,6 +10,7 @@
- #include "vl.h"
-
- #define PL110_CR_EN 0x001
-+#define PL110_CR_BGR 0x100
- #define PL110_CR_BEBO 0x200
- #define PL110_CR_BEPO 0x400
- #define PL110_CR_PWR 0x800
-@@ -114,6 +115,7 @@
- int first, last = 0;
- int dirty, new_dirty;
- int i;
-+ int bpp_offset;
-
- if (!pl110_enabled(s))
- return;
-@@ -145,12 +147,17 @@
- fprintf(stderr, "pl110: Bad color depth\n");
- exit(1);
- }
-+ if (s->cr & PL110_CR_BGR)
-+ bpp_offset = 0;
-+ else
-+ bpp_offset = 18;
-+
- if (s->cr & PL110_CR_BEBO)
-- fn = fntable[s->bpp + 6];
-+ fn = fntable[s->bpp + 6 + bpp_offset];
- else if (s->cr & PL110_CR_BEPO)
-- fn = fntable[s->bpp + 12];
-+ fn = fntable[s->bpp + 12 + bpp_offset];
- else
-- fn = fntable[s->bpp];
-+ fn = fntable[s->bpp + bpp_offset];
-
- src_width = s->cols;
- switch (s->bpp) {
-diff -Naru qemu-neo1973.orig/hw/pl110_template.h qemu-neo1973/hw/pl110_template.h
---- qemu-neo1973.orig/hw/pl110_template.h 2007-06-24 13:56:37.000000000 +0200
-+++ qemu-neo1973/hw/pl110_template.h 2007-06-24 14:12:09.000000000 +0200
-@@ -24,6 +24,16 @@
- #error unknown bit depth
- #endif
-
-+#undef RGB
-+#define BORDER bgr
-+#define ORDER 0
-+#include "pl110_template.h"
-+#define ORDER 1
-+#include "pl110_template.h"
-+#define ORDER 2
-+#include "pl110_template.h"
-+#define RGB
-+#define BORDER rgb
- #define ORDER 0
- #include "pl110_template.h"
- #define ORDER 1
-@@ -33,26 +43,47 @@
-
- static drawfn glue(pl110_draw_fn_,BITS)[18] =
- {
-- glue(pl110_draw_line1_lblp,BITS),
-- glue(pl110_draw_line2_lblp,BITS),
-- glue(pl110_draw_line4_lblp,BITS),
-- glue(pl110_draw_line8_lblp,BITS),
-- glue(pl110_draw_line16_lblp,BITS),
-- glue(pl110_draw_line32_lblp,BITS),
--
-- glue(pl110_draw_line1_bbbp,BITS),
-- glue(pl110_draw_line2_bbbp,BITS),
-- glue(pl110_draw_line4_bbbp,BITS),
-- glue(pl110_draw_line8_bbbp,BITS),
-- glue(pl110_draw_line16_bbbp,BITS),
-- glue(pl110_draw_line32_bbbp,BITS),
--
-- glue(pl110_draw_line1_lbbp,BITS),
-- glue(pl110_draw_line2_lbbp,BITS),
-- glue(pl110_draw_line4_lbbp,BITS),
-- glue(pl110_draw_line8_lbbp,BITS),
-- glue(pl110_draw_line16_lbbp,BITS),
-- glue(pl110_draw_line32_lbbp,BITS)
-+ glue(pl110_draw_line1_lblp_bgr,BITS),
-+ glue(pl110_draw_line2_lblp_bgr,BITS),
-+ glue(pl110_draw_line4_lblp_bgr,BITS),
-+ glue(pl110_draw_line8_lblp_bgr,BITS),
-+ glue(pl110_draw_line16_lblp_bgr,BITS),
-+ glue(pl110_draw_line32_lblp_bgr,BITS),
-+
-+ glue(pl110_draw_line1_bbbp_bgr,BITS),
-+ glue(pl110_draw_line2_bbbp_bgr,BITS),
-+ glue(pl110_draw_line4_bbbp_bgr,BITS),
-+ glue(pl110_draw_line8_bbbp_bgr,BITS),
-+ glue(pl110_draw_line16_bbbp_bgr,BITS),
-+ glue(pl110_draw_line32_bbbp_bgr,BITS),
-+
-+ glue(pl110_draw_line1_lbbp_bgr,BITS),
-+ glue(pl110_draw_line2_lbbp_bgr,BITS),
-+ glue(pl110_draw_line4_lbbp_bgr,BITS),
-+ glue(pl110_draw_line8_lbbp_bgr,BITS),
-+ glue(pl110_draw_line16_lbbp_bgr,BITS),
-+ glue(pl110_draw_line32_lbbp_bgr,BITS),
-+
-+ glue(pl110_draw_line1_lblp_rgb,BITS),
-+ glue(pl110_draw_line2_lblp_rgb,BITS),
-+ glue(pl110_draw_line4_lblp_rgb,BITS),
-+ glue(pl110_draw_line8_lblp_rgb,BITS),
-+ glue(pl110_draw_line16_lblp_rgb,BITS),
-+ glue(pl110_draw_line32_lblp_rgb,BITS),
-+
-+ glue(pl110_draw_line1_bbbp_rgb,BITS),
-+ glue(pl110_draw_line2_bbbp_rgb,BITS),
-+ glue(pl110_draw_line4_bbbp_rgb,BITS),
-+ glue(pl110_draw_line8_bbbp_rgb,BITS),
-+ glue(pl110_draw_line16_bbbp_rgb,BITS),
-+ glue(pl110_draw_line32_bbbp_rgb,BITS),
-+
-+ glue(pl110_draw_line1_lbbp_rgb,BITS),
-+ glue(pl110_draw_line2_lbbp_rgb,BITS),
-+ glue(pl110_draw_line4_lbbp_rgb,BITS),
-+ glue(pl110_draw_line8_lbbp_rgb,BITS),
-+ glue(pl110_draw_line16_lbbp_rgb,BITS),
-+ glue(pl110_draw_line32_lbbp_rgb,BITS),
- };
-
- #undef BITS
-@@ -61,18 +92,18 @@
- #else
-
- #if ORDER == 0
--#define NAME glue(lblp, BITS)
-+#define NAME glue(glue(lblp_, BORDER), BITS)
- #ifdef WORDS_BIGENDIAN
- #define SWAP_WORDS 1
- #endif
- #elif ORDER == 1
--#define NAME glue(bbbp, BITS)
-+#define NAME glue(glue(bbbp_, BORDER), BITS)
- #ifndef WORDS_BIGENDIAN
- #define SWAP_WORDS 1
- #endif
- #else
- #define SWAP_PIXELS 1
--#define NAME glue(lbbp, BITS)
-+#define NAME glue(glue(lbbp_, BORDER), BITS)
- #ifdef WORDS_BIGENDIAN
- #define SWAP_WORDS 1
- #endif
-@@ -195,27 +226,34 @@
- #ifdef SWAP_WORDS
- data = bswap32(data);
- #endif
-+#ifdef RGB
-+#define LSB r
-+#define MSB b
-+#else
-+#define LSB b
-+#define MSB r
-+#endif
- #if 0
-- r = data & 0x1f;
-+ LSB = data & 0x1f;
- data >>= 5;
- g = data & 0x3f;
- data >>= 6;
-- b = data & 0x1f;
-+ MSB = data & 0x1f;
- data >>= 5;
- #else
-- r = (data & 0x1f) << 3;
-+ LSB = (data & 0x1f) << 3;
- data >>= 5;
- g = (data & 0x3f) << 2;
- data >>= 6;
-- b = (data & 0x1f) << 3;
-+ MSB = (data & 0x1f) << 3;
- data >>= 5;
- #endif
- COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b));
-- r = (data & 0x1f) << 3;
-+ LSB = (data & 0x1f) << 3;
- data >>= 5;
- g = (data & 0x3f) << 2;
- data >>= 6;
-- b = (data & 0x1f) << 3;
-+ MSB = (data & 0x1f) << 3;
- data >>= 5;
- COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b));
- width -= 2;
-@@ -229,14 +267,21 @@
- unsigned int r, g, b;
- while (width > 0) {
- data = *(uint32_t *)src;
-+#ifdef RGB
-+#define LSB r
-+#define MSB b
-+#else
-+#define LSB b
-+#define MSB r
-+#endif
- #ifdef SWAP_WORDS
-- r = data & 0xff;
-+ LSB = data & 0xff;
- g = (data >> 8) & 0xff;
-- b = (data >> 16) & 0xff;
-+ MSB = (data >> 16) & 0xff;
- #else
-- r = (data >> 24) & 0xff;
-+ LSB = (data >> 24) & 0xff;
- g = (data >> 16) & 0xff;
-- b = (data >> 8) & 0xff;
-+ MSB = (data >> 8) & 0xff;
- #endif
- COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b));
- width--;
diff --git a/packages/qemu/qemu-0.9.0+cvs20070701/qemu-0.9.0-gcc4.patch b/packages/qemu/qemu-0.9.0+cvs20070701/qemu-0.9.0-gcc4.patch
deleted file mode 100644
index 189cd09b67..0000000000
--- a/packages/qemu/qemu-0.9.0+cvs20070701/qemu-0.9.0-gcc4.patch
+++ /dev/null
@@ -1,881 +0,0 @@
-diff -Naru qemu-neo1973.orig/dyngen.c qemu-neo1973/dyngen.c
---- qemu-neo1973.orig/dyngen.c 2007-06-24 13:56:38.000000000 +0200
-+++ qemu-neo1973/dyngen.c 2007-06-24 14:33:11.000000000 +0200
-@@ -32,6 +32,8 @@
-
- #include "config-host.h"
-
-+//#define DEBUG_OP
-+
- /* NOTE: we test CONFIG_WIN32 instead of _WIN32 to enabled cross
- compilation */
- #if defined(CONFIG_WIN32)
-@@ -1429,6 +1431,644 @@
- #endif
-
-
-+#if defined(HOST_I386) || defined(HOST_X86_64)
-+
-+/* This byte is the first byte of an instruction. */
-+#define FLAG_INSN (1 << 0)
-+/* This byte has been processed as part of an instruction. */
-+#define FLAG_SCANNED (1 << 1)
-+/* This instruction is a return instruction. Gcc cometimes generates prefix
-+ bytes, so may be more than one byte long. */
-+#define FLAG_RET (1 << 2)
-+/* This is either the target of a jump, or the preceeding instruction uses
-+ a pc-relative offset. */
-+#define FLAG_TARGET (1 << 3)
-+/* This is a magic instruction that needs fixing up. */
-+#define FLAG_EXIT (1 << 4)
-+#define MAX_EXITS 5
-+
-+static void
-+bad_opcode(const char *name, uint32_t op)
-+{
-+ error("Unsupported opcode %0*x in %s", (op > 0xff) ? 4 : 2, op, name);
-+}
-+
-+/* Mark len bytes as scanned, Returns insn_size + len. Reports an error
-+ if these bytes have already been scanned. */
-+static int
-+eat_bytes(const char *name, char *flags, int insn, int insn_size, int len)
-+{
-+ while (len > 0) {
-+ /* This should never occur in sane code. */
-+ if (flags[insn + insn_size] & FLAG_SCANNED)
-+ error ("Overlapping instructions in %s", name);
-+ flags[insn + insn_size] |= FLAG_SCANNED;
-+ insn_size++;
-+ len--;
-+ }
-+ return insn_size;
-+}
-+
-+static void
-+trace_i386_insn (const char *name, uint8_t *start_p, char *flags, int insn,
-+ int len)
-+{
-+ uint8_t *ptr;
-+ uint8_t op;
-+ int modrm;
-+ int is_prefix;
-+ int op_size;
-+ int addr_size;
-+ int insn_size;
-+ int is_ret;
-+ int is_condjmp;
-+ int is_jmp;
-+ int is_exit;
-+ int is_pcrel;
-+ int immed;
-+ int seen_rexw;
-+ int32_t disp;
-+
-+ ptr = start_p + insn;
-+ /* nonzero if this insn has a ModR/M byte. */
-+ modrm = 1;
-+ /* The size of the immediate value in this instruction. */
-+ immed = 0;
-+ /* The operand size. */
-+ op_size = 4;
-+ /* The address size */
-+ addr_size = 4;
-+ /* The total length of this instruction. */
-+ insn_size = 0;
-+ is_prefix = 1;
-+ is_ret = 0;
-+ is_condjmp = 0;
-+ is_jmp = 0;
-+ is_exit = 0;
-+ seen_rexw = 0;
-+ is_pcrel = 0;
-+
-+ while (is_prefix) {
-+ op = ptr[insn_size];
-+ insn_size = eat_bytes(name, flags, insn, insn_size, 1);
-+ is_prefix = 0;
-+ switch (op >> 4) {
-+ case 0:
-+ case 1:
-+ case 2:
-+ case 3:
-+ if (op == 0x0f) {
-+ /* two-byte opcode. */
-+ op = ptr[insn_size];
-+ insn_size = eat_bytes(name, flags, insn, insn_size, 1);
-+ switch (op >> 4) {
-+ case 0:
-+ if ((op & 0xf) > 3)
-+ modrm = 0;
-+ break;
-+ case 1: /* vector move or prefetch */
-+ case 2: /* various moves and vector compares. */
-+ case 4: /* cmov */
-+ case 5: /* vector instructions */
-+ case 6:
-+ case 13:
-+ case 14:
-+ case 15:
-+ break;
-+ case 7: /* mmx */
-+ if (op & 0x77) /* emms */
-+ modrm = 0;
-+ break;
-+ case 3: /* wrmsr, rdtsc, rdmsr, rdpmc, sysenter, sysexit */
-+ modrm = 0;
-+ break;
-+ case 8: /* long conditional jump */
-+ is_condjmp = 1;
-+ immed = op_size;
-+ modrm = 0;
-+ break;
-+ case 9: /* setcc */
-+ break;
-+ case 10:
-+ switch (op & 0x7) {
-+ case 0: /* push fs/gs */
-+ case 1: /* pop fs/gs */
-+ case 2: /* cpuid/rsm */
-+ modrm = 0;
-+ break;
-+ case 4: /* shld/shrd immediate */
-+ immed = 1;
-+ break;
-+ default: /* Normal instructions with a ModR/M byte. */
-+ break;
-+ }
-+ break;
-+ case 11:
-+ switch (op & 0xf) {
-+ case 10: /* bt, bts, btr, btc */
-+ immed = 1;
-+ break;
-+ default:
-+ /* cmpxchg, lss, btr, lfs, lgs, movzx, btc, bsf, bsr
-+ undefined, and movsx */
-+ break;
-+ }
-+ break;
-+ case 12:
-+ if (op & 8) {
-+ /* bswap */
-+ modrm = 0;
-+ } else {
-+ switch (op & 0x7) {
-+ case 2:
-+ case 4:
-+ case 5:
-+ case 6:
-+ immed = 1;
-+ break;
-+ default:
-+ break;
-+ }
-+ }
-+ break;
-+ }
-+ } else if ((op & 0x07) <= 0x3) {
-+ /* General arithmentic ax. */
-+ } else if ((op & 0x07) <= 0x5) {
-+ /* General arithmetic ax, immediate. */
-+ if (op & 0x01)
-+ immed = op_size;
-+ else
-+ immed = 1;
-+ modrm = 0;
-+ } else if ((op & 0x23) == 0x22) {
-+ /* Segment prefix. */
-+ is_prefix = 1;
-+ } else {
-+ /* Segment register push/pop or DAA/AAA/DAS/AAS. */
-+ modrm = 0;
-+ }
-+ break;
-+
-+#if defined(HOST_X86_64)
-+ case 4: /* rex prefix. */
-+ is_prefix = 1;
-+ /* The address/operand size is actually 64-bit, but the immediate
-+ values in the instruction are still 32-bit. */
-+ op_size = 4;
-+ addr_size = 4;
-+ if (op & 8)
-+ seen_rexw = 1;
-+ break;
-+#else
-+ case 4: /* inc/dec register. */
-+#endif
-+ case 5: /* push/pop general register. */
-+ modrm = 0;
-+ break;
-+
-+ case 6:
-+ switch (op & 0x0f) {
-+ case 0: /* pusha */
-+ case 1: /* popa */
-+ modrm = 0;
-+ break;
-+ case 2: /* bound */
-+ case 3: /* arpl */
-+ break;
-+ case 4: /* FS */
-+ case 5: /* GS */
-+ is_prefix = 1;
-+ break;
-+ case 6: /* opcode size prefix. */
-+ op_size = 2;
-+ is_prefix = 1;
-+ break;
-+ case 7: /* Address size prefix. */
-+ addr_size = 2;
-+ is_prefix = 1;
-+ break;
-+ case 8: /* push immediate */
-+ immed = op_size;
-+ modrm = 0;
-+ break;
-+ case 10: /* push 8-bit immediate */
-+ immed = 1;
-+ modrm = 0;
-+ break;
-+ case 9: /* imul immediate */
-+ immed = op_size;
-+ break;
-+ case 11: /* imul 8-bit immediate */
-+ immed = 1;
-+ break;
-+ case 12: /* insb */
-+ case 13: /* insw */
-+ case 14: /* outsb */
-+ case 15: /* outsw */
-+ modrm = 0;
-+ break;
-+ }
-+ break;
-+
-+ case 7: /* Short conditional jump. */
-+ is_condjmp = 1;
-+ immed = 1;
-+ modrm = 0;
-+ break;
-+
-+ case 8:
-+ if ((op & 0xf) <= 3) {
-+ /* arithmetic immediate. */
-+ if ((op & 3) == 1)
-+ immed = op_size;
-+ else
-+ immed = 1;
-+ }
-+ /* else test, xchg, mov, lea or pop general. */
-+ break;
-+
-+ case 9:
-+ /* Various single-byte opcodes with no modrm byte. */
-+ modrm = 0;
-+ if (op == 10) {
-+ /* Call */
-+ immed = 4;
-+ }
-+ break;
-+
-+ case 10:
-+ switch ((op & 0xe) >> 1) {
-+ case 0: /* mov absoliute immediate. */
-+ case 1:
-+ if (seen_rexw)
-+ immed = 8;
-+ else
-+ immed = addr_size;
-+ break;
-+ case 4: /* test immediate. */
-+ if (op & 1)
-+ immed = op_size;
-+ else
-+ immed = 1;
-+ break;
-+ default: /* Various string ops. */
-+ break;
-+ }
-+ modrm = 0;
-+ break;
-+
-+ case 11: /* move immediate to register */
-+ if (op & 8) {
-+ if (seen_rexw)
-+ immed = 8;
-+ else
-+ immed = op_size;
-+ } else {
-+ immed = 1;
-+ }
-+ modrm = 0;
-+ break;
-+
-+ case 12:
-+ switch (op & 0xf) {
-+ case 0: /* shift immediate */
-+ case 1:
-+ immed = 1;
-+ break;
-+ case 2: /* ret immediate */
-+ immed = 2;
-+ modrm = 0;
-+ bad_opcode(name, op);
-+ break;
-+ case 3: /* ret */
-+ modrm = 0;
-+ is_ret = 1;
-+ case 4: /* les */
-+ case 5: /* lds */
-+ break;
-+ case 6: /* mov immediate byte */
-+ immed = 1;
-+ break;
-+ case 7: /* mov immediate */
-+ immed = op_size;
-+ break;
-+ case 8: /* enter */
-+ /* TODO: Is this right? */
-+ immed = 3;
-+ modrm = 0;
-+ break;
-+ case 10: /* retf immediate */
-+ immed = 2;
-+ modrm = 0;
-+ bad_opcode(name, op);
-+ break;
-+ case 13: /* int */
-+ immed = 1;
-+ modrm = 0;
-+ break;
-+ case 11: /* retf */
-+ case 15: /* iret */
-+ modrm = 0;
-+ bad_opcode(name, op);
-+ break;
-+ default: /* leave, int3 or into */
-+ modrm = 0;
-+ break;
-+ }
-+ break;
-+
-+ case 13:
-+ if ((op & 0xf) >= 8) {
-+ /* Coprocessor escape. For our purposes this is just a normal
-+ instruction with a ModR/M byte. */
-+ } else if ((op & 0xf) >= 4) {
-+ /* AAM, AAD or XLAT */
-+ modrm = 0;
-+ }
-+ /* else shift instruction */
-+ break;
-+
-+ case 14:
-+ switch ((op & 0xc) >> 2) {
-+ case 0: /* loop or jcxz */
-+ is_condjmp = 1;
-+ immed = 1;
-+ break;
-+ case 1: /* in/out immed */
-+ immed = 1;
-+ break;
-+ case 2: /* call or jmp */
-+ switch (op & 3) {
-+ case 0: /* call */
-+ immed = op_size;
-+ break;
-+ case 1: /* long jump */
-+ immed = 4;
-+ is_jmp = 1;
-+ break;
-+ case 2: /* far jmp */
-+ bad_opcode(name, op);
-+ break;
-+ case 3: /* short jmp */
-+ immed = 1;
-+ is_jmp = 1;
-+ break;
-+ }
-+ break;
-+ case 3: /* in/out register */
-+ break;
-+ }
-+ modrm = 0;
-+ break;
-+
-+ case 15:
-+ switch ((op & 0xe) >> 1) {
-+ case 0:
-+ case 1:
-+ is_prefix = 1;
-+ break;
-+ case 2:
-+ case 4:
-+ case 5:
-+ case 6:
-+ modrm = 0;
-+ /* Some privileged insns are used as markers. */
-+ switch (op) {
-+ case 0xf4: /* hlt: Exit translation block. */
-+ is_exit = 1;
-+ break;
-+ case 0xfa: /* cli: Jump to label. */
-+ is_exit = 1;
-+ immed = 4;
-+ break;
-+ case 0xfb: /* sti: TB patch jump. */
-+ /* Mark the insn for patching, but continue sscanning. */
-+ flags[insn] |= FLAG_EXIT;
-+ immed = 4;
-+ break;
-+ }
-+ break;
-+ case 3: /* unary grp3 */
-+ if ((ptr[insn_size] & 0x38) == 0) {
-+ if (op == 0xf7)
-+ immed = op_size;
-+ else
-+ immed = 1; /* test immediate */
-+ }
-+ break;
-+ case 7: /* inc/dec grp4/5 */
-+ /* TODO: This includes indirect jumps. We should fail if we
-+ encounter one of these. */
-+ break;
-+ }
-+ break;
-+ }
-+ }
-+
-+ if (modrm) {
-+ if (addr_size != 4)
-+ error("16-bit addressing mode used in %s", name);
-+
-+ disp = 0;
-+ modrm = ptr[insn_size];
-+ insn_size = eat_bytes(name, flags, insn, insn_size, 1);
-+ modrm &= 0xc7;
-+ switch ((modrm & 0xc0) >> 6) {
-+ case 0:
-+ if (modrm == 5)
-+ disp = 4;
-+ break;
-+ case 1:
-+ disp = 1;
-+ break;
-+ case 2:
-+ disp = 4;
-+ break;
-+ }
-+ if ((modrm & 0xc0) != 0xc0 && (modrm & 0x7) == 4) {
-+ /* SIB byte */
-+ if (modrm == 4 && (ptr[insn_size] & 0x7) == 5) {
-+ disp = 4;
-+ is_pcrel = 1;
-+ }
-+ insn_size = eat_bytes(name, flags, insn, insn_size, 1);
-+ }
-+ insn_size = eat_bytes(name, flags, insn, insn_size, disp);
-+ }
-+ insn_size = eat_bytes(name, flags, insn, insn_size, immed);
-+ if (is_condjmp || is_jmp) {
-+ if (immed == 1) {
-+ disp = (int8_t)*(ptr + insn_size - 1);
-+ } else {
-+ disp = (((int32_t)*(ptr + insn_size - 1)) << 24)
-+ | (((int32_t)*(ptr + insn_size - 2)) << 16)
-+ | (((int32_t)*(ptr + insn_size - 3)) << 8)
-+ | *(ptr + insn_size - 4);
-+ }
-+ disp += insn_size;
-+ /* Jumps to external symbols point to the address of the offset
-+ before relocation. */
-+ /* ??? These are probably a tailcall. We could fix them up by
-+ replacing them with jmp to EOB + call, but it's easier to just
-+ prevent the compiler generating them. */
-+ if (disp == 1)
-+ error("Unconditional jump (sibcall?) in %s", name);
-+ disp += insn;
-+ if (disp < 0 || disp > len)
-+ error("Jump outside instruction in %s", name);
-+
-+ if ((flags[disp] & (FLAG_INSN | FLAG_SCANNED)) == FLAG_SCANNED)
-+ error("Overlapping instructions in %s", name);
-+
-+ flags[disp] |= (FLAG_INSN | FLAG_TARGET);
-+ is_pcrel = 1;
-+ }
-+ if (is_pcrel) {
-+ /* Mark the following insn as a jump target. This will stop
-+ this instruction being moved. */
-+ flags[insn + insn_size] |= FLAG_TARGET;
-+ }
-+ if (is_ret)
-+ flags[insn] |= FLAG_RET;
-+
-+ if (is_exit)
-+ flags[insn] |= FLAG_EXIT;
-+
-+ if (!(is_jmp || is_ret || is_exit))
-+ flags[insn + insn_size] |= FLAG_INSN;
-+}
-+
-+/* Scan a function body. Returns the position of the return sequence.
-+ Sets *patch_bytes to the number of bytes that need to be copied from that
-+ location. If no patching is required (ie. the return is the last insn)
-+ *patch_bytes will be set to -1. *plen is the number of code bytes to copy.
-+ */
-+static int trace_i386_op(const char * name, uint8_t *start_p, int *plen,
-+ int *patch_bytes, int *exit_addrs)
-+{
-+ char *flags;
-+ int more;
-+ int insn;
-+ int retpos;
-+ int bytes;
-+ int num_exits;
-+ int len;
-+ int last_insn;
-+
-+ len = *plen;
-+ flags = malloc(len + 1);
-+ memset(flags, 0, len + 1);
-+ flags[0] |= FLAG_INSN;
-+ more = 1;
-+ while (more) {
-+ more = 0;
-+ for (insn = 0; insn < len; insn++) {
-+ if ((flags[insn] & (FLAG_INSN | FLAG_SCANNED)) == FLAG_INSN) {
-+ trace_i386_insn(name, start_p, flags, insn, len);
-+ more = 1;
-+ }
-+ }
-+ }
-+
-+ /* Strip any unused code at the end of the function. */
-+ while (len > 0 && flags[len - 1] == 0)
-+ len--;
-+
-+ retpos = -1;
-+ num_exits = 0;
-+ last_insn = 0;
-+ for (insn = 0; insn < len; insn++) {
-+ if (flags[insn] & FLAG_RET) {
-+ /* ??? In theory it should be possible to handle multiple return
-+ points. In practice it's not worth the effort. */
-+ if (retpos != -1)
-+ error("Multiple return instructions in %s", name);
-+ retpos = insn;
-+ }
-+ if (flags[insn] & FLAG_EXIT) {
-+ if (num_exits == MAX_EXITS)
-+ error("Too many block exits in %s", name);
-+ exit_addrs[num_exits] = insn;
-+ num_exits++;
-+ }
-+ if (flags[insn] & FLAG_INSN)
-+ last_insn = insn;
-+ }
-+
-+ exit_addrs[num_exits] = -1;
-+ if (retpos == -1) {
-+ if (num_exits == 0) {
-+ error ("No return instruction found in %s", name);
-+ } else {
-+ retpos = len;
-+ last_insn = len;
-+ }
-+ }
-+
-+ /* If the return instruction is the last instruction we can just
-+ remove it. */
-+ if (retpos == last_insn)
-+ *patch_bytes = -1;
-+ else
-+ *patch_bytes = 0;
-+
-+ /* Back up over any nop instructions. */
-+ while (retpos > 0
-+ && (flags[retpos] & FLAG_TARGET) == 0
-+ && (flags[retpos - 1] & FLAG_INSN) != 0
-+ && start_p[retpos - 1] == 0x90) {
-+ retpos--;
-+ }
-+
-+ if (*patch_bytes == -1) {
-+ *plen = retpos;
-+ free (flags);
-+ return retpos;
-+ }
-+ *plen = len;
-+
-+ /* The ret is in the middle of the function. Find four more bytes that
-+ so the ret can be replaced by a jmp. */
-+ /* ??? Use a short jump where possible. */
-+ bytes = 4;
-+ insn = retpos + 1;
-+ /* We can clobber everything up to the next jump target. */
-+ while (insn < len && bytes > 0 && (flags[insn] & FLAG_TARGET) == 0) {
-+ insn++;
-+ bytes--;
-+ }
-+ if (bytes > 0) {
-+ /* ???: Strip out nop blocks. */
-+ /* We can't do the replacement without clobbering anything important.
-+ Copy preceeding instructions(s) to give us some space. */
-+ while (retpos > 0) {
-+ /* If this byte is the target of a jmp we can't move it. */
-+ if (flags[retpos] & FLAG_TARGET)
-+ break;
-+
-+ (*patch_bytes)++;
-+ bytes--;
-+ retpos--;
-+
-+ /* Break out of the loop if we have enough space and this is either
-+ the first byte of an instruction or a pad byte. */
-+ if ((flags[retpos] & (FLAG_INSN | FLAG_SCANNED)) != FLAG_SCANNED
-+ && bytes <= 0) {
-+ break;
-+ }
-+ }
-+ }
-+
-+ if (bytes > 0)
-+ error("Unable to replace ret with jmp in %s\n", name);
-+
-+ free(flags);
-+ return retpos;
-+}
-+
-+#endif
-+
- #define MAX_ARGS 3
-
- /* generate op code */
-@@ -1442,6 +2082,11 @@
- uint8_t args_present[MAX_ARGS];
- const char *sym_name, *p;
- EXE_RELOC *rel;
-+#if defined(HOST_I386) || defined(HOST_X86_64)
-+ int patch_bytes;
-+ int retpos;
-+ int exit_addrs[MAX_EXITS];
-+#endif
-
- /* Compute exact size excluding prologue and epilogue instructions.
- * Increment start_offset to skip epilogue instructions, then compute
-@@ -1452,33 +2097,12 @@
- p_end = p_start + size;
- start_offset = offset;
- #if defined(HOST_I386) || defined(HOST_X86_64)
--#ifdef CONFIG_FORMAT_COFF
-- {
-- uint8_t *p;
-- p = p_end - 1;
-- if (p == p_start)
-- error("empty code for %s", name);
-- while (*p != 0xc3) {
-- p--;
-- if (p <= p_start)
-- error("ret or jmp expected at the end of %s", name);
-- }
-- copy_size = p - p_start;
-- }
--#else
- {
- int len;
- len = p_end - p_start;
-- if (len == 0)
-- error("empty code for %s", name);
-- if (p_end[-1] == 0xc3) {
-- len--;
-- } else {
-- error("ret or jmp expected at the end of %s", name);
-- }
-+ retpos = trace_i386_op(name, p_start, &len, &patch_bytes, exit_addrs);
- copy_size = len;
- }
--#endif
- #elif defined(HOST_PPC)
- {
- uint8_t *p;
-@@ -1710,6 +2334,13 @@
- }
-
- if (gen_switch == 2) {
-+#if defined(HOST_I386) || defined(HOST_X86_64)
-+ if (patch_bytes != -1)
-+ copy_size += patch_bytes;
-+#ifdef DEBUG_OP
-+ copy_size += 2;
-+#endif
-+#endif
- fprintf(outfile, "DEF(%s, %d, %d)\n", name + 3, nb_args, copy_size);
- } else if (gen_switch == 1) {
-
-@@ -1915,7 +2546,43 @@
- #error unsupport object format
- #endif
- }
-+ }
-+ /* Replace the marker instructions with the actual opcodes. */
-+ for (i = 0; exit_addrs[i] != -1; i++) {
-+ int op;
-+ switch (p_start[exit_addrs[i]])
-+ {
-+ case 0xf4: op = 0xc3; break; /* hlt -> ret */
-+ case 0xfa: op = 0xe9; break; /* cli -> jmp */
-+ case 0xfb: op = 0xe9; break; /* sti -> jmp */
-+ default: error("Internal error");
-+ }
-+ fprintf(outfile,
-+ " *(uint8_t *)(gen_code_ptr + %d) = 0x%x;\n",
-+ exit_addrs[i], op);
- }
-+ /* Fix up the return instruction. */
-+ if (patch_bytes != -1) {
-+ if (patch_bytes) {
-+ fprintf(outfile, " memcpy(gen_code_ptr + %d,"
-+ "gen_code_ptr + %d, %d);\n",
-+ copy_size, retpos, patch_bytes);
-+ }
-+ fprintf(outfile,
-+ " *(uint8_t *)(gen_code_ptr + %d) = 0xe9;\n",
-+ retpos);
-+ fprintf(outfile,
-+ " *(uint32_t *)(gen_code_ptr + %d) = 0x%x;\n",
-+ retpos + 1, copy_size - (retpos + 5));
-+
-+ copy_size += patch_bytes;
-+ }
-+#ifdef DEBUG_OP
-+ fprintf(outfile,
-+ " *(uint16_t *)(gen_code_ptr + %d) = 0x9090;\n",
-+ copy_size);
-+ copy_size += 2;
-+#endif
- }
- #elif defined(HOST_X86_64)
- {
-@@ -1949,6 +2616,42 @@
- }
- }
- }
-+ /* Replace the marker instructions with the actual opcodes. */
-+ for (i = 0; exit_addrs[i] != -1; i++) {
-+ int op;
-+ switch (p_start[exit_addrs[i]])
-+ {
-+ case 0xf4: op = 0xc3; break; /* hlt -> ret */
-+ case 0xfa: op = 0xe9; break; /* cli -> jmp */
-+ case 0xfb: op = 0xe9; break; /* sti -> jmp */
-+ default: error("Internal error");
-+ }
-+ fprintf(outfile,
-+ " *(uint8_t *)(gen_code_ptr + %d) = 0x%x;\n",
-+ exit_addrs[i], op);
-+ }
-+ /* Fix up the return instruction. */
-+ if (patch_bytes != -1) {
-+ if (patch_bytes) {
-+ fprintf(outfile, " memcpy(gen_code_ptr + %d,"
-+ "gen_code_ptr + %d, %d);\n",
-+ copy_size, retpos, patch_bytes);
-+ }
-+ fprintf(outfile,
-+ " *(uint8_t *)(gen_code_ptr + %d) = 0xe9;\n",
-+ retpos);
-+ fprintf(outfile,
-+ " *(uint32_t *)(gen_code_ptr + %d) = 0x%x;\n",
-+ retpos + 1, copy_size - (retpos + 5));
-+
-+ copy_size += patch_bytes;
-+ }
-+#ifdef DEBUG_OP
-+ fprintf(outfile,
-+ " *(uint16_t *)(gen_code_ptr + %d) = 0x9090;\n",
-+ copy_size);
-+ copy_size += 2;
-+#endif
- }
- #elif defined(HOST_PPC)
- {
-diff -Naru qemu-neo1973.orig/dyngen-exec.h qemu-neo1973/dyngen-exec.h
---- qemu-neo1973.orig/dyngen-exec.h 2007-06-24 13:56:38.000000000 +0200
-+++ qemu-neo1973/dyngen-exec.h 2007-06-24 14:35:52.000000000 +0200
-@@ -194,7 +194,12 @@
- #endif
-
- /* force GCC to generate only one epilog at the end of the function */
-+#if defined(__i386__) || defined(__x86_64__)
-+/* Also add 4 bytes of padding so that we can replace the ret with a jmp. */
-+#define FORCE_RET() asm volatile ("nop;nop;nop;nop");
-+#else
- #define FORCE_RET() __asm__ __volatile__("" : : : "memory");
-+#endif
-
- #ifndef OPPROTO
- #define OPPROTO
-@@ -244,11 +249,18 @@
- #endif
-
- #if defined(__i386__)
--#define EXIT_TB() asm volatile ("ret")
--#define GOTO_LABEL_PARAM(n) asm volatile ("jmp " ASM_NAME(__op_gen_label) #n)
-+/* Dyngen will replace hlt instructions with a ret instruction. Inserting a
-+ ret directly would confuse dyngen. */
-+#define EXIT_TB() asm volatile ("hlt")
-+/* Dyngen will replace cli with 0x9e (jmp).
-+ We generate the offset manually. */
-+#define GOTO_LABEL_PARAM(n) \
-+ asm volatile ("cli;.long " ASM_NAME(__op_gen_label) #n " - 1f;1:")
- #elif defined(__x86_64__)
--#define EXIT_TB() asm volatile ("ret")
--#define GOTO_LABEL_PARAM(n) asm volatile ("jmp " ASM_NAME(__op_gen_label) #n)
-+/* The same as i386. */
-+#define EXIT_TB() asm volatile ("hlt")
-+#define GOTO_LABEL_PARAM(n) \
-+ asm volatile ("cli;.long " ASM_NAME(__op_gen_label) #n " - 1f;1:")
- #elif defined(__powerpc__)
- #define EXIT_TB() asm volatile ("blr")
- #define GOTO_LABEL_PARAM(n) asm volatile ("b " ASM_NAME(__op_gen_label) #n)
-diff -Naru qemu-neo1973.orig/exec-all.h qemu-neo1973/exec-all.h
---- qemu-neo1973.orig/exec-all.h 2007-06-24 14:31:58.000000000 +0200
-+++ qemu-neo1973/exec-all.h 2007-06-24 14:33:11.000000000 +0200
-@@ -329,14 +329,15 @@
-
- #elif defined(__i386__) && defined(USE_DIRECT_JUMP)
-
--/* we patch the jump instruction directly */
-+/* we patch the jump instruction directly. Use sti in place of the actual
-+ jmp instruction so that dyngen can patch in the correct result. */
- #define GOTO_TB(opname, tbparam, n)\
- do {\
- asm volatile (".section .data\n"\
- ASM_OP_LABEL_NAME(n, opname) ":\n"\
- ".long 1f\n"\
- ASM_PREVIOUS_SECTION \
-- "jmp " ASM_NAME(__op_jmp) #n "\n"\
-+ "sti;.long " ASM_NAME(__op_jmp) #n " - 1f\n"\
- "1:\n");\
- } while (0)
-
-diff -Naru qemu-neo1973.orig/target-ppc/exec.h qemu-neo1973/target-ppc/exec.h
---- qemu-neo1973.orig/target-ppc/exec.h 2007-06-24 13:56:32.000000000 +0200
-+++ qemu-neo1973/target-ppc/exec.h 2007-06-24 14:33:11.000000000 +0200
-@@ -66,11 +66,7 @@
- #define FT1 (env->ft1)
- #define FT2 (env->ft2)
-
--#if defined (DEBUG_OP)
--# define RETURN() __asm__ __volatile__("nop" : : : "memory");
--#else
--# define RETURN() __asm__ __volatile__("" : : : "memory");
--#endif
-+#define RETURN() FORCE_RET()
-
- static inline target_ulong rotl8 (target_ulong i, int n)
- {
diff --git a/packages/qemu/qemu-0.9.0+cvs20070701/qemu-amd64-32b-mapping-0.9.0.patch b/packages/qemu/qemu-0.9.0+cvs20070701/qemu-amd64-32b-mapping-0.9.0.patch
deleted file mode 100644
index 8f5e9d8b4b..0000000000
--- a/packages/qemu/qemu-0.9.0+cvs20070701/qemu-amd64-32b-mapping-0.9.0.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -Naru qemu-snapshot-2007-07-01_05.orig/linux-user/mmap.c qemu-snapshot-2007-07-01_05/linux-user/mmap.c
---- qemu-snapshot-2007-07-01_05.orig/linux-user/mmap.c 2007-06-03 17:31:32.000000000 +0200
-+++ qemu-snapshot-2007-07-01_05/linux-user/mmap.c 2007-07-02 14:00:30.000000000 +0200
-@@ -234,7 +234,7 @@
- host_offset = offset & qemu_host_page_mask;
- host_len = len + offset - host_offset;
- host_start = (long)mmap(real_start ? g2h(real_start) : NULL,
-- host_len, prot, flags, fd, host_offset);
-+ host_len, prot, (flags | MAP_32BIT), fd, host_offset);
- if (host_start == -1)
- return host_start;
- /* update start so that it points to the file position at 'offset' */
-@@ -388,7 +388,7 @@
- int prot;
-
- /* XXX: use 5 args syscall */
-- new_addr = (long)mremap(g2h(old_addr), old_size, new_size, flags);
-+ new_addr = (long)mremap(g2h(old_addr), old_size, new_size, (flags | MAP_32BIT));
- if (new_addr == -1)
- return new_addr;
- new_addr = h2g(new_addr);
diff --git a/packages/qemu/qemu-0.9.0+cvs20070701/qemu-sdl-cursor-0.9.0.patch b/packages/qemu/qemu-0.9.0+cvs20070701/qemu-sdl-cursor-0.9.0.patch
deleted file mode 100644
index 08d5513f36..0000000000
--- a/packages/qemu/qemu-0.9.0+cvs20070701/qemu-sdl-cursor-0.9.0.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naru qemu-snapshot-2007-06-24_05.orig/sdl.c qemu-snapshot-2007-06-24_05/sdl.c
---- qemu-snapshot-2007-06-24_05.orig/sdl.c 2007-06-21 23:08:02.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/sdl.c 2007-06-24 16:33:20.000000000 +0200
-@@ -245,7 +245,7 @@
-
- if (kbd_mouse_is_absolute()) {
- SDL_ShowCursor(1);
-- SDL_SetCursor(sdl_cursor_hidden);
-+ /* SDL_SetCursor(sdl_cursor_hidden); */
- } else {
- SDL_ShowCursor(0);
- }
diff --git a/packages/qemu/qemu-0.9.0+cvs20070701/.mtn2git_empty b/packages/qemu/qemu-0.9.1/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/qemu/qemu-0.9.0+cvs20070701/.mtn2git_empty
+++ b/packages/qemu/qemu-0.9.1/.mtn2git_empty
diff --git a/packages/qemu/qemu-0.9.1/02_snapshot_use_tmpdir.patch b/packages/qemu/qemu-0.9.1/02_snapshot_use_tmpdir.patch
new file mode 100644
index 0000000000..40264ed443
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/02_snapshot_use_tmpdir.patch
@@ -0,0 +1,23 @@
+#DPATCHLEVEL=0
+---
+# block.c | 6 +++++-
+# 1 file changed, 5 insertions(+), 1 deletion(-)
+#
+Index: block.c
+===================================================================
+--- block.c.orig 2007-12-03 23:47:25.000000000 +0000
++++ block.c 2007-12-03 23:47:31.000000000 +0000
+@@ -191,8 +191,12 @@ void get_tmp_filename(char *filename, in
+ void get_tmp_filename(char *filename, int size)
+ {
+ int fd;
++ char *tmpdir;
+ /* XXX: race condition possible */
+- pstrcpy(filename, size, "/tmp/vl.XXXXXX");
++ tmpdir = getenv("TMPDIR");
++ if (!tmpdir)
++ tmpdir = "/tmp";
++ snprintf(filename, size, "%s/vl.XXXXXX", tmpdir);
+ fd = mkstemp(filename);
+ close(fd);
+ }
diff --git a/packages/qemu/qemu-0.9.1/04_do_not_print_rtc_freq_if_ok.patch b/packages/qemu/qemu-0.9.1/04_do_not_print_rtc_freq_if_ok.patch
new file mode 100644
index 0000000000..31c9da491d
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/04_do_not_print_rtc_freq_if_ok.patch
@@ -0,0 +1,26 @@
+#DPATCHLEVEL=1
+---
+# vl.c | 5 ++++-
+# 1 file changed, 4 insertions(+), 1 deletion(-)
+#
+Index: qemu/vl.c
+===================================================================
+--- qemu.orig/vl.c 2007-12-03 15:44:35.000000000 +0000
++++ qemu/vl.c 2007-12-03 15:51:03.000000000 +0000
+@@ -1289,12 +1289,15 @@ static void hpet_stop_timer(struct qemu_
+
+ static int rtc_start_timer(struct qemu_alarm_timer *t)
+ {
++ unsigned long current_rtc_freq = 0;
+ int rtc_fd;
+
+ TFR(rtc_fd = open("/dev/rtc", O_RDONLY));
+ if (rtc_fd < 0)
+ return -1;
+- if (ioctl(rtc_fd, RTC_IRQP_SET, RTC_FREQ) < 0) {
++ ioctl(rtc_fd, RTC_IRQP_READ, &current_rtc_freq);
++ if (current_rtc_freq != RTC_FREQ &&
++ ioctl(rtc_fd, RTC_IRQP_SET, RTC_FREQ) < 0) {
+ fprintf(stderr, "Could not configure '/dev/rtc' to have a 1024 Hz timer. This is not a fatal\n"
+ "error, but for better emulation accuracy either use a 2.6 host Linux kernel or\n"
+ "type 'echo 1024 > /proc/sys/dev/rtc/max-user-freq' as root.\n");
diff --git a/packages/qemu/qemu-0.9.1/05_non-fatal_if_linux_hd_missing.patch b/packages/qemu/qemu-0.9.1/05_non-fatal_if_linux_hd_missing.patch
new file mode 100644
index 0000000000..fdd922605e
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/05_non-fatal_if_linux_hd_missing.patch
@@ -0,0 +1,17 @@
+#DPATCHLEVEL=1
+---
+# hw/pc.c | 1 -
+# 1 file changed, 1 deletion(-)
+#
+Index: qemu/hw/pc.c
+===================================================================
+--- qemu.orig/hw/pc.c 2007-12-03 23:47:25.000000000 +0000
++++ qemu/hw/pc.c 2007-12-03 23:47:38.000000000 +0000
+@@ -385,7 +385,6 @@ static void generate_bootsect(uint32_t g
+ if (bs_table[0] == NULL) {
+ fprintf(stderr, "A disk image must be given for 'hda' when booting "
+ "a Linux kernel\n");
+- exit(1);
+ }
+
+ memset(bootsect, 0, sizeof(bootsect));
diff --git a/packages/qemu/qemu-0.9.1/06_exit_segfault.patch b/packages/qemu/qemu-0.9.1/06_exit_segfault.patch
new file mode 100644
index 0000000000..06123d0626
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/06_exit_segfault.patch
@@ -0,0 +1,45 @@
+#DPATCHLEVEL=0
+---
+# linux-user/main.c | 8 ++++----
+# 1 file changed, 4 insertions(+), 4 deletions(-)
+#
+Index: linux-user/main.c
+===================================================================
+--- linux-user/main.c.orig 2007-12-03 23:47:25.000000000 +0000
++++ linux-user/main.c 2007-12-03 23:47:41.000000000 +0000
+@@ -714,7 +714,7 @@ void cpu_loop (CPUSPARCState *env)
+ default:
+ printf ("Unhandled trap: 0x%x\n", trapnr);
+ cpu_dump_state(env, stderr, fprintf, 0);
+- exit (1);
++ _exit (1);
+ }
+ process_pending_signals (env);
+ }
+@@ -1634,7 +1634,7 @@ void cpu_loop (CPUState *env)
+ default:
+ printf ("Unhandled trap: 0x%x\n", trapnr);
+ cpu_dump_state(env, stderr, fprintf, 0);
+- exit (1);
++ _exit (1);
+ }
+ process_pending_signals (env);
+ }
+@@ -1954,7 +1954,7 @@ int main(int argc, char **argv)
+ for(item = cpu_log_items; item->mask != 0; item++) {
+ printf("%-10s %s\n", item->name, item->help);
+ }
+- exit(1);
++ _exit(1);
+ }
+ cpu_set_log(mask);
+ } else if (!strcmp(r, "s")) {
+@@ -1973,7 +1973,7 @@ int main(int argc, char **argv)
+ if (qemu_host_page_size == 0 ||
+ (qemu_host_page_size & (qemu_host_page_size - 1)) != 0) {
+ fprintf(stderr, "page size must be a power of two\n");
+- exit(1);
++ _exit(1);
+ }
+ } else if (!strcmp(r, "g")) {
+ gdbstub_port = atoi(argv[optind++]);
diff --git a/packages/qemu/qemu-0.9.1/10_signal_jobs.patch b/packages/qemu/qemu-0.9.1/10_signal_jobs.patch
new file mode 100644
index 0000000000..34282adc9d
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/10_signal_jobs.patch
@@ -0,0 +1,26 @@
+#DPATCHLEVEL=0
+---
+# linux-user/signal.c | 7 ++++++-
+# 1 file changed, 6 insertions(+), 1 deletion(-)
+#
+Index: linux-user/signal.c
+===================================================================
+--- linux-user/signal.c.orig 2007-12-03 15:40:26.000000000 +0000
++++ linux-user/signal.c 2007-12-03 15:55:49.000000000 +0000
+@@ -364,10 +364,15 @@ int queue_signal(int sig, target_siginfo
+ k = &sigact_table[sig - 1];
+ handler = k->sa._sa_handler;
+ if (handler == TARGET_SIG_DFL) {
++ if (sig == TARGET_SIGTSTP || sig == TARGET_SIGTTIN || sig == TARGET_SIGTTOU) {
++ kill(getpid(),SIGSTOP);
++ return 0;
++ } else
+ /* default handler : ignore some signal. The other are fatal */
+ if (sig != TARGET_SIGCHLD &&
+ sig != TARGET_SIGURG &&
+- sig != TARGET_SIGWINCH) {
++ sig != TARGET_SIGWINCH &&
++ sig != TARGET_SIGCONT) {
+ force_sig(sig);
+ } else {
+ return 0; /* indicate ignored */
diff --git a/packages/qemu/qemu-0.9.1/11_signal_sigaction.patch b/packages/qemu/qemu-0.9.1/11_signal_sigaction.patch
new file mode 100644
index 0000000000..33c5e8b12d
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/11_signal_sigaction.patch
@@ -0,0 +1,21 @@
+#DPATCHLEVEL=0
+---
+# linux-user/signal.c | 5 +++++
+# 1 file changed, 5 insertions(+)
+#
+Index: linux-user/signal.c
+===================================================================
+--- linux-user/signal.c.orig 2007-12-03 23:47:44.000000000 +0000
++++ linux-user/signal.c 2007-12-03 23:47:46.000000000 +0000
+@@ -512,6 +512,11 @@ int do_sigaction(int sig, const struct t
+
+ if (sig < 1 || sig > TARGET_NSIG || sig == SIGKILL || sig == SIGSTOP)
+ return -EINVAL;
++
++ /* no point doing the stuff as those are not allowed for sigaction */
++ if ((sig == TARGET_SIGKILL) || (sig == TARGET_SIGSTOP))
++ return -EINVAL;
++
+ k = &sigact_table[sig - 1];
+ #if defined(DEBUG_SIGNAL)
+ fprintf(stderr, "sigaction sig=%d act=0x%08x, oact=0x%08x\n",
diff --git a/packages/qemu/qemu-0.9.1/22_net_tuntap_stall.patch b/packages/qemu/qemu-0.9.1/22_net_tuntap_stall.patch
new file mode 100644
index 0000000000..6017df0f6d
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/22_net_tuntap_stall.patch
@@ -0,0 +1,18 @@
+#DPATCHLEVEL=0
+---
+# vl.c | 2 +-
+# 1 file changed, 1 insertion(+), 1 deletion(-)
+#
+Index: vl.c
+===================================================================
+--- vl.c.orig 2007-12-03 23:47:36.000000000 +0000
++++ vl.c 2007-12-03 23:47:48.000000000 +0000
+@@ -4023,7 +4023,7 @@ static int tap_open(char *ifname, int if
+ return -1;
+ }
+ memset(&ifr, 0, sizeof(ifr));
+- ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
++ ifr.ifr_flags = IFF_TAP | IFF_NO_PI | IFF_ONE_QUEUE;
+ if (ifname[0] != '\0')
+ pstrcpy(ifr.ifr_name, IFNAMSIZ, ifname);
+ else
diff --git a/packages/qemu/qemu-0.9.1/31_syscalls.patch b/packages/qemu/qemu-0.9.1/31_syscalls.patch
new file mode 100644
index 0000000000..95a7332ee8
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/31_syscalls.patch
@@ -0,0 +1,48 @@
+#DPATCHLEVEL=0
+---
+# linux-user/syscall.c | 11 ++++++++---
+# 1 file changed, 8 insertions(+), 3 deletions(-)
+#
+Index: linux-user/syscall.c
+===================================================================
+--- linux-user/syscall.c.orig 2007-12-03 19:32:56.000000000 +0000
++++ linux-user/syscall.c 2007-12-03 19:33:41.000000000 +0000
+@@ -250,6 +250,7 @@ extern int getresuid(uid_t *, uid_t *, u
+ extern int setresgid(gid_t, gid_t, gid_t);
+ extern int getresgid(gid_t *, gid_t *, gid_t *);
+ extern int setgroups(int, gid_t *);
++extern int uselib(const char*);
+
+ #define ERRNO_TABLE_SIZE 1200
+
+@@ -4024,7 +4025,8 @@ abi_long do_syscall(void *cpu_env, int n
+ #endif
+ #ifdef TARGET_NR_uselib
+ case TARGET_NR_uselib:
+- goto unimplemented;
++ ret = get_errno(uselib(path((const char*)arg1)));
++ break;
+ #endif
+ #ifdef TARGET_NR_swapon
+ case TARGET_NR_swapon:
+@@ -5289,7 +5291,9 @@ abi_long do_syscall(void *cpu_env, int n
+ goto unimplemented;
+ #ifdef TARGET_NR_mincore
+ case TARGET_NR_mincore:
+- goto unimplemented;
++ /*page_unprotect_range((void*)arg3, ((size_t)arg2 + TARGET_PAGE_SIZE - 1) / TARGET_PAGE_SIZE);*/
++ ret = get_errno(mincore((void*)arg1, (size_t)arg2, (unsigned char*)arg3));
++ break;
+ #endif
+ #ifdef TARGET_NR_madvise
+ case TARGET_NR_madvise:
+@@ -5429,7 +5433,8 @@ abi_long do_syscall(void *cpu_env, int n
+ break;
+ #ifdef TARGET_NR_readahead
+ case TARGET_NR_readahead:
+- goto unimplemented;
++ ret = get_errno(readahead((int)arg1, (off64_t)arg2, (size_t)arg3));
++ break;
+ #endif
+ #ifdef TARGET_NR_setxattr
+ case TARGET_NR_setxattr:
diff --git a/packages/qemu/qemu-0.9.1/32_syscall_sysctl.patch b/packages/qemu/qemu-0.9.1/32_syscall_sysctl.patch
new file mode 100644
index 0000000000..5e8dd75b0e
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/32_syscall_sysctl.patch
@@ -0,0 +1,55 @@
+#DPATCHLEVEL=0
+---
+# linux-user/syscall.c | 32 +++++++++++++++++++++++++++++---
+# 1 file changed, 29 insertions(+), 3 deletions(-)
+#
+Index: linux-user/syscall.c
+===================================================================
+--- linux-user/syscall.c.orig 2007-12-03 15:56:24.000000000 +0000
++++ linux-user/syscall.c 2007-12-03 15:57:36.000000000 +0000
+@@ -52,6 +52,7 @@
+ //#include <sys/user.h>
+ #include <netinet/ip.h>
+ #include <netinet/tcp.h>
++#include <sys/sysctl.h>
+
+ #define termios host_termios
+ #define winsize host_winsize
+@@ -4739,9 +4740,34 @@ abi_long do_syscall(void *cpu_env, int n
+ break;
+ #endif
+ case TARGET_NR__sysctl:
+- /* We don't implement this, but ENOTDIR is always a safe
+- return value. */
+- ret = -TARGET_ENOTDIR;
++ {
++ struct __sysctl_args *args = (struct __sysctl_args *) arg1;
++ int *name_target, *name, nlen, *oldlenp, oldlen, newlen, i;
++ void *oldval, *newval;
++
++ name_target = (int *) tswapl((long) args->name);
++ nlen = tswapl(args->nlen);
++ oldval = (void *) tswapl((long) args->oldval);
++ oldlenp = (int *) tswapl((long) args->oldlenp);
++ oldlen = tswapl(*oldlenp);
++ newval = (void *) tswapl((long) args->newval);
++ newlen = tswapl(args->newlen);
++
++ name = alloca(nlen * sizeof (int));
++ for (i = 0; i < nlen; i++)
++ name[i] = tswapl(name_target[i]);
++
++ if (nlen == 2 && name[0] == CTL_KERN && name[1] == KERN_VERSION) {
++ ret = get_errno(
++ sysctl(name, nlen, oldval, &oldlen, newval, newlen));
++ if (!is_error(ret)) {
++ *oldlenp = tswapl(oldlen);
++ }
++ } else {
++ gemu_log("qemu: Unsupported sysctl name\n");
++ ret = -ENOSYS;
++ }
++ }
+ break;
+ case TARGET_NR_sched_setparam:
+ {
diff --git a/packages/qemu/qemu-0.9.1/33_syscall_ppc_clone.patch b/packages/qemu/qemu-0.9.1/33_syscall_ppc_clone.patch
new file mode 100644
index 0000000000..3f733b6ab8
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/33_syscall_ppc_clone.patch
@@ -0,0 +1,22 @@
+#DPATCHLEVEL=0
+---
+# linux-user/syscall.c | 6 +-----
+# 1 file changed, 1 insertion(+), 5 deletions(-)
+#
+Index: linux-user/syscall.c
+===================================================================
+--- linux-user/syscall.c.orig 2007-12-03 15:58:11.000000000 +0000
++++ linux-user/syscall.c 2007-12-03 15:58:46.000000000 +0000
+@@ -2750,11 +2750,7 @@ int do_fork(CPUState *env, unsigned int
+ if (!newsp)
+ newsp = env->gpr[1];
+ new_env->gpr[1] = newsp;
+- {
+- int i;
+- for (i = 7; i < 32; i++)
+- new_env->gpr[i] = 0;
+- }
++ new_env->gpr[3] = 0;
+ #elif defined(TARGET_SH4)
+ if (!newsp)
+ newsp = env->gregs[15];
diff --git a/packages/qemu/qemu-0.9.1/39_syscall_fadvise64.patch b/packages/qemu/qemu-0.9.1/39_syscall_fadvise64.patch
new file mode 100644
index 0000000000..54ee3e0948
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/39_syscall_fadvise64.patch
@@ -0,0 +1,21 @@
+---
+ linux-user/syscall.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+Index: linux-user/syscall.c
+===================================================================
+--- linux-user/syscall.c.orig 2007-12-03 19:33:47.000000000 +0000
++++ linux-user/syscall.c 2007-12-03 19:33:48.000000000 +0000
+@@ -5317,6 +5317,12 @@ abi_long do_syscall(void *cpu_env, int n
+ ret = get_errno(mincore((void*)arg1, (size_t)arg2, (unsigned char*)arg3));
+ break;
+ #endif
++#ifdef TARGET_NR_fadvise64_64
++ case TARGET_NR_fadvise64_64:
++ /* Just return success */
++ ret = get_errno(0);
++ break;
++#endif
+ #ifdef TARGET_NR_madvise
+ case TARGET_NR_madvise:
+ /* A straight passthrough may not be safe because qemu sometimes
diff --git a/packages/qemu/qemu-0.9.1/41_arm_fpa_sigfpe.patch b/packages/qemu/qemu-0.9.1/41_arm_fpa_sigfpe.patch
new file mode 100644
index 0000000000..cea3afc7ff
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/41_arm_fpa_sigfpe.patch
@@ -0,0 +1,104 @@
+#DPATCHLEVEL=0
+---
+# linux-user/main.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++-
+# target-arm/nwfpe/fpa11.c | 7 ++++++
+# 2 files changed, 57 insertions(+), 1 deletion(-)
+#
+Index: linux-user/main.c
+===================================================================
+--- linux-user/main.c.orig 2007-12-03 15:59:10.000000000 +0000
++++ linux-user/main.c 2007-12-03 16:01:27.000000000 +0000
+@@ -377,18 +377,67 @@ void cpu_loop(CPUARMState *env)
+ {
+ TaskState *ts = env->opaque;
+ uint32_t opcode;
++ int rc;
+
+ /* we handle the FPU emulation here, as Linux */
+ /* we get the opcode */
+ /* FIXME - what to do if get_user() fails? */
+ get_user_u32(opcode, env->regs[15]);
+
+- if (EmulateAll(opcode, &ts->fpa, env) == 0) {
++ rc = EmulateAll(opcode, &ts->fpa, env);
++ if (rc == 0) { /* illegal instruction */
+ info.si_signo = SIGILL;
+ info.si_errno = 0;
+ info.si_code = TARGET_ILL_ILLOPN;
+ info._sifields._sigfault._addr = env->regs[15];
+ queue_signal(info.si_signo, &info);
++ } else if (rc < 0) { /* FP exception */
++ int arm_fpe=0;
++
++ /* translate softfloat flags to FPSR flags */
++ if (-rc & float_flag_invalid)
++ arm_fpe |= BIT_IOC;
++ if (-rc & float_flag_divbyzero)
++ arm_fpe |= BIT_DZC;
++ if (-rc & float_flag_overflow)
++ arm_fpe |= BIT_OFC;
++ if (-rc & float_flag_underflow)
++ arm_fpe |= BIT_UFC;
++ if (-rc & float_flag_inexact)
++ arm_fpe |= BIT_IXC;
++
++ FPSR fpsr = ts->fpa.fpsr;
++ //printf("fpsr 0x%x, arm_fpe 0x%x\n",fpsr,arm_fpe);
++
++ if (fpsr & (arm_fpe << 16)) { /* exception enabled? */
++ info.si_signo = SIGFPE;
++ info.si_errno = 0;
++
++ /* ordered by priority, least first */
++ if (arm_fpe & BIT_IXC) info.si_code = TARGET_FPE_FLTRES;
++ if (arm_fpe & BIT_UFC) info.si_code = TARGET_FPE_FLTUND;
++ if (arm_fpe & BIT_OFC) info.si_code = TARGET_FPE_FLTOVF;
++ if (arm_fpe & BIT_DZC) info.si_code = TARGET_FPE_FLTDIV;
++ if (arm_fpe & BIT_IOC) info.si_code = TARGET_FPE_FLTINV;
++
++ info._sifields._sigfault._addr = env->regs[15];
++ queue_signal(info.si_signo, &info);
++ } else {
++ env->regs[15] += 4;
++ }
++
++ /* accumulate unenabled exceptions */
++ if ((!(fpsr & BIT_IXE)) && (arm_fpe & BIT_IXC))
++ fpsr |= BIT_IXC;
++ if ((!(fpsr & BIT_UFE)) && (arm_fpe & BIT_UFC))
++ fpsr |= BIT_UFC;
++ if ((!(fpsr & BIT_OFE)) && (arm_fpe & BIT_OFC))
++ fpsr |= BIT_OFC;
++ if ((!(fpsr & BIT_DZE)) && (arm_fpe & BIT_DZC))
++ fpsr |= BIT_DZC;
++ if ((!(fpsr & BIT_IOE)) && (arm_fpe & BIT_IOC))
++ fpsr |= BIT_IOC;
++ ts->fpa.fpsr=fpsr;
+ } else {
+ /* increment PC */
+ env->regs[15] += 4;
+Index: target-arm/nwfpe/fpa11.c
+===================================================================
+--- target-arm/nwfpe/fpa11.c.orig 2007-12-03 15:40:26.000000000 +0000
++++ target-arm/nwfpe/fpa11.c 2007-12-03 15:59:11.000000000 +0000
+@@ -162,6 +162,8 @@ unsigned int EmulateAll(unsigned int opc
+ fpa11->initflag = 1;
+ }
+
++ set_float_exception_flags(0, &fpa11->fp_status);
++
+ if (TEST_OPCODE(opcode,MASK_CPRT))
+ {
+ //fprintf(stderr,"emulating CPRT\n");
+@@ -191,6 +193,11 @@ unsigned int EmulateAll(unsigned int opc
+ }
+
+ // restore_flags(flags);
++ if(nRc == 1 && get_float_exception_flags(&fpa11->fp_status))
++ {
++ //printf("fef 0x%x\n",float_exception_flags);
++ nRc=-get_float_exception_flags(&fpa11->fp_status);
++ }
+
+ //printf("returning %d\n",nRc);
+ return(nRc);
diff --git a/packages/qemu/qemu-0.9.1/52_ne2000_return.patch b/packages/qemu/qemu-0.9.1/52_ne2000_return.patch
new file mode 100644
index 0000000000..e4ea33f2c6
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/52_ne2000_return.patch
@@ -0,0 +1,17 @@
+---
+ hw/ne2000.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: qemu/hw/ne2000.c
+===================================================================
+--- qemu.orig/hw/ne2000.c 2007-12-03 19:32:52.000000000 +0000
++++ qemu/hw/ne2000.c 2007-12-03 19:33:55.000000000 +0000
+@@ -217,7 +217,7 @@ static int ne2000_can_receive(void *opaq
+ NE2000State *s = opaque;
+
+ if (s->cmd & E8390_STOP)
+- return 1;
++ return 0;
+ return !ne2000_buffer_full(s);
+ }
+
diff --git a/packages/qemu/qemu-0.9.1/61_safe_64bit_int.patch b/packages/qemu/qemu-0.9.1/61_safe_64bit_int.patch
new file mode 100644
index 0000000000..9b1ace81a5
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/61_safe_64bit_int.patch
@@ -0,0 +1,27 @@
+#DPATCHLEVEL=0
+---
+# dyngen-exec.h | 4 ++--
+# 1 file changed, 2 insertions(+), 2 deletions(-)
+#
+Index: dyngen-exec.h
+===================================================================
+--- dyngen-exec.h.orig 2007-12-31 13:06:21.000000000 +0000
++++ dyngen-exec.h 2007-12-31 13:08:54.000000000 +0000
+@@ -38,7 +38,7 @@
+ // Linux/Sparc64 defines uint64_t
+ #if !(defined (__sparc_v9__) && defined(__linux__))
+ /* XXX may be done for all 64 bits targets ? */
+-#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__) || defined(__alpha__)
++#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__) || defined(__alpha__) || defined(__sparc__)
+ typedef unsigned long uint64_t;
+ #else
+ typedef unsigned long long uint64_t;
+@@ -55,7 +55,7 @@
+ typedef signed int int32_t;
+ // Linux/Sparc64 defines int64_t
+ #if !(defined (__sparc_v9__) && defined(__linux__))
+-#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__) || defined(__alpha__)
++#if defined (__x86_64__) || defined(__ia64) || defined(__s390x__) || defined(__alpha__) || defined(__sparc__)
+ typedef signed long int64_t;
+ #else
+ typedef signed long long int64_t;
diff --git a/packages/qemu/qemu-0.9.1/63_sparc_build.patch b/packages/qemu/qemu-0.9.1/63_sparc_build.patch
new file mode 100644
index 0000000000..37b38f641b
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/63_sparc_build.patch
@@ -0,0 +1,18 @@
+#DPATCHLEVEL=0
+---
+# sparc.ld | 2 +-
+# 1 file changed, 1 insertion(+), 1 deletion(-)
+#
+Index: sparc.ld
+===================================================================
+--- sparc.ld.orig 2007-12-03 15:40:26.000000000 +0000
++++ sparc.ld 2007-12-03 16:05:06.000000000 +0000
+@@ -6,7 +6,7 @@ ENTRY(_start)
+ SECTIONS
+ {
+ /* Read-only sections, merged into text segment: */
+- . = 0x60000000 + SIZEOF_HEADERS;
++ . = 0x60000000 + 0x400;
+ .interp : { *(.interp) }
+ .hash : { *(.hash) }
+ .dynsym : { *(.dynsym) }
diff --git a/packages/qemu/qemu-0.9.1/64_ppc_asm_constraints.patch b/packages/qemu/qemu-0.9.1/64_ppc_asm_constraints.patch
new file mode 100644
index 0000000000..e4858b79d7
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/64_ppc_asm_constraints.patch
@@ -0,0 +1,18 @@
+#DPATCHLEVEL=1
+---
+# cpu-all.h | 2 +-
+# 1 file changed, 1 insertion(+), 1 deletion(-)
+#
+Index: qemu/cpu-all.h
+===================================================================
+--- qemu.orig/cpu-all.h 2007-06-13 11:48:22.000000000 +0100
++++ qemu/cpu-all.h 2007-06-13 11:51:56.000000000 +0100
+@@ -250,7 +250,7 @@ static inline void stw_le_p(void *ptr, i
+ static inline void stl_le_p(void *ptr, int v)
+ {
+ #ifdef __powerpc__
+- __asm__ __volatile__ ("stwbrx %1,0,%2" : "=m" (*(uint32_t *)ptr) : "r" (v), "r" (ptr));
++ __asm__ __volatile__ ("stwbrx %0,0,%1" : : "r" (v), "r" (ptr) : "memory");
+ #else
+ uint8_t *p = ptr;
+ p[0] = v;
diff --git a/packages/qemu/qemu-0.9.1/65_kfreebsd.patch b/packages/qemu/qemu-0.9.1/65_kfreebsd.patch
new file mode 100644
index 0000000000..dfece800ac
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/65_kfreebsd.patch
@@ -0,0 +1,35 @@
+---
+ configure | 6 ++++++
+ vl.c | 2 ++
+ 2 files changed, 8 insertions(+)
+
+Index: configure
+===================================================================
+--- configure.orig 2007-12-03 15:40:26.000000000 +0000
++++ configure 2007-12-03 16:05:34.000000000 +0000
+@@ -129,6 +129,12 @@ if [ "$cpu" = "i386" -o "$cpu" = "x86_64
+ kqemu="yes"
+ fi
+ ;;
++GNU/kFreeBSD)
++oss="yes"
++if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
++ kqemu="yes"
++fi
++;;
+ FreeBSD)
+ bsd="yes"
+ oss="yes"
+Index: vl.c
+===================================================================
+--- vl.c.orig 2007-12-03 16:05:32.000000000 +0000
++++ vl.c 2007-12-03 16:05:34.000000000 +0000
+@@ -97,6 +97,8 @@
+ #include <stropts.h>
+ #endif
+ #endif
++#elif defined (__GLIBC__) && defined (__FreeBSD_kernel__)
++#include <freebsd/stdlib.h>
+ #else
+ #include <winsock2.h>
+ int inet_aton(const char *cp, struct in_addr *ia);
diff --git a/packages/qemu/qemu-0.9.1/66_tls_ld.patch b/packages/qemu/qemu-0.9.1/66_tls_ld.patch
new file mode 100644
index 0000000000..54e02eff8b
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/66_tls_ld.patch
@@ -0,0 +1,55 @@
+---
+ arm.ld | 7 +++++++
+ i386.ld | 7 +++++++
+ 2 files changed, 14 insertions(+)
+
+Index: arm.ld
+===================================================================
+--- arm.ld.orig 2007-06-13 11:48:22.000000000 +0100
++++ arm.ld 2007-06-13 11:51:56.000000000 +0100
+@@ -26,6 +26,10 @@ SECTIONS
+ { *(.rel.rodata) *(.rel.gnu.linkonce.r*) }
+ .rela.rodata :
+ { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
++ .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
++ .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
++ .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
++ .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
+ .rel.got : { *(.rel.got) }
+ .rela.got : { *(.rela.got) }
+ .rel.ctors : { *(.rel.ctors) }
+@@ -58,6 +62,9 @@ SECTIONS
+ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
+ __exidx_end = .;
+ .reginfo : { *(.reginfo) }
++ /* Thread Local Storage sections */
++ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
++ .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
+ /* Adjust the address for the data segment. We want to adjust up to
+ the same address within the page on the next page up. */
+ . = ALIGN(0x100000) + (. & (0x100000 - 1));
+Index: i386.ld
+===================================================================
+--- i386.ld.orig 2007-06-13 11:48:22.000000000 +0100
++++ i386.ld 2007-06-13 11:51:56.000000000 +0100
+@@ -28,6 +28,10 @@ SECTIONS
+ { *(.rel.rodata) *(.rel.gnu.linkonce.r*) }
+ .rela.rodata :
+ { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
++ .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
++ .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
++ .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
++ .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
+ .rel.got : { *(.rel.got) }
+ .rela.got : { *(.rela.got) }
+ .rel.ctors : { *(.rel.ctors) }
+@@ -53,6 +57,9 @@ SECTIONS
+ _etext = .;
+ PROVIDE (etext = .);
+ .fini : { *(.fini) } =0x47ff041f
++ /* Thread Local Storage sections */
++ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
++ .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
+ . = ALIGN(32 / 8);
+ PROVIDE (__preinit_array_start = .);
+ .preinit_array : { *(.preinit_array) }
diff --git a/packages/qemu/qemu-0.9.1/91-oh-sdl-cursor.patch b/packages/qemu/qemu-0.9.1/91-oh-sdl-cursor.patch
new file mode 100644
index 0000000000..0d60c1c306
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/91-oh-sdl-cursor.patch
@@ -0,0 +1,18 @@
+=== modified file 'sdl.c'
+---
+ sdl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: sdl.c
+===================================================================
+--- sdl.c.orig 2007-12-03 19:32:15.000000000 +0000
++++ sdl.c 2007-12-03 19:34:04.000000000 +0000
+@@ -247,7 +247,7 @@ static void sdl_hide_cursor(void)
+
+ if (kbd_mouse_is_absolute()) {
+ SDL_ShowCursor(1);
+- SDL_SetCursor(sdl_cursor_hidden);
++ /* SDL_SetCursor(sdl_cursor_hidden); */
+ } else {
+ SDL_ShowCursor(0);
+ }
diff --git a/packages/qemu/qemu-0.9.1/configure_symlinkpath_fix.patch b/packages/qemu/qemu-0.9.1/configure_symlinkpath_fix.patch
new file mode 100644
index 0000000000..3ec304a38c
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/configure_symlinkpath_fix.patch
@@ -0,0 +1,28 @@
+Index: qemu-0.9.1/configure
+===================================================================
+--- qemu-0.9.1.orig/configure 2008-01-24 15:33:13.000000000 +0000
++++ qemu-0.9.1/configure 2008-01-24 15:45:50.000000000 +0000
+@@ -209,15 +209,17 @@
+
+ # find source path
+ source_path=`dirname "$0"`
++source_path_used="no"
++workdir=`pwd`
++workdir=`readlink -f $workdir`
+ if [ -z "$source_path" ]; then
+- source_path=`pwd`
++ source_path=$workdir
+ else
+ source_path=`cd "$source_path"; pwd`
+-fi
+-if test "$source_path" = `pwd` ; then
+- source_path_used="no"
+-else
+- source_path_used="yes"
++ source_path=`readlink -f $source_path`
++ if test "$source_path" != "$workdir" ; then
++ source_path_used="yes"
++ fi
+ fi
+
+ werror="no"
diff --git a/packages/qemu/qemu-0.9.1/disable-error-in-configure.patch b/packages/qemu/qemu-0.9.1/disable-error-in-configure.patch
new file mode 100644
index 0000000000..017f9f6355
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/disable-error-in-configure.patch
@@ -0,0 +1,17 @@
+---
+ configure | 2 --
+ 1 file changed, 2 deletions(-)
+
+Index: qemu/configure
+===================================================================
+--- qemu.orig/configure 2007-12-03 16:38:38.000000000 +0000
++++ qemu/configure 2007-12-03 16:38:39.000000000 +0000
+@@ -323,8 +323,6 @@ for opt do
+ ;;
+ --disable-werror) werror="no"
+ ;;
+- *) echo "ERROR: unknown option $opt"; show_help="yes"
+- ;;
+ --disable-nptl) nptl="no"
+ ;;
+ esac
diff --git a/packages/qemu/qemu-0.9.1/fix_segfault.patch b/packages/qemu/qemu-0.9.1/fix_segfault.patch
new file mode 100644
index 0000000000..443c330650
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/fix_segfault.patch
@@ -0,0 +1,37 @@
+---
+ linux-user/syscall.c | 22 ----------------------
+ 1 file changed, 22 deletions(-)
+
+Index: qemu/linux-user/syscall.c
+===================================================================
+--- qemu.orig/linux-user/syscall.c 2007-12-03 23:40:11.000000000 +0000
++++ qemu/linux-user/syscall.c 2007-12-03 23:40:21.000000000 +0000
+@@ -5695,28 +5695,6 @@ abi_long do_syscall(void *cpu_env, int n
+ goto unimplemented_nowarn;
+ #endif
+
+-#ifdef TARGET_NR_clock_gettime
+- case TARGET_NR_clock_gettime:
+- {
+- struct timespec ts;
+- ret = get_errno(clock_gettime(arg1, &ts));
+- if (!is_error(ret)) {
+- host_to_target_timespec(arg2, &ts);
+- }
+- break;
+- }
+-#endif
+-#ifdef TARGET_NR_clock_getres
+- case TARGET_NR_clock_getres:
+- {
+- struct timespec ts;
+- ret = get_errno(clock_getres(arg1, &ts));
+- if (!is_error(ret)) {
+- host_to_target_timespec(arg2, &ts);
+- }
+- break;
+- }
+-#endif
+
+ #if defined(TARGET_NR_set_tid_address) && defined(__NR_set_tid_address)
+ case TARGET_NR_set_tid_address:
diff --git a/packages/qemu/qemu-0.9.1/no-strip.patch b/packages/qemu/qemu-0.9.1/no-strip.patch
new file mode 100644
index 0000000000..fc69b37e16
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/no-strip.patch
@@ -0,0 +1,22 @@
+--- qemu.orig/Makefile 2008-01-29 23:16:27.000000000 -0800
++++ qemu-0.9.1/Makefile 2008-01-29 23:16:38.000000000 -0800
+@@ -174,7 +174,7 @@
+ install: all $(if $(BUILD_DOCS),install-doc)
+ mkdir -p "$(DESTDIR)$(bindir)"
+ ifneq ($(TOOLS),)
+- $(INSTALL) -m 755 -s $(TOOLS) "$(DESTDIR)$(bindir)"
++ $(INSTALL) -m 755 $(TOOLS) "$(DESTDIR)$(bindir)"
+ endif
+ mkdir -p "$(DESTDIR)$(datadir)"
+ for x in bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \
+--- qemu.orig/Makefile.target 2008-01-29 23:16:27.000000000 -0800
++++ qemu-0.9.1/Makefile.target 2008-01-29 23:17:33.000000000 -0800
+@@ -632,7 +632,7 @@
+
+ install: all
+ ifneq ($(PROGS),)
+- $(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
++ $(INSTALL) -m 755 $(PROGS) "$(DESTDIR)$(bindir)"
+ endif
+
+ ifneq ($(wildcard .depend),)
diff --git a/packages/qemu/qemu-0.9.1/qemu-0.9.0-nptl-update.patch b/packages/qemu/qemu-0.9.1/qemu-0.9.0-nptl-update.patch
new file mode 100644
index 0000000000..ebc996e873
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/qemu-0.9.0-nptl-update.patch
@@ -0,0 +1,219 @@
+---
+ linux-user/main.c | 7 ++-
+ linux-user/syscall.c | 114 ++++++++++++++++++++++++++++++++++++++++++++++-----
+ 2 files changed, 111 insertions(+), 10 deletions(-)
+
+Index: qemu/linux-user/main.c
+===================================================================
+--- qemu.orig/linux-user/main.c 2007-12-03 19:34:09.000000000 +0000
++++ qemu/linux-user/main.c 2007-12-03 23:44:45.000000000 +0000
+@@ -391,7 +391,7 @@ do_kernel_trap(CPUARMState *env)
+ cpu_unlock();
+ break;
+ case 0xffff0fe0: /* __kernel_get_tls */
+- env->regs[0] = env->cp15.c13_tls;
++ env->regs[0] = env->cp15.c13_tls2;
+ break;
+ default:
+ return 1;
+@@ -2037,6 +2037,11 @@ int main(int argc, char **argv)
+ int drop_ld_preload = 0, environ_count = 0;
+ char **target_environ, **wrk, **dst;
+
++ char *assume_kernel = getenv("QEMU_ASSUME_KERNEL");
++
++ if (assume_kernel)
++ setenv("LD_ASSUME_KERNEL", assume_kernel, 1);
++
+ if (argc <= 1)
+ usage();
+
+Index: qemu/linux-user/syscall.c
+===================================================================
+--- qemu.orig/linux-user/syscall.c 2007-12-03 19:34:09.000000000 +0000
++++ qemu/linux-user/syscall.c 2007-12-03 23:46:54.000000000 +0000
+@@ -61,6 +61,7 @@
+ #define tchars host_tchars /* same as target */
+ #define ltchars host_ltchars /* same as target */
+
++#include <linux/futex.h>
+ #include <linux/termios.h>
+ #include <linux/unistd.h>
+ #include <linux/utsname.h>
+@@ -2694,7 +2695,6 @@ abi_long do_arch_prctl(CPUX86State *env,
+ return 0;
+ }
+ #endif
+-
+ #endif /* defined(TARGET_I386) */
+
+ /* this stack is the equivalent of the kernel stack associated with a
+@@ -2729,16 +2729,19 @@ int do_fork(CPUState *env, unsigned int
+ TaskState *ts;
+ uint8_t *new_stack;
+ CPUState *new_env;
+-
++#if defined(TARGET_I386)
++ uint64_t *new_gdt_table;
++#endif
+ #ifdef USE_NPTL
+ unsigned int nptl_flags;
+
+ if (flags & CLONE_PARENT_SETTID)
+ *parent_tidptr = gettid();
+ #endif
+-
+ if (flags & CLONE_VM) {
+ ts = malloc(sizeof(TaskState) + NEW_STACK_SIZE);
++ if (!ts)
++ return -ENOMEM;
+ memset(ts, 0, sizeof(TaskState));
+ new_stack = ts->stack;
+ ts->used = 1;
+@@ -2750,6 +2753,29 @@ int do_fork(CPUState *env, unsigned int
+ #if defined(TARGET_I386)
+ if (!newsp)
+ newsp = env->regs[R_ESP];
++ new_gdt_table = malloc(9 * 8);
++ if (!new_gdt_table) {
++ free(new_env);
++ return -ENOMEM;
++ }
++ /* Copy main GDT table from parent, but clear TLS entries */
++ memcpy(new_gdt_table, g2h(env->gdt.base), 6 * 8);
++ memset(&new_gdt_table[6], 0, 3 * 8);
++ new_env->gdt.base = h2g(new_gdt_table);
++ if (flags & 0x00080000 /* CLONE_SETTLS */) {
++ ret = do_set_thread_area(new_env, new_env->regs[R_ESI]);
++ if (ret) {
++ free(new_gdt_table);
++ free(new_env);
++ return ret;
++ }
++ }
++ cpu_x86_load_seg(env, R_CS, new_env->regs[R_CS]);
++ cpu_x86_load_seg(env, R_DS, new_env->regs[R_DS]);
++ cpu_x86_load_seg(env, R_ES, new_env->regs[R_ES]);
++ cpu_x86_load_seg(env, R_SS, new_env->regs[R_SS]);
++ cpu_x86_load_seg(env, R_FS, new_env->regs[R_FS]);
++ cpu_x86_load_seg(env, R_GS, new_env->regs[R_GS]);
+ new_env->regs[R_ESP] = newsp;
+ new_env->regs[R_EAX] = 0;
+ #elif defined(TARGET_ARM)
+@@ -3121,6 +3147,68 @@ static inline abi_long host_to_target_ti
+ unlock_user_struct(target_ts, target_addr, 1);
+ }
+
++static long do_futex(target_ulong uaddr, int op, uint32_t val,
++ target_ulong utime, target_ulong uaddr2,
++ uint32_t val3)
++{
++ struct timespec host_utime;
++ unsigned long val2 = utime;
++
++ if (utime && (op == FUTEX_WAIT || op == FUTEX_LOCK_PI)) {
++ target_to_host_timespec(&host_utime, utime);
++ val2 = (unsigned long)&host_utime;
++ }
++
++#ifdef BSWAP_NEEDED
++ switch(op) {
++ case FUTEX_CMP_REQUEUE:
++ val3 = tswap32(val3);
++ case FUTEX_REQUEUE:
++ val2 = tswap32(val2);
++ case FUTEX_WAIT:
++ case FUTEX_WAKE:
++ val = tswap32(val);
++ case FUTEX_LOCK_PI: /* This one's icky, but comes out OK */
++ case FUTEX_UNLOCK_PI:
++ break;
++ default:
++ gemu_log("qemu: Unsupported futex op %d\n", op);
++ return -ENOSYS;
++ }
++#if 0 /* No, it's worse than this */
++ if (op == FUTEX_WAKE_OP) {
++ /* Need to munge the secondary operation (val3) */
++ val3 = tswap32(val3);
++ int op2 = (val3 >> 28) & 7;
++ int cmp = (val3 >> 24) & 15;
++ int oparg = (val3 << 8) >> 20;
++ int cmparg = (val3 << 20) >> 20;
++ int shift = val3 & (FUTEX_OP_OPARG_SHIFT << 28);
++
++ if (shift)
++ oparg = (oparg & 7) + 24 - (oparg & 24);
++ else oparg =
++ if (op2 == FUTEX_OP_ADD) {
++ gemu_log("qemu: Unsupported wrong-endian FUTEX_OP_ADD\n");
++ return -ENOSYS;
++ }
++ if (cmparg == FUTEX_OP_CMP_LT || cmparg == FUTEX_OP_CMP_GE ||
++ cmparg == FUTEX_OP_CMP_LE || cmparg == FUTEX_OP_CMP_GT) {
++ gemu_log("qemu: Unsupported wrong-endian futex cmparg %d\n", cmparg);
++ return -ENOSYS;
++ }
++ val3 = shift | (op2<<28) | (cmp<<24) | (oparg<<12) | cmparg;
++ }
++#endif
++#endif
++ return syscall(__NR_futex, g2h(uaddr), op, val, val2, g2h(uaddr2), val3);
++}
++
++int do_set_tid_address(target_ulong tidptr)
++{
++ return syscall(__NR_set_tid_address, g2h(tidptr));
++}
++
+ /* do_syscall() should always have a single exit point at the end so
+ that actions, such as logging of syscall results, can be performed.
+ All errnos that do_syscall() returns must be -TARGET_<errcode>. */
+@@ -3145,7 +3233,7 @@ abi_long do_syscall(void *cpu_env, int n
+ _mcleanup();
+ #endif
+ gdb_exit(cpu_env, arg1);
+- /* XXX: should free thread stack and CPU env */
++ /* XXX: should free thread stack, GDT and CPU env */
+ _exit(arg1);
+ ret = 0; /* avoid warning */
+ break;
+@@ -5569,6 +5657,9 @@ abi_long do_syscall(void *cpu_env, int n
+ #elif defined(TARGET_I386) && defined(TARGET_ABI32)
+ ret = do_set_thread_area(cpu_env, arg1);
+ break;
++#elif TARGET_i386
++ ret = get_errno(do_set_thread_area(cpu_env, arg1));
++ break;
+ #else
+ goto unimplemented_nowarn;
+ #endif
+@@ -5586,6 +5677,16 @@ abi_long do_syscall(void *cpu_env, int n
+ goto unimplemented_nowarn;
+ #endif
+
++#ifdef TARGET_NR_futex
++ case TARGET_NR_futex:
++ ret = get_errno(do_futex(arg1, arg2, arg3, arg4, arg5, arg6));
++ break;
++#endif
++#ifdef TARGET_NR_set_robust_list
++ case TARGET_NR_set_robust_list:
++ goto unimplemented_nowarn;
++#endif
++
+ #ifdef TARGET_NR_clock_gettime
+ case TARGET_NR_clock_gettime:
+ {
+@@ -5627,11 +5728,6 @@ abi_long do_syscall(void *cpu_env, int n
+ break;
+ #endif
+
+-#ifdef TARGET_NR_set_robust_list
+- case TARGET_NR_set_robust_list:
+- goto unimplemented_nowarn;
+-#endif
+-
+ #if defined(TARGET_NR_utimensat) && defined(__NR_utimensat)
+ case TARGET_NR_utimensat:
+ {
diff --git a/packages/qemu/qemu-0.9.0+cvs20070701/arm_nptl-0.9.0.patch b/packages/qemu/qemu-0.9.1/qemu-0.9.0-nptl.patch
index fe1f0945b6..10e3cc04a5 100644
--- a/packages/qemu/qemu-0.9.0+cvs20070701/arm_nptl-0.9.0.patch
+++ b/packages/qemu/qemu-0.9.1/qemu-0.9.0-nptl.patch
@@ -1,7 +1,37 @@
-diff -Naru qemu-snapshot-2007-06-24_05.orig/configure qemu-snapshot-2007-06-24_05/configure
---- qemu-snapshot-2007-06-24_05.orig/configure 2007-06-24 16:31:54.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/configure 2007-06-24 16:33:58.000000000 +0200
-@@ -101,6 +101,7 @@
+These are Paul Brook's patches to QEMU-0.8.2 to enable the running of single
+ARM binaries under QEMU's user-emulation mode. Without them, QEMU-0.8.1
+immediately dies saying:
+ Error: f0005
+ qemu: uncaught target signal 6 (Aborted) - exiting
+while qemu-0.8.2 dies saying:
+ qemu: Unsupported syscall: 983045
+ cannot set up thread-local storage: unknown error
+
+This file is a rediffing of the patches visible at
+https://nowt.dyndns.org/patch.qemu_nptl on 27 Sept 2006
+which "patch" fails to apply automatically.
+See also http://lists.gnu.org/archive/html/qemu-devel/2006-09/msg00194.html
+
+ Martin Guy, 27 Sept 2006
+
+---
+ configure | 25 ++++++
+ exec-all.h | 165 ------------------------------------------
+ linux-user/arm/syscall.h | 4 -
+ linux-user/main.c | 94 +++++++++++++++++++++---
+ linux-user/qemu.h | 3
+ linux-user/syscall.c | 91 ++++++++++++++++++++++-
+ qemu_spinlock.h | 181 +++++++++++++++++++++++++++++++++++++++++++++++
+ target-arm/cpu.h | 10 ++
+ target-arm/op.c | 6 +
+ target-arm/translate.c | 9 ++
+ 10 files changed, 405 insertions(+), 183 deletions(-)
+
+--- qemu.orig/configure
++++ qemu/configure
+@@ -103,10 +103,11 @@ check_gcc="yes"
+ softmmu="yes"
+ linux_user="no"
darwin_user="no"
build_docs="no"
uname_release=""
@@ -9,16 +39,36 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/configure qemu-snapshot-2007-06-24_0
# OS specific
targetos=`uname -s`
-@@ -287,6 +288,8 @@
- *) echo "undefined SPARC architecture. Exiting";exit 1;;
- esac
+ case $targetos in
+ CYGWIN*)
+@@ -322,10 +323,12 @@ for opt do
+ ;;
+ --disable-werror) werror="no"
+ ;;
+ *) echo "ERROR: unknown option $opt"; show_help="yes"
;;
+ --disable-nptl) nptl="no"
+ ;;
esac
done
-@@ -530,6 +533,23 @@
+ if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
+ AIOLIBS=
+@@ -417,10 +420,11 @@ echo " --enable-system enable
+ echo " --disable-system disable all system emulation targets"
+ echo " --enable-linux-user enable all linux usermode emulation targets"
+ echo " --disable-linux-user disable all linux usermode emulation targets"
+ echo " --enable-darwin-user enable all darwin usermode emulation targets"
+ echo " --disable-darwin-user disable all darwin usermode emulation targets"
++echo " --disable-nptl disable usermode NPTL guest support"
+ echo " --fmod-lib path to FMOD library"
+ echo " --fmod-inc path to FMOD includes"
+ echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
+ echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
+ echo ""
+@@ -583,10 +587,27 @@ fi
+ cat > $TMPC <<EOF
+ int main(void) {
}
EOF
@@ -42,33 +92,39 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/configure qemu-snapshot-2007-06-24_0
##########################################
# SDL probe
-@@ -681,6 +701,7 @@
- echo "Target Sparc Arch $sparc_cpu"
+ sdl_too_old=no
+
+@@ -747,10 +768,11 @@ if test -n "$sparc_cpu"; then
fi
echo "kqemu support $kqemu"
-+echo "NPTL support $nptl"
echo "Documentation $build_docs"
[ ! -z "$uname_release" ] && \
echo "uname -r $uname_release"
-@@ -1063,6 +1084,14 @@
- echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
- fi
- fi
-+else
-+ if test "$nptl" = "yes" ; then
-+ case "$target_cpu" in
-+ arm | armeb)
-+ echo "#define USE_NPTL 1" >> $config_h
-+ ;;
-+ esac
-+ fi
++echo "NPTL support $nptl"
+
+ if test $sdl_too_old = "yes"; then
+ echo "-> Your SDL version is too old - please upgrade to have SDL support"
fi
+ if [ -s /tmp/qemu-$$-sdl-config.log ]; then
+@@ -1063,10 +1085,13 @@ if test "$target_cpu" = "i386" ; then
+ fi
+ elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
+ echo "TARGET_ARCH=arm" >> $config_mak
+ echo "#define TARGET_ARCH \"arm\"" >> $config_h
+ echo "#define TARGET_ARM 1" >> $config_h
++ if test "$nptl" = "yes" ; then
++ echo "#define USE_NPTL 1" >> $config_h
++ fi
+ bflt="yes"
+ elif test "$target_cpu" = "sparc" ; then
+ echo "TARGET_ARCH=sparc" >> $config_mak
+ echo "#define TARGET_ARCH \"sparc\"" >> $config_h
+ echo "#define TARGET_SPARC 1" >> $config_h
+--- qemu.orig/exec-all.h
++++ qemu/exec-all.h
+@@ -338,174 +338,11 @@ dummy_label ## n: ;\
- if test "$cocoa" = "yes" ; then
-diff -Naru qemu-snapshot-2007-06-24_05.orig/exec-all.h qemu-snapshot-2007-06-24_05/exec-all.h
---- qemu-snapshot-2007-06-24_05.orig/exec-all.h 2007-05-23 21:58:10.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/exec-all.h 2007-06-24 16:33:58.000000000 +0200
-@@ -360,170 +360,7 @@
+ extern CPUWriteMemoryFunc *io_mem_write[IO_MEM_NB_ENTRIES][4];
extern CPUReadMemoryFunc *io_mem_read[IO_MEM_NB_ENTRIES][4];
extern void *io_mem_opaque[IO_MEM_NB_ENTRIES];
@@ -92,7 +148,7 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/exec-all.h qemu-snapshot-2007-06-24_
-static inline int testandset (int *p)
-{
- long int readval = 0;
--
+-
- __asm__ __volatile__ ("lock; cmpxchgl %2, %0"
- : "+m" (*p), "+a" (readval)
- : "r" (1)
@@ -103,7 +159,7 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/exec-all.h qemu-snapshot-2007-06-24_
-static inline int testandset (int *p)
-{
- long int readval = 0;
--
+-
- __asm__ __volatile__ ("lock; cmpxchgl %2, %0"
- : "+m" (*p), "+a" (readval)
- : "r" (1)
@@ -118,7 +174,7 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/exec-all.h qemu-snapshot-2007-06-24_
- __asm__ __volatile__ ("0: cs %0,%1,0(%2)\n"
- " jl 0b"
- : "=&d" (ret)
-- : "r" (1), "a" (p), "0" (*p)
+- : "r" (1), "a" (p), "0" (*p)
- : "cc", "memory" );
- return ret;
-}
@@ -158,7 +214,7 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/exec-all.h qemu-snapshot-2007-06-24_
- __asm__ __volatile__("swp %0, %1, [%2]"
- : "=r"(ret)
- : "0"(1), "r"(spinlock));
--
+-
- return ret;
-}
-#elif defined(__mc68000)
@@ -240,10 +296,13 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/exec-all.h qemu-snapshot-2007-06-24_
extern spinlock_t tb_lock;
-diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/arm/syscall.h qemu-snapshot-2007-06-24_05/linux-user/arm/syscall.h
---- qemu-snapshot-2007-06-24_05.orig/linux-user/arm/syscall.h 2005-04-27 22:11:21.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/linux-user/arm/syscall.h 2007-06-24 16:33:58.000000000 +0200
-@@ -28,7 +28,9 @@
+ extern int tb_invalidated_flag;
+
+--- qemu.orig/linux-user/arm/syscall.h
++++ qemu/linux-user/arm/syscall.h
+@@ -26,11 +26,13 @@ struct target_pt_regs {
+ #define ARM_ORIG_r0 uregs[17]
+
#define ARM_SYSCALL_BASE 0x900000
#define ARM_THUMB_SYSCALL 0
@@ -254,10 +313,13 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/arm/syscall.h qemu-snapsh
#define ARM_NR_semihosting 0x123456
#define ARM_NR_thumb_semihosting 0xAB
-diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/main.c qemu-snapshot-2007-06-24_05/linux-user/main.c
---- qemu-snapshot-2007-06-24_05.orig/linux-user/main.c 2007-06-22 00:55:02.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/linux-user/main.c 2007-06-24 16:33:58.000000000 +0200
-@@ -325,6 +325,50 @@
+
+ #if defined(TARGET_WORDS_BIGENDIAN)
+--- qemu.orig/linux-user/main.c
++++ qemu/linux-user/main.c
+@@ -361,10 +361,54 @@ static void arm_cache_flush(abi_ulong st
+ break;
+ addr = last1 + 1;
}
}
@@ -308,7 +370,11 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/main.c qemu-snapshot-2007
void cpu_loop(CPUARMState *env)
{
int trapnr;
-@@ -381,10 +425,8 @@
+ unsigned int n, insn;
+ target_siginfo_t info;
+@@ -471,32 +515,50 @@ void cpu_loop(CPUARMState *env)
+ get_user_u32(insn, env->regs[15] - 4);
+ n = insn & 0xffffff;
}
}
@@ -321,12 +387,15 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/main.c qemu-snapshot-2007
env->regs[0] = do_arm_semihosting (env);
} else if (n == 0 || n >= ARM_SYSCALL_BASE
|| (env->thumb && n == ARM_THUMB_SYSCALL)) {
-@@ -395,14 +437,34 @@
+ /* linux syscall */
+ if (env->thumb || n == 0) {
+ n = env->regs[7];
+ } else {
n -= ARM_SYSCALL_BASE;
env->eabi = 0;
}
-- env->regs[0] = do_syscall(env,
-- n,
+- env->regs[0] = do_syscall(env,
+- n,
- env->regs[0],
- env->regs[1],
- env->regs[2],
@@ -352,8 +421,8 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/main.c qemu-snapshot-2007
+ }
+ else
+ {
-+ env->regs[0] = do_syscall(env,
-+ n,
++ env->regs[0] = do_syscall(env,
++ n,
+ env->regs[0],
+ env->regs[1],
+ env->regs[2],
@@ -364,7 +433,11 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/main.c qemu-snapshot-2007
} else {
goto error;
}
-@@ -441,6 +503,10 @@
+ }
+ break;
+@@ -531,10 +593,14 @@ void cpu_loop(CPUARMState *env)
+ info.si_code = TARGET_TRAP_BRKPT;
+ queue_signal(info.si_signo, &info);
}
}
break;
@@ -374,8 +447,12 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/main.c qemu-snapshot-2007
+ break;
default:
error:
- fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
-@@ -2074,6 +2140,10 @@
+ fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
+ trapnr);
+ cpu_dump_state(env, stderr, fprintf, 0);
+@@ -2378,10 +2444,14 @@ int main(int argc, char **argv)
+ #if defined(TARGET_ARM) || defined(TARGET_M68K)
+ ts->stack_base = info->start_stack;
ts->heap_base = info->brk;
/* This will be filled in on the first SYS_HEAPINFO call. */
ts->heap_limit = 0;
@@ -386,23 +463,29 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/main.c qemu-snapshot-2007
#endif
if (gdbstub_port) {
-diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/qemu.h qemu-snapshot-2007-06-24_05/linux-user/qemu.h
---- qemu-snapshot-2007-06-24_05.orig/linux-user/qemu.h 2007-05-26 17:09:38.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/linux-user/qemu.h 2007-06-24 16:33:58.000000000 +0200
-@@ -81,6 +81,9 @@
+ gdbserver_start (gdbstub_port);
+ gdb_handlesig(env, 0);
+--- qemu.orig/linux-user/qemu.h
++++ qemu/linux-user/qemu.h
+@@ -100,10 +100,13 @@ typedef struct TaskState {
+ /* Extra fields for semihosted binaries. */
+ uint32_t stack_base;
+ uint32_t heap_base;
uint32_t heap_limit;
#endif
- int used; /* non zero if used */
+#ifdef USE_NPTL
+ uint32_t *child_tidptr;
+#endif
+ int used; /* non zero if used */
struct image_info *info;
uint8_t stack[0];
} __attribute__((aligned(16))) TaskState;
-diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/syscall.c qemu-snapshot-2007-06-24_05/linux-user/syscall.c
---- qemu-snapshot-2007-06-24_05.orig/linux-user/syscall.c 2007-06-21 23:57:11.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/linux-user/syscall.c 2007-06-24 16:33:58.000000000 +0200
-@@ -70,9 +70,18 @@
+
+--- qemu.orig/linux-user/syscall.c
++++ qemu/linux-user/syscall.c
+@@ -69,13 +69,22 @@
+ #include <linux/soundcard.h>
+ #include <linux/dirent.h>
#include <linux/kd.h>
#include "qemu.h"
@@ -419,9 +502,13 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/syscall.c qemu-snapshot-2
+#endif
+
#if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) \
- || defined(TARGET_M68K) || defined(TARGET_SH4)
+ || defined(TARGET_M68K) || defined(TARGET_SH4) || defined(TARGET_CRIS)
/* 16 bit uid wrappers emulation */
-@@ -2121,20 +2130,38 @@
+ #define USE_UID16
+ #endif
+@@ -2690,27 +2699,46 @@ abi_long do_arch_prctl(CPUX86State *env,
+
+ /* this stack is the equivalent of the kernel stack associated with a
thread/process */
#define NEW_STACK_SIZE 8192
@@ -443,7 +530,9 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/syscall.c qemu-snapshot-2
return 0;
}
--int do_fork(CPUState *env, unsigned int flags, unsigned long newsp)
+ /* do_fork() Must return host values and target errnos (unlike most
+ do_*() functions). */
+-int do_fork(CPUState *env, unsigned int flags, abi_ulong newsp)
+int do_fork(CPUState *env, unsigned int flags, unsigned long newsp,
+ uint32_t *parent_tidptr, void *newtls,
+ uint32_t *child_tidptr)
@@ -452,81 +541,95 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/syscall.c qemu-snapshot-2
TaskState *ts;
uint8_t *new_stack;
CPUState *new_env;
+
+#ifdef USE_NPTL
+ unsigned int nptl_flags;
+
+ if (flags & CLONE_PARENT_SETTID)
+ *parent_tidptr = gettid();
+#endif
-
++
if (flags & CLONE_VM) {
ts = malloc(sizeof(TaskState) + NEW_STACK_SIZE);
-@@ -2201,16 +2228,60 @@
+ memset(ts, 0, sizeof(TaskState));
+ new_stack = ts->stack;
+ ts->used = 1;
+@@ -2772,20 +2800,71 @@ int do_fork(CPUState *env, unsigned int
+ new_env->regs[14] = newsp;
+ #else
#error unsupported target CPU
#endif
new_env->opaque = ts;
+#ifdef USE_NPTL
-+ nptl_flags = flags;
-+ flags &= ~CLONE_NPTL_FLAGS2;
-+ if (nptl_flags & CLONE_CHILD_CLEARTID) {
-+ ts->child_tidptr = child_tidptr;
-+ }
-+ if (nptl_flags & CLONE_SETTLS)
-+ cpu_set_tls (new_env, newtls);
-+ /* Grab the global cpu lock so that the thread setup appears
-+ atomic. */
-+ if (nptl_flags & CLONE_CHILD_SETTID)
-+ spin_lock(&nptl_lock);
++ nptl_flags = flags;
++ flags &= ~CLONE_NPTL_FLAGS2;
++
++ if (nptl_flags & CLONE_CHILD_CLEARTID) {
++ ts->child_tidptr = child_tidptr;
++ }
++
++ if (nptl_flags & CLONE_SETTLS)
++ cpu_set_tls (new_env, newtls);
++
++ /* Grab the global cpu lock so that the thread setup appears
++ atomic. */
++ if (nptl_flags & CLONE_CHILD_SETTID)
++ spin_lock(&nptl_lock);
++
+#else
-+ if (flags & CLONE_NPTL_FLAGS2)
-+ return -EINVAL;
++ if (flags & CLONE_NPTL_FLAGS2)
++ return -EINVAL;
+#endif
+
++ if (CLONE_VFORK & flags)
++ flags ^= CLONE_VM;
#ifdef __ia64__
ret = __clone2(clone_func, new_stack + NEW_STACK_SIZE, flags, new_env);
#else
ret = clone(clone_func, new_stack + NEW_STACK_SIZE, flags, new_env);
#endif
+#ifdef USE_NPTL
-+ if (ret != -1) {
-+ if (nptl_flags & CLONE_CHILD_SETTID)
-+ *child_tidptr = ret;
-+ }
-+ /* Allow the child to continue. */
-+ if (nptl_flags & CLONE_CHILD_SETTID)
-+ spin_unlock(&nptl_lock);
++ if (ret != -1) {
++ if (nptl_flags & CLONE_CHILD_SETTID)
++ *child_tidptr = ret;
++ }
++
++ /* Allow the child to continue. */
++ if (nptl_flags & CLONE_CHILD_SETTID)
++ spin_unlock(&nptl_lock);
+#endif
} else {
-- /* if no CLONE_VM, we consider it is a fork */
+ /* if no CLONE_VM, we consider it is a fork */
- if ((flags & ~CSIGNAL) != 0)
-- return -EINVAL;
-- ret = fork();
-+ /* if no CLONE_VM, we consider it is a fork */
-+ if ((flags & ~(CSIGNAL | CLONE_NPTL_FLAGS2)) != 0)
-+ return -EINVAL;
-+ ret = fork();
++ if ((flags & ~(CSIGNAL | CLONE_NPTL_FLAGS2)) != 0)
+ return -EINVAL;
+ ret = fork();
+#ifdef USE_NPTL
-+ /* There is a race condition here. The parent process could
-+ theoretically read the TID in the child process before the child
-+ tid is set. This would require using either ptrace
-+ (not implemented) or having *_tidptr to point at a shared memory
-+ mapping. We can't repeat the spinlock hack used above because
-+ the child process gets its own copy of the lock. */
-+ if (ret == 0) {
-+ /* Child Process. */
-+ if (flags & CLONE_CHILD_SETTID)
-+ *child_tidptr = gettid();
-+ ts = (TaskState *)env->opaque;
-+ if (flags & CLONE_CHILD_CLEARTID)
-+ ts->child_tidptr = child_tidptr;
-+ if (flags & CLONE_SETTLS)
-+ cpu_set_tls (env, newtls);
-+ }
++ /* There is a race condition here. The parent process could
++ theoretically read the TID in the child process before the child
++ tid is set. This would require using either ptrace
++ (not implemented) or having *_tidptr to point at a shared memory
++ mapping. We can't repeat the spinlock hack used above because
++ the child process gets its own copy of the lock. */
++ if (ret == 0) {
++ /* Child Process. */
++ if (flags & CLONE_CHILD_SETTID)
++ *child_tidptr = gettid();
++ ts = (TaskState *)env->opaque;
++ if (flags & CLONE_CHILD_CLEARTID)
++ ts->child_tidptr = child_tidptr;
++ if (flags & CLONE_SETTLS)
++ cpu_set_tls (env, newtls);
++ }
+#endif
}
return ret;
}
-@@ -2487,7 +2558,7 @@
+
+ static abi_long do_fcntl(int fd, int cmd, abi_ulong arg)
+@@ -3106,11 +3185,11 @@ abi_long do_syscall(void *cpu_env, int n
+ break;
+ case TARGET_NR_brk:
ret = do_brk(arg1);
break;
case TARGET_NR_fork:
@@ -535,7 +638,11 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/syscall.c qemu-snapshot-2
break;
#ifdef TARGET_NR_waitpid
case TARGET_NR_waitpid:
-@@ -3651,7 +3722,8 @@
+ {
+ int status;
+@@ -4463,11 +4542,12 @@ abi_long do_syscall(void *cpu_env, int n
+ #endif
+ case TARGET_NR_fsync:
ret = get_errno(fsync(arg1));
break;
case TARGET_NR_clone:
@@ -545,7 +652,11 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/syscall.c qemu-snapshot-2
break;
#ifdef __NR_exit_group
/* new thread calls */
-@@ -4039,7 +4111,8 @@
+ case TARGET_NR_exit_group:
+ gdb_exit(cpu_env, arg1);
+@@ -4908,11 +4988,12 @@ abi_long do_syscall(void *cpu_env, int n
+ case TARGET_NR_putpmsg:
+ goto unimplemented;
#endif
#ifdef TARGET_NR_vfork
case TARGET_NR_vfork:
@@ -555,19 +666,15 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/linux-user/syscall.c qemu-snapshot-2
break;
#endif
#ifdef TARGET_NR_ugetrlimit
-@@ -4632,4 +4705,3 @@
- #endif
- return ret;
- }
--
-diff -Naru qemu-snapshot-2007-06-24_05.orig/qemu_spinlock.h qemu-snapshot-2007-06-24_05/qemu_spinlock.h
---- qemu-snapshot-2007-06-24_05.orig/qemu_spinlock.h 1970-01-01 01:00:00.000000000 +0100
-+++ qemu-snapshot-2007-06-24_05/qemu_spinlock.h 2007-06-24 16:33:58.000000000 +0200
-@@ -0,0 +1,182 @@
+ case TARGET_NR_ugetrlimit:
+ {
+--- /dev/null
++++ qemu/qemu_spinlock.h
+@@ -0,0 +1,181 @@
+/*
-+ * internal execution defines for qemu
++ * Atomic operation helper include
+ *
-+ * Copyright (c) 2003 Fabrice Bellard
++ * Copyright (c) 2005 Fabrice Bellard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
@@ -583,9 +690,8 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/qemu_spinlock.h qemu-snapshot-2007-0
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
-+
-+#ifndef _QEMU_SPINLOCK_H
-+#define _QEMU_SPINLOCK_H
++#ifndef QEMU_SPINLOCK_H
++#define QEMU_SPINLOCK_H
+
+#ifdef __powerpc__
+static inline int testandset (int *p)
@@ -637,10 +743,10 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/qemu_spinlock.h qemu-snapshot-2007-0
+ int ret;
+
+ __asm__ __volatile__ ("0: cs %0,%1,0(%2)\n"
-+ " jl 0b"
-+ : "=&d" (ret)
-+ : "r" (1), "a" (p), "0" (*p)
-+ : "cc", "memory" );
++ " jl 0b"
++ : "=&d" (ret)
++ : "r" (1), "a" (p), "0" (*p)
++ : "cc", "memory" );
+ return ret;
+}
+#endif
@@ -651,15 +757,15 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/qemu_spinlock.h qemu-snapshot-2007-0
+ int ret;
+ unsigned long one;
+
-+ __asm__ __volatile__ ("0: mov 1,%2\n"
-+ " ldl_l %0,%1\n"
-+ " stl_c %2,%1\n"
-+ " beq %2,1f\n"
-+ ".subsection 2\n"
-+ "1: br 0b\n"
-+ ".previous"
-+ : "=r" (ret), "=m" (*p), "=r" (one)
-+ : "m" (*p));
++ __asm__ __volatile__ ("0: mov 1,%2\n"
++ " ldl_l %0,%1\n"
++ " stl_c %2,%1\n"
++ " beq %2,1f\n"
++ ".subsection 2\n"
++ "1: br 0b\n"
++ ".previous"
++ : "=r" (ret), "=m" (*p), "=r" (one)
++ : "m" (*p));
+ return ret;
+}
+#endif
@@ -667,14 +773,14 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/qemu_spinlock.h qemu-snapshot-2007-0
+#ifdef __sparc__
+static inline int testandset (int *p)
+{
-+ int ret;
++ int ret;
+
-+ __asm__ __volatile__("ldstub [%1], %0"
-+ : "=r" (ret)
-+ : "r" (p)
-+ : "memory");
++ __asm__ __volatile__("ldstub [%1], %0"
++ : "=r" (ret)
++ : "r" (p)
++ : "memory");
+
-+ return (ret ? 1 : 0);
++ return (ret ? 1 : 0);
+}
+#endif
+
@@ -745,73 +851,46 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/qemu_spinlock.h qemu-snapshot-2007-0
+}
+#endif
+
-+#endif /* ! _QEMU_SPINLOCK_H */
-diff -Naru qemu-snapshot-2007-06-24_05.orig/target-arm/cpu.h qemu-snapshot-2007-06-24_05/target-arm/cpu.h
---- qemu-snapshot-2007-06-24_05.orig/target-arm/cpu.h 2007-06-03 23:02:37.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/target-arm/cpu.h 2007-06-24 16:33:58.000000000 +0200
-@@ -37,6 +37,9 @@
++#endif
+--- qemu.orig/target-arm/cpu.h
++++ qemu/target-arm/cpu.h
+@@ -36,10 +36,11 @@
+ #define EXCP_DATA_ABORT 4
#define EXCP_IRQ 5
#define EXCP_FIQ 6
#define EXCP_BKPT 7
-+#define EXCP_KERNEL_TRAP 8 /* Jumped to kernel code page. */
-+
-+
-
- typedef void ARMWriteCPFunc(void *opaque, int cp_info,
- int srcreg, int operand, uint32_t value);
-@@ -97,6 +100,7 @@
- uint32_t c9_data;
- uint32_t c13_fcse; /* FCSE PID. */
- uint32_t c13_context; /* Context ID. */
-+ uint32_t c13_tls; /* Paul Brook told me to just add this ;) */
- uint32_t c15_cpar; /* XScale Coprocessor Access Register */
- } cp15;
+ #define EXCP_EXCEPTION_EXIT 8 /* Return from v7M exception. */
++#define EXCP_KERNEL_TRAP 9 /* Jumped to kernel code page. */
-@@ -169,6 +173,15 @@
- int cpu_arm_signal_handler(int host_signum, void *pinfo,
+ #define ARMV7M_EXCP_RESET 1
+ #define ARMV7M_EXCP_NMI 2
+ #define ARMV7M_EXCP_HARD 3
+ #define ARMV7M_EXCP_MEM 4
+@@ -220,10 +221,19 @@ int cpu_arm_signal_handler(int host_sign
void *puc);
+ void cpu_lock(void);
+ void cpu_unlock(void);
+
+void cpu_lock(void);
+void cpu_unlock(void);
+#if defined(USE_NPTL)
+static inline void cpu_set_tls(CPUARMState *env, void *newtls)
+{
-+ env->cp15.c13_tls = (uint32_t)newtls;
++ env->cp15.c13_tls2 = (uint32_t)(long)newtls;
+}
+#endif
+
#define CPSR_M (0x1f)
#define CPSR_T (1 << 5)
#define CPSR_F (1 << 6)
-@@ -180,7 +193,11 @@
- #define CPSR_J (1 << 24)
- #define CPSR_IT_0_1 (3 << 25)
- #define CPSR_Q (1 << 27)
--#define CPSR_NZCV (0xf << 28)
-+#define CPSR_V (1 << 28)
-+#define CPSR_C (1 << 29)
-+#define CPSR_Z (1 << 30)
-+#define CPSR_N (1 << 31)
-+#define CPSR_NZCV (CPSR_N | CPSR_Z | CPSR_C | CPSR_V)
-
- #define CACHED_CPSR_BITS (CPSR_T | CPSR_Q | CPSR_NZCV)
- /* Return the current CPSR value. */
-diff -Naru qemu-snapshot-2007-06-24_05.orig/target-arm/exec.h qemu-snapshot-2007-06-24_05/target-arm/exec.h
---- qemu-snapshot-2007-06-24_05.orig/target-arm/exec.h 2007-06-03 19:44:36.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/target-arm/exec.h 2007-06-24 16:33:58.000000000 +0200
-@@ -68,8 +68,6 @@
-
- /* In op_helper.c */
-
--void cpu_lock(void);
--void cpu_unlock(void);
- void helper_set_cp(CPUState *, uint32_t, uint32_t);
- uint32_t helper_get_cp(CPUState *, uint32_t);
- void helper_set_cp15(CPUState *, uint32_t, uint32_t);
-diff -Naru qemu-snapshot-2007-06-24_05.orig/target-arm/op.c qemu-snapshot-2007-06-24_05/target-arm/op.c
---- qemu-snapshot-2007-06-24_05.orig/target-arm/op.c 2007-05-21 19:48:01.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/target-arm/op.c 2007-06-24 16:33:58.000000000 +0200
-@@ -891,6 +891,12 @@
+ #define CPSR_I (1 << 7)
+ #define CPSR_A (1 << 8)
+--- qemu.orig/target-arm/op.c
++++ qemu/target-arm/op.c
+@@ -1007,10 +1007,16 @@ void OPPROTO op_exception_exit(void)
+ {
+ env->exception_index = EXCP_EXCEPTION_EXIT;
cpu_loop_exit();
}
@@ -824,21 +903,17 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/target-arm/op.c qemu-snapshot-2007-0
/* VFP support. We follow the convention used for VFP instrunctions:
Single precition routines have a "s" suffix, double precision a
"d" suffix. */
-diff -Naru qemu-snapshot-2007-06-24_05.orig/target-arm/translate.c qemu-snapshot-2007-06-24_05/target-arm/translate.c
---- qemu-snapshot-2007-06-24_05.orig/target-arm/translate.c 2007-06-11 20:59:35.000000000 +0200
-+++ qemu-snapshot-2007-06-24_05/target-arm/translate.c 2007-06-24 16:33:58.000000000 +0200
-@@ -3513,6 +3513,7 @@
- s->is_jmp = DISAS_JUMP;
- }
-+
- /* generate intermediate code in gen_opc_buf and gen_opparam_buf for
- basic block 'tb'. If search_pc is TRUE, also generate PC
- information for each intermediate instruction. */
-@@ -3548,6 +3549,15 @@
- nb_gen_labels = 0;
- lj = -1;
- do {
+ #define VFP_OP(name, p) void OPPROTO op_vfp_##name##p(void)
+--- qemu.orig/target-arm/translate.c
++++ qemu/target-arm/translate.c
+@@ -7518,11 +7518,18 @@ static inline int gen_intermediate_code_
+ /* We always get here via a jump, so know we are not in a
+ conditional execution block. */
+ gen_op_exception_exit();
+ }
+ #endif
+-
+#ifdef CONFIG_USER_ONLY
+ /* Intercept jump to the magic kernel page. */
+ if (dc->pc > 0xffff0000) {
@@ -847,7 +922,8 @@ diff -Naru qemu-snapshot-2007-06-24_05.orig/target-arm/translate.c qemu-snapshot
+ break;
+ }
+#endif
-+
if (env->nb_breakpoints > 0) {
for(j = 0; j < env->nb_breakpoints; j++) {
if (env->breakpoints[j] == dc->pc) {
+ gen_set_condexec(dc);
+ gen_op_movl_T0_im((long)dc->pc);
diff --git a/packages/qemu/qemu-0.9.1/qemu-amd64-32b-mapping-0.9.0.patch b/packages/qemu/qemu-0.9.1/qemu-amd64-32b-mapping-0.9.0.patch
new file mode 100644
index 0000000000..c7f36d8110
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/qemu-amd64-32b-mapping-0.9.0.patch
@@ -0,0 +1,37 @@
+---
+ linux-user/mmap.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+Index: qemu/linux-user/mmap.c
+===================================================================
+--- qemu.orig/linux-user/mmap.c 2007-12-03 15:40:25.000000000 +0000
++++ qemu/linux-user/mmap.c 2007-12-03 16:37:21.000000000 +0000
+@@ -29,6 +29,10 @@
+
+ //#define DEBUG_MMAP
+
++#ifndef MAP_32BIT
++#define MAP_32BIT 0
++#endif
++
+ /* NOTE: all the constants are the HOST ones, but addresses are target. */
+ int target_mprotect(abi_ulong start, abi_ulong len, int prot)
+ {
+@@ -251,7 +255,7 @@ abi_long target_mmap(abi_ulong start, ab
+ especially important if qemu_host_page_size >
+ qemu_real_host_page_size */
+ p = mmap(g2h(mmap_start),
+- host_len, prot, flags | MAP_FIXED, fd, host_offset);
++ host_len, prot, flags | MAP_FIXED | MAP_32BIT, fd, host_offset);
+ if (p == MAP_FAILED)
+ return -1;
+ /* update start so that it points to the file position at 'offset' */
+@@ -406,7 +410,7 @@ abi_long target_mremap(abi_ulong old_add
+ unsigned long host_addr;
+
+ /* XXX: use 5 args syscall */
+- host_addr = (long)mremap(g2h(old_addr), old_size, new_size, flags);
++ host_addr = (long)mremap(g2h(old_addr), old_size, new_size, flags | MAP_32BIT);
+ if (host_addr == -1)
+ return -1;
+ new_addr = h2g(host_addr);
diff --git a/packages/qemu/qemu-0.9.1/series b/packages/qemu/qemu-0.9.1/series
new file mode 100644
index 0000000000..e6ffdcc6bd
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/series
@@ -0,0 +1,25 @@
+02_snapshot_use_tmpdir.patch -p0
+04_do_not_print_rtc_freq_if_ok.patch -p1
+05_non-fatal_if_linux_hd_missing.patch -p1
+06_exit_segfault.patch -p0
+10_signal_jobs.patch -p0
+11_signal_sigaction.patch -p0
+22_net_tuntap_stall.patch -p0
+31_syscalls.patch -p0
+32_syscall_sysctl.patch -p0
+33_syscall_ppc_clone.patch -p0
+39_syscall_fadvise64.patch -p0
+41_arm_fpa_sigfpe.patch -p0
+52_ne2000_return.patch -p1
+61_safe_64bit_int.patch -p0
+63_sparc_build.patch -p0
+64_ppc_asm_constraints.patch -p1
+65_kfreebsd.patch -p0
+66_tls_ld.patch -p0
+91-oh-sdl-cursor.patch -p0
+qemu-0.9.0-nptl.patch -p1
+qemu-0.9.0-nptl-update.patch -p1
+qemu-amd64-32b-mapping-0.9.0.patch -p1
+workaround_bad_futex_headers.patch -p1
+fix_segfault.patch -p1
+disable-error-in-configure.patch -p1
diff --git a/packages/qemu/qemu-0.9.1/workaround_bad_futex_headers.patch b/packages/qemu/qemu-0.9.1/workaround_bad_futex_headers.patch
new file mode 100644
index 0000000000..cc122ebdba
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/workaround_bad_futex_headers.patch
@@ -0,0 +1,25 @@
+---
+ linux-user/syscall.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+Index: qemu/linux-user/syscall.c
+===================================================================
+--- qemu.orig/linux-user/syscall.c 2007-08-09 20:28:06.000000000 +0100
++++ qemu/linux-user/syscall.c 2007-08-09 20:28:41.000000000 +0100
+@@ -61,7 +61,15 @@
+ #define tchars host_tchars /* same as target */
+ #define ltchars host_ltchars /* same as target */
+
+-#include <linux/futex.h>
++#define FUTEX_WAIT 0
++#define FUTEX_WAKE 1
++#define FUTEX_FD 2
++#define FUTEX_REQUEUE 3
++#define FUTEX_CMP_REQUEUE 4
++#define FUTEX_WAKE_OP 5
++#define FUTEX_LOCK_PI 6
++#define FUTEX_UNLOCK_PI 7
++
+ #include <linux/termios.h>
+ #include <linux/unistd.h>
+ #include <linux/utsname.h>
diff --git a/packages/qemu/qemu-0.9.1/writev_fix.patch b/packages/qemu/qemu-0.9.1/writev_fix.patch
new file mode 100644
index 0000000000..e0ed4af972
--- /dev/null
+++ b/packages/qemu/qemu-0.9.1/writev_fix.patch
@@ -0,0 +1,17 @@
+---
+ linux-user/syscall.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: qemu-0.9.1/linux-user/syscall.c
+===================================================================
+--- qemu-0.9.1.orig/linux-user/syscall.c 2008-02-03 00:00:00.000000000 +0000
++++ qemu-0.9.1/linux-user/syscall.c 2008-02-03 00:00:38.000000000 +0000
+@@ -1048,7 +1048,7 @@ static abi_long lock_iovec(int type, str
+ base = tswapl(target_vec[i].iov_base);
+ vec[i].iov_len = tswapl(target_vec[i].iov_len);
+ vec[i].iov_base = lock_user(type, base, vec[i].iov_len, copy);
+- if (!vec[i].iov_base)
++ if (!vec[i].iov_base && vec[i].iov_len)
+ goto fail;
+ }
+ unlock_user (target_vec, target_addr, 0);
diff --git a/packages/qemu/qemu-gcc3-check.inc b/packages/qemu/qemu-gcc3-check.inc
index 96b79fdf14..81c3555b48 100644
--- a/packages/qemu/qemu-gcc3-check.inc
+++ b/packages/qemu/qemu-gcc3-check.inc
@@ -1,20 +1,11 @@
python __anonymous() {
from bb import which, data
- path = data.getVar('PATH', d)
- oldOeConf = data.getVar('EXTRA_OECONF', d)
+ path = data.getVar('PATH', d, 1)
+ oldOeConf = data.getVar('EXTRA_OECONF', d, 1)
if not oldOeConf: oldOeConf = ""
- if len(which(path, 'gcc-3.4')) != 0:
- data.setVar('EXTRA_OECONF', oldOeConf + " --cc=gcc-3.4", d)
- elif len(which(path, 'gcc34')) != 0:
- data.setVar('EXTRA_OECONF', oldOeConf + " --cc=gcc34", d)
- elif len(which(path, 'gcc33')) != 0:
- data.setVar('EXTRA_OECONF', oldOeConf + " --cc=gcc33", d)
- elif len(which(path, 'gcc-3.3')) != 0:
- data.setVar('EXTRA_OECONF', oldOeConf + " --cc=gcc-3.3", d)
- elif len(which(path, 'gcc-3.3.6')) != 0:
- data.setVar('EXTRA_OECONF', oldOeConf + " --cc=gcc-3.3.6", d)
- elif len(which(path, 'gcc-3.4.6')) != 0:
- data.setVar('EXTRA_OECONF', oldOeConf + " --cc=gcc-3.4.6", d)
+ gcc3 = check_gcc3(d)
+ if gcc3:
+ data.setVar('EXTRA_OECONF', oldOeConf + " --cc=" + gcc3, d)
}
diff --git a/packages/qemu/qemu-native.inc b/packages/qemu/qemu-native.inc
index a20f5056b5..f1da2d9d1f 100644
--- a/packages/qemu/qemu-native.inc
+++ b/packages/qemu/qemu-native.inc
@@ -1,8 +1,9 @@
-FILESPATH =. "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/qemu-${PV}:"
-DEPENDS = "libsdl-native zlib-native"
+inherit native
+
+DEPENDS = "libsdl-native zlib-native gcc3-native"
require qemu-gcc3-check.inc
do_stage() {
- find . -name "qemu-*" -type f -perm -755 -exec install -m 0755 {} ${STAGING_BINDIR} \;
+ find . -name "qemu-*" -type f -perm -755 -exec install -m 0755 {} ${STAGING_BINDIR} \;
}
diff --git a/packages/qemu/qemu-native_0.9.0+cvs.bb b/packages/qemu/qemu-native_0.9.0+cvs.bb
deleted file mode 100644
index 65a7908a5c..0000000000
--- a/packages/qemu/qemu-native_0.9.0+cvs.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require qemu_0.9.0+cvs.bb
-inherit native
-require qemu-native.inc
diff --git a/packages/qemu/qemu-native_0.9.1.bb b/packages/qemu/qemu-native_0.9.1.bb
new file mode 100644
index 0000000000..16984a3f6a
--- /dev/null
+++ b/packages/qemu/qemu-native_0.9.1.bb
@@ -0,0 +1,2 @@
+require qemu_${PV}.bb
+require qemu-native.inc
diff --git a/packages/qemu/qemu-native_20070613.bb b/packages/qemu/qemu-native_20070613.bb
index d440d560e8..2cbae8a783 100644
--- a/packages/qemu/qemu-native_20070613.bb
+++ b/packages/qemu/qemu-native_20070613.bb
@@ -1,7 +1,4 @@
require qemu_${PV}.bb
-inherit native
-DEPENDS = "zlib-native"
-prefix = "${STAGING_DIR_NATIVE}/${layout_prefix}"
-
-require qemu-gcc3-check.inc
+require qemu-native.inc
+prefix = "${STAGING_DIR_NATIVE}/${layout_prefix}"
diff --git a/packages/qemu/qemu-native_cvs.bb b/packages/qemu/qemu-native_cvs.bb
index 639f9a6a7c..c9db5e35b9 100644
--- a/packages/qemu/qemu-native_cvs.bb
+++ b/packages/qemu/qemu-native_cvs.bb
@@ -1,3 +1,2 @@
require qemu_cvs.bb
-inherit native
require qemu-native.inc
diff --git a/packages/qemu/qemu_0.9.0+cvs.bb b/packages/qemu/qemu_0.9.0+cvs.bb
deleted file mode 100644
index 8a89b805a2..0000000000
--- a/packages/qemu/qemu_0.9.0+cvs.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-DESCRIPTION = "Qemu is an open source processor emulator."
-HOMEPAGE = "http://fabrice.bellard.free.fr/qemu/"
-SECTION = "devel"
-LICENSE = "GPL"
-SRCDATE="20070701"
-PV = "0.9.0+cvs${SRCDATE}"
-PR = "r1"
-
-SRC_URI = "cvs://anonymous@cvs.savannah.nongnu.org/sources/qemu;method=pserver;rsh=ssh;module=qemu;date=${SRCDATE} \
- file://configure-0.9.0.patch;patch=1 \
- file://qemu-sdl-cursor-0.9.0.patch;patch=1 \
- file://arm_nptl-0.9.0.patch;patch=1 \
- file://pl110_rgb-r0-0.9.0.patch;patch=1 \
- file://qemu-0.9.0-gcc4.patch;patch=1 \
- file://qemu-amd64-32b-mapping-0.9.0.patch;patch=1"
-S = "${WORKDIR}/qemu"
-
-EXTRA_OECONF="--disable-gcc-check"
-
-inherit autotools
-
-DEFAULT_PREFERENCE = "-1"
diff --git a/packages/qemu/qemu_0.9.1.bb b/packages/qemu/qemu_0.9.1.bb
new file mode 100644
index 0000000000..164296b0d4
--- /dev/null
+++ b/packages/qemu/qemu_0.9.1.bb
@@ -0,0 +1,49 @@
+LICENSE = "GPL"
+DEPENDS = "zlib"
+PR = "r7"
+
+FILESPATH = "${FILE_DIRNAME}/qemu-${PV}"
+FILESDIR = "${WORKDIR}"
+
+SRC_URI = "\
+ http://fabrice.bellard.free.fr/qemu/qemu-0.9.1.tar.gz \
+ file://02_snapshot_use_tmpdir.patch;patch=1;pnum=0 \
+ file://04_do_not_print_rtc_freq_if_ok.patch;patch=1;pnum=1 \
+ file://05_non-fatal_if_linux_hd_missing.patch;patch=1;pnum=1 \
+ file://06_exit_segfault.patch;patch=1;pnum=0 \
+ file://10_signal_jobs.patch;patch=1;pnum=0 \
+ file://11_signal_sigaction.patch;patch=1;pnum=0 \
+ file://22_net_tuntap_stall.patch;patch=1;pnum=0 \
+ file://31_syscalls.patch;patch=1;pnum=0 \
+ file://32_syscall_sysctl.patch;patch=1;pnum=0 \
+ file://33_syscall_ppc_clone.patch;patch=1;pnum=0 \
+ file://39_syscall_fadvise64.patch;patch=1;pnum=0 \
+ file://41_arm_fpa_sigfpe.patch;patch=1;pnum=0 \
+ file://52_ne2000_return.patch;patch=1;pnum=1 \
+ file://61_safe_64bit_int.patch;patch=1;pnum=0 \
+ file://63_sparc_build.patch;patch=1;pnum=0 \
+ file://64_ppc_asm_constraints.patch;patch=1;pnum=1 \
+ file://65_kfreebsd.patch;patch=1;pnum=0 \
+ file://66_tls_ld.patch;patch=1;pnum=0 \
+ file://91-oh-sdl-cursor.patch;patch=1;pnum=0 \
+ file://qemu-0.9.0-nptl.patch;patch=1 \
+ file://qemu-0.9.0-nptl-update.patch;patch=1 \
+ file://qemu-amd64-32b-mapping-0.9.0.patch;patch=1 \
+ file://workaround_bad_futex_headers.patch;patch=1 \
+ file://fix_segfault.patch;patch=1 \
+ file://writev_fix.patch;patch=1 \
+ file://configure_symlinkpath_fix.patch;patch=1 \
+ file://disable-error-in-configure.patch;patch=1 \
+ file://no-strip.patch;patch=1"
+
+S = "${WORKDIR}/qemu-${PV}"
+
+#EXTRA_OECONF += "--disable-sdl"
+#EXTRA_OECONF += "--target-list=arm-linux-user,arm-softmmu"
+EXTRA_OECONF += "--disable-gfx-check"
+
+inherit autotools
+
+do_configure() {
+ oe_runconf
+}
diff --git a/packages/qemu/qemu_20070613.bb b/packages/qemu/qemu_20070613.bb
index 6584bcc3ed..533848963b 100644
--- a/packages/qemu/qemu_20070613.bb
+++ b/packages/qemu/qemu_20070613.bb
@@ -4,6 +4,7 @@ SRCDATE = "20070613"
PV = "0.9.0+cvs${SRCDATE}"
PR = "r5"
+FILESPATH = "${FILE_DIRNAME}/qemu-${PV}"
FILESDIR = "${WORKDIR}"
SRC_URI = "\
@@ -37,15 +38,6 @@ SRC_URI = "\
file://fix_segfault.patch;patch=1 \
file://no-strip.patch;patch=1"
-# svn://svn.o-hand.com/repos/misc/trunk/qemu-packaging/qemu;module=debian;proto=http;srcdate=20070119 \
-# file://debian/patches/21_net_soopts.patch;patch=1;pnum=0 \
-# file://debian/patches/35_syscall_sockaddr.patch;patch=1;pnum=0 \
-# file://debian/patches/43_arm_cpustate.patch;patch=1;pnum=0 \
-# file://debian/patches/62_linux_boot_nasm.patch;patch=1;pnum=0 \
-# file://debian/patches/67_ppc_ftbfs.patch;patch=1;pnum=0 \
-# file://debian/patches/80_ui_curses.patch;patch=1;pnum=0 \
-# file://debian/patches/96-x.patch;patch=1"
-
S = "${WORKDIR}/qemu"
#EXTRA_OECONF = "--disable-sdl"
diff --git a/packages/qemu/qemu_cvs.bb b/packages/qemu/qemu_cvs.bb
index d76bfa2834..137262ca2d 100644
--- a/packages/qemu/qemu_cvs.bb
+++ b/packages/qemu/qemu_cvs.bb
@@ -1,26 +1,55 @@
-DESCRIPTION = "Qemu is an open source processor emulator."
-HOMEPAGE = "http://fabrice.bellard.free.fr/qemu/"
-SECTION = "devel"
LICENSE = "GPL"
-PV = "0.8.2+cvs${SRCDATE}"
-PR = "r2"
+DEPENDS = "zlib"
+PV = "0.9.0+cvs${SRCDATE}"
+PR = "r4"
+
+DEFAULT_PREFERENCE = "-1"
+FILESDIR = "${WORKDIR}"
+
+SRC_URI = "\
+ cvs://anonymous@cvs.savannah.nongnu.org/sources/qemu;method=pserver;rsh=ssh;module=qemu \
+ file://02_snapshot_use_tmpdir.patch;patch=1;pnum=0 \
+ file://03_machines_list_no_error.patch;patch=1;pnum=0 \
+ file://04_do_not_print_rtc_freq_if_ok.patch;patch=1;pnum=1 \
+ file://05_non-fatal_if_linux_hd_missing.patch;patch=1;pnum=1 \
+ file://06_exit_segfault.patch;patch=1;pnum=0 \
+ file://10_signal_jobs.patch;patch=1;pnum=0 \
+ file://11_signal_sigaction.patch;patch=1;pnum=0 \
+ file://12_signal_powerpc_support.patch;patch=1;pnum=1 \
+ file://22_net_tuntap_stall.patch;patch=1;pnum=0 \
+ file://31_syscalls.patch;patch=1;pnum=0 \
+ file://32_syscall_sysctl.patch;patch=1;pnum=0 \
+ file://33_syscall_ppc_clone.patch;patch=1;pnum=0 \
+ file://39_syscall_fadvise64.patch;patch=1;pnum=0 \
+ file://41_arm_fpa_sigfpe.patch;patch=1;pnum=0 \
+ file://52_ne2000_return.patch;patch=1;pnum=1 \
+ file://61_safe_64bit_int.patch;patch=1;pnum=0 \
+ file://63_sparc_build.patch;patch=1;pnum=0 \
+ file://64_ppc_asm_constraints.patch;patch=1;pnum=1 \
+ file://65_kfreebsd.patch;patch=1;pnum=0 \
+ file://66_tls_ld.patch;patch=1;pnum=0 \
+ file://91-oh-sdl-cursor.patch;patch=1;pnum=0 \
+ file://93-oh-pl110-rgb.patch;patch=1;pnum=0 \
+ file://qemu-0.9.0-nptl.patch;patch=1 \
+ file://qemu-0.9.0-nptl-update.patch;patch=1 \
+ file://qemu-amd64-32b-mapping-0.9.0.patch;patch=1 \
+ file://workaround_bad_futex_headers.patch;patch=1 \
+ file://fix_segfault.patch;patch=1"
+
+# svn://svn.o-hand.com/repos/misc/trunk/qemu-packaging/qemu;module=debian;proto=http;srcdate=20070119 \
+# file://debian/patches/21_net_soopts.patch;patch=1;pnum=0 \
+# file://debian/patches/35_syscall_sockaddr.patch;patch=1;pnum=0 \
+# file://debian/patches/43_arm_cpustate.patch;patch=1;pnum=0 \
+# file://debian/patches/62_linux_boot_nasm.patch;patch=1;pnum=0 \
+# file://debian/patches/67_ppc_ftbfs.patch;patch=1;pnum=0 \
+# file://debian/patches/80_ui_curses.patch;patch=1;pnum=0 \
+# file://debian/patches/96-x.patch;patch=1"
-SRC_URI = "cvs://anonymous@cvs.savannah.nongnu.org/sources/qemu;method=pserver;rsh=ssh;module=qemu \
- file://configure.patch;patch=1 \
- file://makefile.patch;patch=1 \
- file://qemu-sdl-cursor.patch;patch=1 \
- file://arm_nptl.patch;patch=1 \
- file://pl110_rgb-r0.patch;patch=1 \
- file://qemu-pci-irq-sharing.patch;patch=1 \
- file://compiler.patch;patch=1 \
- file://qemu-usb-wacom-0.8.2.patch;patch=1 \
- file://qemu-usb-wacom-pressure.patch;patch=1 \
- file://qemu-usb-wacom-buttons.patch;patch=1 \
- http://www.busybox.net/downloads/qemu/qemu-gcc-4-all.patch;patch=1"
S = "${WORKDIR}/qemu"
-EXTRA_OECONF="--disable-gcc-check"
+#EXTRA_OECONF += "--disable-sdl"
+#EXTRA_OECONF += "--target-list=arm-linux-user"
+EXTRA_OECONF += "--disable-gfx-check"
inherit autotools
-DEFAULT_PREFERENCE = "-1"