[kernel] r22282 - in dists/trunk/linux/debian: . patches patches/bugfix/parisc
Helge Deller
deller-guest at moszumanska.debian.org
Mon Jan 19 07:54:49 UTC 2015
Author: deller-guest
Date: Mon Jan 19 07:54:49 2015
New Revision: 22282
Log:
[hppa] apply upstream patch for ldcw.h
Added:
dists/trunk/linux/debian/patches/bugfix/parisc/hppa-fix_ldcw.patch
Modified:
dists/trunk/linux/debian/changelog
dists/trunk/linux/debian/patches/series
Modified: dists/trunk/linux/debian/changelog
==============================================================================
--- dists/trunk/linux/debian/changelog Mon Jan 19 07:49:53 2015 (r22281)
+++ dists/trunk/linux/debian/changelog Mon Jan 19 07:54:49 2015 (r22282)
@@ -20,6 +20,7 @@
(Closes: #770102)
* [hppa] Create build-dependencies on binutils-hppa64 and gcc-4.9-hppa64
* [hppa] Enable CONFIG_PPDEV to avoid CUPS complaining
+ * [hppa] apply upstream patch for ldcw.h which is needed with gcc-4.9
[ Ben Hutchings ]
* [sh4] ftrace: Remove -m32 option from recordmcount.pl (Closes: #775611)
Added: dists/trunk/linux/debian/patches/bugfix/parisc/hppa-fix_ldcw.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/trunk/linux/debian/patches/bugfix/parisc/hppa-fix_ldcw.patch Mon Jan 19 07:54:49 2015 (r22282)
@@ -0,0 +1,42 @@
+upstream commit 45db07382a5c78b0c43b3b0002b63757fb60e873
+Author: John David Anglin <dave.anglin at bell.net>
+Date: Sun Dec 14 10:49:11 2014 -0500
+
+ parisc: fix out-of-register compiler error in ldcw inline assembler function
+
+ The __ldcw macro has a problem when its argument needs to be reloaded from
+ memory. The output memory operand and the input register operand both need to
+ be reloaded using a register in class R1_REGS when generating 64-bit code.
+ This fails because there's only a single register in the class. Instead, use a
+ memory clobber. This also makes the __ldcw macro a compiler memory barrier.
+
+ Signed-off-by: John David Anglin <dave.anglin at bell.net>
+ Cc: <stable at vger.kernel.org> [3.13+]
+ Signed-off-by: Helge Deller <deller at gmx.de>
+
+diff --git a/arch/parisc/include/asm/ldcw.h b/arch/parisc/include/asm/ldcw.h
+index d2d11b7..8121aa6 100644
+--- a/arch/parisc/include/asm/ldcw.h
++++ b/arch/parisc/include/asm/ldcw.h
+@@ -33,11 +33,18 @@
+
+ #endif /*!CONFIG_PA20*/
+
+-/* LDCW, the only atomic read-write operation PA-RISC has. *sigh*. */
++/* LDCW, the only atomic read-write operation PA-RISC has. *sigh*.
++ We don't explicitly expose that "*a" may be written as reload
++ fails to find a register in class R1_REGS when "a" needs to be
++ reloaded when generating 64-bit PIC code. Instead, we clobber
++ memory to indicate to the compiler that the assembly code reads
++ or writes to items other than those listed in the input and output
++ operands. This may pessimize the code somewhat but __ldcw is
++ usually used within code blocks surrounded by memory barriors. */
+ #define __ldcw(a) ({ \
+ unsigned __ret; \
+- __asm__ __volatile__(__LDCW " 0(%2),%0" \
+- : "=r" (__ret), "+m" (*(a)) : "r" (a)); \
++ __asm__ __volatile__(__LDCW " 0(%1),%0" \
++ : "=r" (__ret) : "r" (a) : "memory"); \
+ __ret; \
+ })
+
Modified: dists/trunk/linux/debian/patches/series
==============================================================================
--- dists/trunk/linux/debian/patches/series Mon Jan 19 07:49:53 2015 (r22281)
+++ dists/trunk/linux/debian/patches/series Mon Jan 19 07:54:49 2015 (r22282)
@@ -43,6 +43,7 @@
bugfix/arm64/arm64-add-missing-dts-entry-for-X-Gene-platform.patch
bugfix/arm64/arm64-removed-using-of-the-mask-attribute-in-the-dts.patch
bugfix/x86/acpi-video-run-_bcl-before-deciding-registering-back.patch
+bugfix/parisc/hppa-fix_ldcw.patch
# Arch features
features/mips/MIPS-increase-MAX-PHYSMEM-BITS-on-Loongson-3-only.patch
More information about the Kernel-svn-changes
mailing list