backport cpuid fixes (#631674)
This commit is contained in:
parent
a8215e9e8c
commit
9facbd4750
128
lensfun-0.2.5-cpuid.patch
Normal file
128
lensfun-0.2.5-cpuid.patch
Normal file
@ -0,0 +1,128 @@
|
||||
From 9a3301bc3c239e0e74d6bc20f950b338d31457d9 Mon Sep 17 00:00:00 2001
|
||||
From: zap <zap@2a61fa91-e63d-0410-b60c-e65103854af9>
|
||||
Date: Sun, 9 May 2010 13:53:35 +0000
|
||||
Subject: [PATCH] * Modified a little the asm instructions for detecting CPU features
|
||||
* configure will now print the vectorization instrution sets which will be used
|
||||
|
||||
git-svn-id: svn://svn.berlios.de/lensfun/trunk@109 2a61fa91-e63d-0410-b60c-e65103854af9
|
||||
---
|
||||
configure | 1 +
|
||||
libs/lensfun/cpuid.cpp | 28 ++++++++--------------------
|
||||
2 files changed, 9 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 2439096..8cee50a 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -118,4 +118,5 @@ print "Target directory for data files: " + tibs.DATADIR
|
||||
print "Target directory for libraries: " + tibs.LIBDIR
|
||||
print "Target directory for include files: " + tibs.INCLUDEDIR
|
||||
print "Target directory for documentation: " + tibs.DOCDIR
|
||||
+print "Use vector instruction set(-s): " + ", ".join (x for x in tibs.VECTORIZATION)
|
||||
print "--------------------------------------------------------------------"
|
||||
diff --git a/libs/lensfun/cpuid.cpp b/libs/lensfun/cpuid.cpp
|
||||
index ed0ecf9..d7f43b3 100644
|
||||
--- a/libs/lensfun/cpuid.cpp
|
||||
+++ b/libs/lensfun/cpuid.cpp
|
||||
@@ -25,17 +25,13 @@
|
||||
guint _lf_detect_cpu_features ()
|
||||
{
|
||||
#define cpuid(cmd) \
|
||||
- asm ( \
|
||||
- "push %%"R_BX"\n" \
|
||||
+ __asm volatile ( \
|
||||
"cpuid\n" \
|
||||
- "pop %%"R_BX"\n" \
|
||||
: "=a" (ax), "=c" (cx), "=d" (dx) \
|
||||
- : "0" (cmd))
|
||||
+ : "0" (cmd) \
|
||||
+ : R_BX)
|
||||
|
||||
- register __SIZE_TYPE__ ax asm (R_AX);
|
||||
- register __SIZE_TYPE__ bx asm (R_BX);
|
||||
- register __SIZE_TYPE__ dx asm (R_DX);
|
||||
- register __SIZE_TYPE__ cx asm (R_CX);
|
||||
+ __SIZE_TYPE__ ax, cx, dx, tmp;
|
||||
static GStaticMutex lock = G_STATIC_MUTEX_INIT;
|
||||
static guint cpuflags = -1;
|
||||
|
||||
@@ -45,7 +41,7 @@ guint _lf_detect_cpu_features ()
|
||||
cpuflags = 0;
|
||||
|
||||
/* Test cpuid presence by checking bit 21 of eflags */
|
||||
- asm (
|
||||
+ __asm volatile (
|
||||
"pushf\n"
|
||||
"pop %0\n"
|
||||
"mov %0, %1\n"
|
||||
@@ -57,7 +53,7 @@ guint _lf_detect_cpu_features ()
|
||||
"cmp %0, %1\n"
|
||||
"setne %%al\n"
|
||||
"movzb %%al, %0\n"
|
||||
- : "=r" (ax), "=r" (bx));
|
||||
+ : "=r" (ax), "=r" (tmp));
|
||||
|
||||
if (ax)
|
||||
{
|
||||
@@ -88,12 +84,12 @@ guint _lf_detect_cpu_features ()
|
||||
cpuflags |= LF_CPU_FLAG_SSE4_2;
|
||||
}
|
||||
|
||||
- /* Is there extensions */
|
||||
+ /* Are there extensions? */
|
||||
cpuid (0x80000000);
|
||||
|
||||
if (ax)
|
||||
{
|
||||
- /* Request for extensions */
|
||||
+ /* Ask extensions */
|
||||
cpuid (0x80000001);
|
||||
|
||||
if (dx & 0x80000000)
|
||||
@@ -112,12 +108,4 @@ guint _lf_detect_cpu_features ()
|
||||
#undef cpuid
|
||||
}
|
||||
|
||||
-#else
|
||||
-
|
||||
-guint
|
||||
-rs_detect_cpu_features()
|
||||
-{
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
#endif /* __i386__ || __x86_64__ */
|
||||
--
|
||||
1.7.2.3
|
||||
|
||||
From 19a5478ec455de6a9201d5acf5e844a926761bdb Mon Sep 17 00:00:00 2001
|
||||
From: zap <zap@2a61fa91-e63d-0410-b60c-e65103854af9>
|
||||
Date: Wed, 12 May 2010 19:31:09 +0000
|
||||
Subject: [PATCH] * cpuid.cpp: push/pop ebx instead of marking it as clobbered, because gcc can't survive that when using -fPIC
|
||||
|
||||
git-svn-id: svn://svn.berlios.de/lensfun/trunk@110 2a61fa91-e63d-0410-b60c-e65103854af9
|
||||
---
|
||||
libs/lensfun/cpuid.cpp | 5 +++--
|
||||
1 files changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libs/lensfun/cpuid.cpp b/libs/lensfun/cpuid.cpp
|
||||
index d7f43b3..491412c 100644
|
||||
--- a/libs/lensfun/cpuid.cpp
|
||||
+++ b/libs/lensfun/cpuid.cpp
|
||||
@@ -26,10 +26,11 @@ guint _lf_detect_cpu_features ()
|
||||
{
|
||||
#define cpuid(cmd) \
|
||||
__asm volatile ( \
|
||||
+ "push %%"R_BX"\n" \
|
||||
"cpuid\n" \
|
||||
+ "pop %%"R_BX"\n" \
|
||||
: "=a" (ax), "=c" (cx), "=d" (dx) \
|
||||
- : "0" (cmd) \
|
||||
- : R_BX)
|
||||
+ : "0" (cmd))
|
||||
|
||||
__SIZE_TYPE__ ax, cx, dx, tmp;
|
||||
static GStaticMutex lock = G_STATIC_MUTEX_INIT;
|
||||
--
|
||||
1.7.2.3
|
||||
|
@ -4,11 +4,12 @@
|
||||
Name: lensfun
|
||||
Version: 0.2.5
|
||||
Summary: Library to rectify defects introduced by photographic lenses
|
||||
Release: 2%{?dist}
|
||||
Release: 3%{?dist}
|
||||
License: LGPLv3 and CC-BY-SA
|
||||
Group: System Environment/Libraries
|
||||
URL: http://lensfun.berlios.de/
|
||||
Source0: http://download.berlios.de/lensfun/lensfun-%{version}.tar.bz2
|
||||
Patch0: lensfun-0.2.5-cpuid.patch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
|
||||
BuildRequires: doxygen
|
||||
@ -39,6 +40,7 @@ using lensfun.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1 -b .cpuid
|
||||
|
||||
|
||||
%build
|
||||
@ -98,6 +100,9 @@ rm -rf %{buildroot}
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon Sep 20 2010 Nils Philippsen <nils@redhat.com> 0.2.5-3
|
||||
- backport cpuid fixes (#631674)
|
||||
|
||||
* Mon Jul 26 2010 Dan Horák <dan[at]danny.cz> 0.2.5-2
|
||||
- disable SSE vectorization on non x86 arches
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user