diff --git a/src/os_cpu/linux_zero/vm/os_linux_zero.hpp b/src/os_cpu/linux_zero/vm/os_linux_zero.hpp index db9a2d34f08e7ad7729d1d186affaa3bd7c586ea..0f1ad1668d016f922d1d24480fcbb499665a831a 100644 --- a/src/os_cpu/linux_zero/vm/os_linux_zero.hpp +++ b/src/os_cpu/linux_zero/vm/os_linux_zero.hpp @@ -50,10 +50,10 @@ : "Q"(*(volatile long*)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)); + asm volatile ("ld %0, %2\n" + "std %0, %1\n" + : "=&f"(tmp), "=Q"(*(volatile double*)dst) + : "Q"(*(volatile double*)src)); #else *(jlong *) dst = *(jlong *) src; #endif