File zero-atomic_copy64.patch of Package java-1_8_0-openjdk

--- openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp	2017-08-31 16:35:40.546293657 +0200
+++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp	2017-08-31 16:39:53.186297970 +0200
@@ -36,18 +36,19 @@
 
   // Atomically copy 64 bits of data
   static void atomic_copy64(volatile void *src, volatile void *dst) {
-#if defined(PPC32)
+#if defined(PPC32) && !defined(__NO_FPRS__)
     double tmp;
-    asm volatile ("lfd  %0, 0(%1)\n"
-                  "stfd %0, 0(%2)\n"
-                  : "=f"(tmp)
-                  : "b"(src), "b"(dst));
+    asm volatile ("lfd  %0, %2\n"
+                  "stfd %0, %1\n"
+                  : "=&f"(tmp), "=Q"(*(volatile double*)dst)
+                  : "Q"(*(volatile double*)src));
 #elif defined(S390) && !defined(_LP64)
     double tmp;
     asm volatile ("ld  %0, 0(%1)\n"
                   "std %0, 0(%2)\n"
-                  : "=r"(tmp)
-                  : "a"(src), "a"(dst));
+                  : "=&r"(tmp)
+                  : "a"(src), "a"(dst)
+                  : "memory");
 #else
     *(jlong *) dst = *(jlong *) src;
 #endif
openSUSE Build Service is sponsored by