- 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
This commit is contained in:
parent
96c09584fd
commit
f57f50d7a2
@ -10,3 +10,60 @@
|
|||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#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
|
||||||
|
|
||||||
|
@ -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
|
Mon May 2 14:45:43 UTC 2011 - idoenmez@novell.com
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user