36 37 // Atomically copy 64 bits of data 38 static void atomic_copy64(volatile void *src, volatile void *dst) { 39 #if defined(PPC32) 40 double tmp; 41 asm volatile ("lfd %0, 0(%1)\n" 42 "stfd %0, 0(%2)\n" 43 : "=f"(tmp) 44 : "b"(src), "b"(dst)); 45 #elif defined(S390) && !defined(_LP64) 46 double tmp; 47 asm volatile ("ld %0, 0(%1)\n" 48 "std %0, 0(%2)\n" 49 : "=r"(tmp) 50 : "a"(src), "a"(dst)); 51 #else 52 *(jlong *) dst = *(jlong *) src; 53 #endif 54 } 55 56 #endif // OS_CPU_BSD_ZERO_VM_OS_BSD_ZERO_HPP | 36 37 // Atomically copy 64 bits of data 38 static void atomic_copy64(volatile void *src, volatile void *dst) { 39 #if defined(PPC32) 40 double tmp; 41 asm volatile ("lfd %0, 0(%1)\n" 42 "stfd %0, 0(%2)\n" 43 : "=f"(tmp) 44 : "b"(src), "b"(dst)); 45 #elif defined(S390) && !defined(_LP64) 46 double tmp; 47 asm volatile ("ld %0, 0(%1)\n" 48 "std %0, 0(%2)\n" 49 : "=r"(tmp) 50 : "a"(src), "a"(dst)); 51 #else 52 *(jlong *) dst = *(jlong *) src; 53 #endif 54 } 55 56 // Amount beyond the callee frame size that we bang the stack. 57 static int extra_bang_size_in_bytes(); 58 59 #endif // OS_CPU_BSD_ZERO_VM_OS_BSD_ZERO_HPP |