From 96c09584fdb650affdf85d08d3061bea0086f9fb56b5cb5229f7748cbe1adb0f Mon Sep 17 00:00:00 2001 From: OBS User buildservice-autocommit Date: Tue, 3 May 2011 07:05:56 +0000 Subject: [PATCH 1/2] Updating link to change in openSUSE:Factory/djvulibre revision 21.0 OBS-URL: https://build.opensuse.org/package/show/graphics/djvulibre?expand=0&rev=f88b795d9fbc351b54f70696675971b9 --- djvulibre.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/djvulibre.spec b/djvulibre.spec index 8cd57fc..9feb426 100644 --- a/djvulibre.spec +++ b/djvulibre.spec @@ -24,7 +24,7 @@ License: GPLv2+ Group: Productivity/Graphics/Other AutoReqProv: on Version: 3.5.24 -Release: 1 +Release: 2 Url: http://djvu.sourceforge.net Summary: An Open Source Implementation of DjVu Source: %{name}-%{version}.tar.bz2 From f57f50d7a24865b00cadeccc6f543381f5d47b0dd77f7525e85c1ee394f3e5a8 Mon Sep 17 00:00:00 2001 From: Petr Gajdos Date: Thu, 9 Jun 2011 10:43:29 +0000 Subject: [PATCH 2/2] - Fix MMX code when using gcc-4.6 [bnc#696824] * adjusted gcc46.patch OBS-URL: https://build.opensuse.org/package/show/graphics/djvulibre?expand=0&rev=9 --- djvulibre-3.5.23-gcc46.patch | 57 ++++++++++++++++++++++++++++++++++++ djvulibre.changes | 6 ++++ 2 files changed, 63 insertions(+) diff --git a/djvulibre-3.5.23-gcc46.patch b/djvulibre-3.5.23-gcc46.patch index 52becea..1cfb784 100644 --- a/djvulibre-3.5.23-gcc46.patch +++ b/djvulibre-3.5.23-gcc46.patch @@ -10,3 +10,60 @@ #ifdef HAVE_CONFIG_H #include "config.h" #endif +diff --git a/libdjvu/MMX.cpp b/libdjvu/MMX.cpp +index 528dab6..e70fdd8 100644 +--- a/libdjvu/MMX.cpp ++++ b/libdjvu/MMX.cpp +@@ -167,8 +167,23 @@ MMXControl::enable_mmx() + : "=m" (cpuflags) : + : "eax","ecx","edx"); + #endif ++#if defined(MMX) && defined(__GNUC__) && defined(__x86_64__) ++ // Detection of MMX for GCC ++ __asm__ volatile (// Check that CR0:EM is clear ++ "xorl %%edx,%%edx\n\t" ++ "smsw %%ax\n\t" ++ "andl $4,%%eax\n\t" ++ "jnz 1f\n\t" ++ // Execute CPUID ++ "movl $1,%%eax\n\t" ++ "cpuid\n" ++ // Finish ++ "1:\tmovl %%edx, %0" ++ : "=m" (cpuflags) : ++ : "eax","ebx","ecx","edx"); ++#endif + #if defined(MMX) && defined(_MSC_VER) && defined(_M_IX86) +- // Detection of MMX for MSVC ++ // Detection of MMX for MSVC 32 bits + __asm { pushfd + pop ecx + xor edx,edx +diff --git a/libdjvu/MMX.h b/libdjvu/MMX.h +index b0af5e5..f8780af 100644 +--- a/libdjvu/MMX.h ++++ b/libdjvu/MMX.h +@@ -143,17 +143,18 @@ class MMXControl + + #ifndef NO_MMX + +-#if defined(__GNUC__) && defined(__i386__) ++#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) ++typedef struct{ char c[8]; } MMX_t; + #define MMXemms \ + __asm__ volatile("emms" : : : "memory" ) + #define MMXrr(op,src,dst) \ +- __asm__ volatile( #op " %%" #src ",%%" #dst : : : "memory") ++ __asm__ volatile( #op " %%" #src ",%%" #dst : : : "memory" ) + #define MMXir(op,imm,dst) \ +- __asm__ volatile( #op " %0,%%" #dst : : "i" (imm) : "memory") ++ __asm__ volatile( #op " %0,%%" #dst : : "i" (imm) : "memory" ) + #define MMXar(op,addr,dst) \ +- __asm__ volatile( #op " %0,%%" #dst : : "m" (*(addr)) : "memory") ++ __asm__ volatile( #op " %0,%%" #dst : : "m" (*(MMX_t*)(addr)) : "memory" ) + #define MMXra(op,src,addr) \ +- __asm__ volatile( #op " %%" #src ",%0" : : "m" (*(addr)) : "memory") ++ __asm__ volatile( #op " %%" #src ",%0" : "=m" (*(MMX_t*)(addr)) : : "memory") + #define MMX 1 + #endif + diff --git a/djvulibre.changes b/djvulibre.changes index d76ff29..e9d61c3 100644 --- a/djvulibre.changes +++ b/djvulibre.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Jun 9 10:22:43 UTC 2011 - pgajdos@novell.com + +- Fix MMX code when using gcc-4.6 [bnc#696824] + * adjusted gcc46.patch + ------------------------------------------------------------------- Mon May 2 14:45:43 UTC 2011 - idoenmez@novell.com