never@1445: /* trims@1907: * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. twisti@1701: * Copyright 2007, 2008, 2010 Red Hat, Inc. never@1445: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. never@1445: * never@1445: * This code is free software; you can redistribute it and/or modify it never@1445: * under the terms of the GNU General Public License version 2 only, as never@1445: * published by the Free Software Foundation. never@1445: * never@1445: * This code is distributed in the hope that it will be useful, but WITHOUT never@1445: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or never@1445: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License never@1445: * version 2 for more details (a copy is included in the LICENSE file that never@1445: * accompanied this code). never@1445: * never@1445: * You should have received a copy of the GNU General Public License version never@1445: * 2 along with this work; if not, write to the Free Software Foundation, never@1445: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. never@1445: * trims@1907: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA trims@1907: * or visit www.oracle.com if you need additional information or have any trims@1907: * questions. never@1445: * never@1445: */ never@1445: never@1445: static void setup_fpu() {} never@1445: never@1445: static bool is_allocatable(size_t bytes); never@1445: never@1445: // Used to register dynamic code cache area with the OS never@1445: // Note: Currently only used in 64 bit Windows implementations never@1445: static bool register_code_area(char *low, char *high) { return true; } never@1445: never@1445: // Atomically copy 64 bits of data never@1445: static void atomic_copy64(volatile void *src, volatile void *dst) { never@1445: #if defined(PPC) && !defined(_LP64) never@1445: double tmp; never@1445: asm volatile ("lfd %0, 0(%1)\n" never@1445: "stfd %0, 0(%2)\n" never@1445: : "=f"(tmp) never@1445: : "b"(src), "b"(dst)); twisti@1701: #elif defined(S390) && !defined(_LP64) twisti@1701: double tmp; twisti@1701: asm volatile ("ld %0, 0(%1)\n" twisti@1701: "std %0, 0(%2)\n" twisti@1701: : "=r"(tmp) twisti@1701: : "a"(src), "a"(dst)); never@1445: #else never@1445: *(jlong *) dst = *(jlong *) src; twisti@1701: #endif never@1445: }