duke@435: /* jrose@1934: * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. duke@435: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. duke@435: * duke@435: * This code is free software; you can redistribute it and/or modify it duke@435: * under the terms of the GNU General Public License version 2 only, as duke@435: * published by the Free Software Foundation. duke@435: * duke@435: * This code is distributed in the hope that it will be useful, but WITHOUT duke@435: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or duke@435: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License duke@435: * version 2 for more details (a copy is included in the LICENSE file that duke@435: * accompanied this code). duke@435: * duke@435: * You should have received a copy of the GNU General Public License version duke@435: * 2 along with this work; if not, write to the Free Software Foundation, duke@435: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. duke@435: * 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. duke@435: * duke@435: */ duke@435: stefank@2314: #include "precompiled.hpp" stefank@2314: #include "asm/assembler.hpp" stefank@2314: #include "asm/register.hpp" stefank@2314: #include "register_x86.hpp" stefank@2314: #ifdef TARGET_ARCH_MODEL_x86_32 stefank@2314: # include "interp_masm_x86_32.hpp" stefank@2314: #endif stefank@2314: #ifdef TARGET_ARCH_MODEL_x86_64 stefank@2314: # include "interp_masm_x86_64.hpp" stefank@2314: #endif duke@435: duke@435: REGISTER_DEFINITION(Register, noreg); duke@435: REGISTER_DEFINITION(Register, rax); duke@435: REGISTER_DEFINITION(Register, rcx); duke@435: REGISTER_DEFINITION(Register, rdx); duke@435: REGISTER_DEFINITION(Register, rbx); duke@435: REGISTER_DEFINITION(Register, rsp); duke@435: REGISTER_DEFINITION(Register, rbp); duke@435: REGISTER_DEFINITION(Register, rsi); duke@435: REGISTER_DEFINITION(Register, rdi); duke@435: #ifdef AMD64 duke@435: REGISTER_DEFINITION(Register, r8); duke@435: REGISTER_DEFINITION(Register, r9); duke@435: REGISTER_DEFINITION(Register, r10); duke@435: REGISTER_DEFINITION(Register, r11); duke@435: REGISTER_DEFINITION(Register, r12); duke@435: REGISTER_DEFINITION(Register, r13); duke@435: REGISTER_DEFINITION(Register, r14); duke@435: REGISTER_DEFINITION(Register, r15); duke@435: #endif // AMD64 duke@435: duke@435: REGISTER_DEFINITION(XMMRegister, xmm0 ); duke@435: REGISTER_DEFINITION(XMMRegister, xmm1 ); duke@435: REGISTER_DEFINITION(XMMRegister, xmm2 ); duke@435: REGISTER_DEFINITION(XMMRegister, xmm3 ); duke@435: REGISTER_DEFINITION(XMMRegister, xmm4 ); duke@435: REGISTER_DEFINITION(XMMRegister, xmm5 ); duke@435: REGISTER_DEFINITION(XMMRegister, xmm6 ); duke@435: REGISTER_DEFINITION(XMMRegister, xmm7 ); duke@435: #ifdef AMD64 duke@435: REGISTER_DEFINITION(XMMRegister, xmm8); duke@435: REGISTER_DEFINITION(XMMRegister, xmm9); duke@435: REGISTER_DEFINITION(XMMRegister, xmm10); duke@435: REGISTER_DEFINITION(XMMRegister, xmm11); duke@435: REGISTER_DEFINITION(XMMRegister, xmm12); duke@435: REGISTER_DEFINITION(XMMRegister, xmm13); duke@435: REGISTER_DEFINITION(XMMRegister, xmm14); duke@435: REGISTER_DEFINITION(XMMRegister, xmm15); duke@435: duke@435: REGISTER_DEFINITION(Register, c_rarg0); duke@435: REGISTER_DEFINITION(Register, c_rarg1); duke@435: REGISTER_DEFINITION(Register, c_rarg2); duke@435: REGISTER_DEFINITION(Register, c_rarg3); duke@435: duke@435: REGISTER_DEFINITION(XMMRegister, c_farg0); duke@435: REGISTER_DEFINITION(XMMRegister, c_farg1); duke@435: REGISTER_DEFINITION(XMMRegister, c_farg2); duke@435: REGISTER_DEFINITION(XMMRegister, c_farg3); duke@435: duke@435: // Non windows OS's have a few more argument registers duke@435: #ifndef _WIN64 duke@435: REGISTER_DEFINITION(Register, c_rarg4); duke@435: REGISTER_DEFINITION(Register, c_rarg5); duke@435: duke@435: REGISTER_DEFINITION(XMMRegister, c_farg4); duke@435: REGISTER_DEFINITION(XMMRegister, c_farg5); duke@435: REGISTER_DEFINITION(XMMRegister, c_farg6); duke@435: REGISTER_DEFINITION(XMMRegister, c_farg7); duke@435: #endif /* _WIN64 */ duke@435: duke@435: REGISTER_DEFINITION(Register, j_rarg0); duke@435: REGISTER_DEFINITION(Register, j_rarg1); duke@435: REGISTER_DEFINITION(Register, j_rarg2); duke@435: REGISTER_DEFINITION(Register, j_rarg3); duke@435: REGISTER_DEFINITION(Register, j_rarg4); duke@435: REGISTER_DEFINITION(Register, j_rarg5); duke@435: duke@435: REGISTER_DEFINITION(XMMRegister, j_farg0); duke@435: REGISTER_DEFINITION(XMMRegister, j_farg1); duke@435: REGISTER_DEFINITION(XMMRegister, j_farg2); duke@435: REGISTER_DEFINITION(XMMRegister, j_farg3); duke@435: REGISTER_DEFINITION(XMMRegister, j_farg4); duke@435: REGISTER_DEFINITION(XMMRegister, j_farg5); duke@435: REGISTER_DEFINITION(XMMRegister, j_farg6); duke@435: REGISTER_DEFINITION(XMMRegister, j_farg7); duke@435: duke@435: REGISTER_DEFINITION(Register, rscratch1); duke@435: REGISTER_DEFINITION(Register, rscratch2); duke@435: coleenp@548: REGISTER_DEFINITION(Register, r12_heapbase); duke@435: REGISTER_DEFINITION(Register, r15_thread); duke@435: #endif // AMD64 duke@435: duke@435: REGISTER_DEFINITION(MMXRegister, mmx0 ); duke@435: REGISTER_DEFINITION(MMXRegister, mmx1 ); duke@435: REGISTER_DEFINITION(MMXRegister, mmx2 ); duke@435: REGISTER_DEFINITION(MMXRegister, mmx3 ); duke@435: REGISTER_DEFINITION(MMXRegister, mmx4 ); duke@435: REGISTER_DEFINITION(MMXRegister, mmx5 ); duke@435: REGISTER_DEFINITION(MMXRegister, mmx6 ); duke@435: REGISTER_DEFINITION(MMXRegister, mmx7 ); twisti@1919: twisti@1919: // JSR 292 twisti@1919: REGISTER_DEFINITION(Register, rbp_mh_SP_save);