ppc --with-tsc fixes
re-enable and fix the --with-tsc option on ppc64, and rework it on 32-bit ppc to avoid aliasing violations (patch 129; rhbz#698726)
This commit is contained in:
parent
4763ff864f
commit
ceb359a69b
58
python-2.7.2-tsc-on-ppc.patch
Normal file
58
python-2.7.2-tsc-on-ppc.patch
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
diff -up Python-2.7.2/Python/ceval.c.tsc-on-ppc Python-2.7.2/Python/ceval.c
|
||||||
|
--- Python-2.7.2/Python/ceval.c.tsc-on-ppc 2011-08-23 14:59:48.051300849 -0400
|
||||||
|
+++ Python-2.7.2/Python/ceval.c 2011-08-23 15:33:25.412162902 -0400
|
||||||
|
@@ -37,24 +37,42 @@ typedef unsigned long long uint64;
|
||||||
|
*/
|
||||||
|
#if defined(__ppc__) || defined (__powerpc__)
|
||||||
|
|
||||||
|
-#define READ_TIMESTAMP(var) ppc_getcounter(&var)
|
||||||
|
+#if defined( __powerpc64__) || defined(__LP64__)
|
||||||
|
+/* 64-bit PowerPC */
|
||||||
|
+#define READ_TIMESTAMP(var) ppc64_getcounter(&var)
|
||||||
|
+static void
|
||||||
|
+ppc64_getcounter(uint64 *v)
|
||||||
|
+{
|
||||||
|
+ /* On 64-bit PowerPC we can read the 64-bit timebase directly into a
|
||||||
|
+ 64-bit register */
|
||||||
|
+ uint64 timebase;
|
||||||
|
+#ifdef _ARCH_PWR4
|
||||||
|
+ asm volatile ("mfspr %0,268" : "=r" (timebase));
|
||||||
|
+#else
|
||||||
|
+ asm volatile ("mftb %0" : "=r" (timebase));
|
||||||
|
+#endif
|
||||||
|
+ *v = timebase;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#else
|
||||||
|
+/* 32-bit PowerPC */
|
||||||
|
+#define READ_TIMESTAMP(var) ppc32_getcounter(&var)
|
||||||
|
|
||||||
|
static void
|
||||||
|
-ppc_getcounter(uint64 *v)
|
||||||
|
+ppc32_getcounter(uint64 *v)
|
||||||
|
{
|
||||||
|
- register unsigned long tbu, tb, tbu2;
|
||||||
|
+ union { long long ll; long ii[2]; } u;
|
||||||
|
+ long tmp;
|
||||||
|
|
||||||
|
loop:
|
||||||
|
- asm volatile ("mftbu %0" : "=r" (tbu) );
|
||||||
|
- asm volatile ("mftb %0" : "=r" (tb) );
|
||||||
|
- asm volatile ("mftbu %0" : "=r" (tbu2));
|
||||||
|
- if (__builtin_expect(tbu != tbu2, 0)) goto loop;
|
||||||
|
-
|
||||||
|
- /* The slightly peculiar way of writing the next lines is
|
||||||
|
- compiled better by GCC than any other way I tried. */
|
||||||
|
- ((long*)(v))[0] = tbu;
|
||||||
|
- ((long*)(v))[1] = tb;
|
||||||
|
+ asm volatile ("mftbu %0" : "=r" (u.ii[0]) );
|
||||||
|
+ asm volatile ("mftb %0" : "=r" (u.ii[1]) );
|
||||||
|
+ asm volatile ("mftbu %0" : "=r" (tmp));
|
||||||
|
+ if (__builtin_expect(u.ii[0] != tmp, 0)) goto loop;
|
||||||
|
+
|
||||||
|
+ *v = u.ll;
|
||||||
|
}
|
||||||
|
+#endif /* powerpc 32/64 bit */
|
||||||
|
|
||||||
|
#elif defined(__i386__)
|
||||||
|
|
14
python3.spec
14
python3.spec
@ -118,7 +118,7 @@
|
|||||||
Summary: Version 3 of the Python programming language aka Python 3000
|
Summary: Version 3 of the Python programming language aka Python 3000
|
||||||
Name: python3
|
Name: python3
|
||||||
Version: %{pybasever}.1
|
Version: %{pybasever}.1
|
||||||
Release: 4%{?dist}
|
Release: 5%{?dist}
|
||||||
License: Python
|
License: Python
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
|
|
||||||
@ -266,6 +266,11 @@ Patch128: python-3.2b2-test_sys-COUNT_ALLOCS.patch
|
|||||||
# Not yet sent upstream
|
# Not yet sent upstream
|
||||||
Patch129: python-3.2.1-fix-test-subprocess-with-nonreadable-path-dir.patch
|
Patch129: python-3.2.1-fix-test-subprocess-with-nonreadable-path-dir.patch
|
||||||
|
|
||||||
|
# Fix the --with-tsc option on ppc64, and rework it on 32-bit ppc to avoid
|
||||||
|
# aliasing violations (rhbz#698726)
|
||||||
|
# Not yet sent upstream
|
||||||
|
Patch130: python-2.7.2-tsc-on-ppc.patch
|
||||||
|
|
||||||
# This is the generated patch to "configure"; see the description of
|
# This is the generated patch to "configure"; see the description of
|
||||||
# %{regenerate_autotooling_patch}
|
# %{regenerate_autotooling_patch}
|
||||||
# above:
|
# above:
|
||||||
@ -424,6 +429,7 @@ rm -r Modules/zlib || exit 1
|
|||||||
%patch127 -p1
|
%patch127 -p1
|
||||||
%patch128 -p1
|
%patch128 -p1
|
||||||
%patch129 -p1
|
%patch129 -p1
|
||||||
|
%patch130 -p1 -b .tsc-on-ppc
|
||||||
|
|
||||||
# Currently (2010-01-15), http://docs.python.org/library is for 2.6, and there
|
# Currently (2010-01-15), http://docs.python.org/library is for 2.6, and there
|
||||||
# are many differences between 2.6 and the Python 3 library.
|
# are many differences between 2.6 and the Python 3 library.
|
||||||
@ -536,7 +542,7 @@ BuildPython() {
|
|||||||
BuildPython debug \
|
BuildPython debug \
|
||||||
python-debug \
|
python-debug \
|
||||||
python%{pybasever}-debug \
|
python%{pybasever}-debug \
|
||||||
%ifarch %{ix86} x86_64 ppc
|
%ifarch %{ix86} x86_64 ppc ppc64
|
||||||
"--with-pydebug --with-tsc --with-count-allocs --with-call-profile" \
|
"--with-pydebug --with-tsc --with-count-allocs --with-call-profile" \
|
||||||
%else
|
%else
|
||||||
"--with-pydebug --with-count-allocs --with-call-profile" \
|
"--with-pydebug --with-count-allocs --with-call-profile" \
|
||||||
@ -1290,6 +1296,10 @@ rm -fr %{buildroot}
|
|||||||
# ======================================================
|
# ======================================================
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Aug 23 2011 David Malcolm <dmalcolm@redhat.com> - 3.2.1-5
|
||||||
|
- re-enable and fix the --with-tsc option on ppc64, and rework it on 32-bit
|
||||||
|
ppc to avoid aliasing violations (patch 130; rhbz#698726)
|
||||||
|
|
||||||
* Tue Aug 23 2011 David Malcolm <dmalcolm@redhat.com> - 3.2.1-4
|
* Tue Aug 23 2011 David Malcolm <dmalcolm@redhat.com> - 3.2.1-4
|
||||||
- don't use --with-tsc on ppc64 debug builds (rhbz#698726)
|
- don't use --with-tsc on ppc64 debug builds (rhbz#698726)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user