3e41b47
# HG changeset patch
3e41b47
# User aph
3e41b47
# Date 1501690960 -3600
3e41b47
#      Wed Aug 02 17:22:40 2017 +0100
3e41b47
# Node ID 91ab2eac9856ec86c16c0bedd32e0b87974ead6f
3e41b47
# Parent  4e2adbc3d2b512f6b2bf318d2db60f4d1903f8c7
3e41b47
8185723, PR3553: Zero: segfaults on Power PC 32-bit
3e41b47
Reviewed-by: roland
3e41b47
3e41b47
diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
3e41b47
--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
3e41b47
+++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
3e41b47
@@ -38,10 +38,10 @@
3e41b47
   static void atomic_copy64(volatile void *src, volatile void *dst) {
3e41b47
 #if defined(PPC32)
3e41b47
     double tmp;
3e41b47
-    asm volatile ("lfd  %0, 0(%1)\n"
3e41b47
-                  "stfd %0, 0(%2)\n"
3e41b47
-                  : "=f"(tmp)
3e41b47
-                  : "b"(src), "b"(dst));
3e41b47
+    asm volatile ("lfd  %0, %2\n"
3e41b47
+                  "stfd %0, %1\n"
3e41b47
+                  : "=&f"(tmp), "=Q"(*(volatile double*)dst)
3e41b47
+                  : "Q"(*(volatile double*)src));
3e41b47
 #elif defined(S390) && !defined(_LP64)
3e41b47
     double tmp;
3e41b47
     asm volatile ("ld  %0, 0(%1)\n"