diff options
| author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-04-19 08:44:11 +0100 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-04-22 15:56:41 +0100 |
| commit | 375835092c66090266f1206be76012d78708cd9f (patch) | |
| tree | 9d367ebaf533862dfc206aac00ffaba6efdc9683 /meta | |
| parent | 2c3d4f5beee8f57a74244495511b9294df1085ea (diff) | |
| download | poky-375835092c66090266f1206be76012d78708cd9f.tar.gz | |
qemu: Backport a patch to solve SSE2 instruction emulation issues
This fix addresses various issues seen in qemux86-64 images:
* scroll bars in matchbox-terminal not working
* files not appearing in pcmanfm
* warnings on the console from glib/gobject about invalid gdouble values
Its due to an emulation issue in qemu which the backported patch fixes.
I managed to debug it to a specific function, Khem found the qemu patch
to backport, thanks Khem!
[YOCTO #1906]
(From OE-Core rev: 69d083f8b8d8f7d095ed5682d305870c4d93fe62)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu-0.15.1/a4d1f142542935b90d2eb30f3aead4edcf455fe6.patch | 66 | ||||
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu_0.15.1.bb | 3 |
2 files changed, 68 insertions, 1 deletions
diff --git a/meta/recipes-devtools/qemu/qemu-0.15.1/a4d1f142542935b90d2eb30f3aead4edcf455fe6.patch b/meta/recipes-devtools/qemu/qemu-0.15.1/a4d1f142542935b90d2eb30f3aead4edcf455fe6.patch new file mode 100644 index 0000000000..405d557bdc --- /dev/null +++ b/meta/recipes-devtools/qemu/qemu-0.15.1/a4d1f142542935b90d2eb30f3aead4edcf455fe6.patch | |||
| @@ -0,0 +1,66 @@ | |||
| 1 | From a4d1f142542935b90d2eb30f3aead4edcf455fe6 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Aurelien Jarno <aurelien@aurel32.net> | ||
| 3 | Date: Sat, 7 Jan 2012 15:20:11 +0100 | ||
| 4 | Subject: [PATCH 1/1] target-i386: fix {min,max}{pd,ps,sd,ss} SSE2 instructions | ||
| 5 | |||
| 6 | minpd, minps, minsd, minss and maxpd, maxps, maxsd, maxss SSE2 | ||
| 7 | instructions have been broken when switching target-i386 to softfloat. | ||
| 8 | It's not possible to use comparison instructions on float types anymore | ||
| 9 | to softfloat, so use the floatXX_lt function instead, as the | ||
| 10 | float_XX_min and float_XX_max functions can't be used due to the Intel | ||
| 11 | specific behaviour. | ||
| 12 | |||
| 13 | As it implements the correct NaNs behaviour, let's remove the | ||
| 14 | corresponding entry from the TODO. | ||
| 15 | |||
| 16 | It fixes GDM screen display on Debian Lenny. | ||
| 17 | |||
| 18 | Thanks to Peter Maydell and Jason Wessel for their analysis of the | ||
| 19 | problem. | ||
| 20 | |||
| 21 | Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> | ||
| 22 | --- | ||
| 23 | target-i386/TODO | 1 - | ||
| 24 | target-i386/ops_sse.h | 9 +++++++-- | ||
| 25 | 2 files changed, 7 insertions(+), 3 deletions(-) | ||
| 26 | |||
| 27 | This fixes scrollbar issues in matchbox-terminal/vte on qemux86-64 and | ||
| 28 | files not appearing in pcmanfm, as well as glib/gobject errors to do with gdoubles | ||
| 29 | on the console [YOCTO #1906] | ||
| 30 | |||
| 31 | Upstream-Status: Backport | ||
| 32 | |||
| 33 | Index: qemu-0.15.1/target-i386/TODO | ||
| 34 | =================================================================== | ||
| 35 | --- qemu-0.15.1.orig/target-i386/TODO 2011-10-12 16:41:43.000000000 +0000 | ||
| 36 | +++ qemu-0.15.1/target-i386/TODO 2012-04-19 07:30:38.704073075 +0000 | ||
| 37 | @@ -15,7 +15,6 @@ | ||
| 38 | - DRx register support | ||
| 39 | - CR0.AC emulation | ||
| 40 | - SSE alignment checks | ||
| 41 | -- fix SSE min/max with nans | ||
| 42 | |||
| 43 | Optimizations/Features: | ||
| 44 | |||
| 45 | Index: qemu-0.15.1/target-i386/ops_sse.h | ||
| 46 | =================================================================== | ||
| 47 | --- qemu-0.15.1.orig/target-i386/ops_sse.h 2011-10-12 16:41:43.000000000 +0000 | ||
| 48 | +++ qemu-0.15.1/target-i386/ops_sse.h 2012-04-19 07:30:38.712073076 +0000 | ||
| 49 | @@ -584,10 +584,15 @@ | ||
| 50 | #define FPU_SUB(size, a, b) float ## size ## _sub(a, b, &env->sse_status) | ||
| 51 | #define FPU_MUL(size, a, b) float ## size ## _mul(a, b, &env->sse_status) | ||
| 52 | #define FPU_DIV(size, a, b) float ## size ## _div(a, b, &env->sse_status) | ||
| 53 | -#define FPU_MIN(size, a, b) (a) < (b) ? (a) : (b) | ||
| 54 | -#define FPU_MAX(size, a, b) (a) > (b) ? (a) : (b) | ||
| 55 | #define FPU_SQRT(size, a, b) float ## size ## _sqrt(b, &env->sse_status) | ||
| 56 | |||
| 57 | +/* Note that the choice of comparison op here is important to get the | ||
| 58 | + * special cases right: for min and max Intel specifies that (-0,0), | ||
| 59 | + * (NaN, anything) and (anything, NaN) return the second argument. | ||
| 60 | + */ | ||
| 61 | +#define FPU_MIN(size, a, b) float ## size ## _lt(a, b, &env->sse_status) ? (a) : (b) | ||
| 62 | +#define FPU_MAX(size, a, b) float ## size ## _lt(b, a, &env->sse_status) ? (a) : (b) | ||
| 63 | + | ||
| 64 | SSE_HELPER_S(add, FPU_ADD) | ||
| 65 | SSE_HELPER_S(sub, FPU_SUB) | ||
| 66 | SSE_HELPER_S(mul, FPU_MUL) | ||
diff --git a/meta/recipes-devtools/qemu/qemu_0.15.1.bb b/meta/recipes-devtools/qemu/qemu_0.15.1.bb index 05ea5f8ac7..e90f3398d5 100644 --- a/meta/recipes-devtools/qemu/qemu_0.15.1.bb +++ b/meta/recipes-devtools/qemu/qemu_0.15.1.bb | |||
| @@ -3,7 +3,7 @@ require qemu.inc | |||
| 3 | LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \ | 3 | LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \ |
| 4 | file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913" | 4 | file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913" |
| 5 | 5 | ||
| 6 | PR = "r5" | 6 | PR = "r6" |
| 7 | 7 | ||
| 8 | FILESPATH = "${FILE_DIRNAME}/qemu-${PV}" | 8 | FILESPATH = "${FILE_DIRNAME}/qemu-${PV}" |
| 9 | FILESDIR = "${WORKDIR}" | 9 | FILESDIR = "${WORKDIR}" |
| @@ -18,6 +18,7 @@ SRC_URI = "\ | |||
| 18 | file://fallback-to-safe-mmap_min_addr.patch \ | 18 | file://fallback-to-safe-mmap_min_addr.patch \ |
| 19 | file://larger_default_ram_size.patch \ | 19 | file://larger_default_ram_size.patch \ |
| 20 | file://arm-bgr.patch \ | 20 | file://arm-bgr.patch \ |
| 21 | file://a4d1f142542935b90d2eb30f3aead4edcf455fe6.patch \ | ||
| 21 | " | 22 | " |
| 22 | 23 | ||
| 23 | # Only use the GL passthrough patches for native/nativesdk versions | 24 | # Only use the GL passthrough patches for native/nativesdk versions |
