1/*
2 * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25#include "precompiled.hpp"
26#include "asm/assembler.hpp"
27#include "asm/register.hpp"
28#include "register_x86.hpp"
29#include "interp_masm_x86.hpp"
30
31REGISTER_DEFINITION(Register, noreg);
32REGISTER_DEFINITION(Register, rax);
33REGISTER_DEFINITION(Register, rcx);
34REGISTER_DEFINITION(Register, rdx);
35REGISTER_DEFINITION(Register, rbx);
36REGISTER_DEFINITION(Register, rsp);
37REGISTER_DEFINITION(Register, rbp);
38REGISTER_DEFINITION(Register, rsi);
39REGISTER_DEFINITION(Register, rdi);
40#ifdef AMD64
41REGISTER_DEFINITION(Register, r8);
42REGISTER_DEFINITION(Register, r9);
43REGISTER_DEFINITION(Register, r10);
44REGISTER_DEFINITION(Register, r11);
45REGISTER_DEFINITION(Register, r12);
46REGISTER_DEFINITION(Register, r13);
47REGISTER_DEFINITION(Register, r14);
48REGISTER_DEFINITION(Register, r15);
49#endif // AMD64
50
51REGISTER_DEFINITION(FloatRegister, fnoreg);
52
53REGISTER_DEFINITION(XMMRegister, xnoreg);
54REGISTER_DEFINITION(XMMRegister, xmm0 );
55REGISTER_DEFINITION(XMMRegister, xmm1 );
56REGISTER_DEFINITION(XMMRegister, xmm2 );
57REGISTER_DEFINITION(XMMRegister, xmm3 );
58REGISTER_DEFINITION(XMMRegister, xmm4 );
59REGISTER_DEFINITION(XMMRegister, xmm5 );
60REGISTER_DEFINITION(XMMRegister, xmm6 );
61REGISTER_DEFINITION(XMMRegister, xmm7 );
62#ifdef AMD64
63REGISTER_DEFINITION(XMMRegister, xmm8);
64REGISTER_DEFINITION(XMMRegister, xmm9);
65REGISTER_DEFINITION(XMMRegister, xmm10);
66REGISTER_DEFINITION(XMMRegister, xmm11);
67REGISTER_DEFINITION(XMMRegister, xmm12);
68REGISTER_DEFINITION(XMMRegister, xmm13);
69REGISTER_DEFINITION(XMMRegister, xmm14);
70REGISTER_DEFINITION(XMMRegister, xmm15);
71REGISTER_DEFINITION(XMMRegister, xmm16);
72REGISTER_DEFINITION(XMMRegister, xmm17);
73REGISTER_DEFINITION(XMMRegister, xmm18);
74REGISTER_DEFINITION(XMMRegister, xmm19);
75REGISTER_DEFINITION(XMMRegister, xmm20);
76REGISTER_DEFINITION(XMMRegister, xmm21);
77REGISTER_DEFINITION(XMMRegister, xmm22);
78REGISTER_DEFINITION(XMMRegister, xmm23);
79REGISTER_DEFINITION(XMMRegister, xmm24);
80REGISTER_DEFINITION(XMMRegister, xmm25);
81REGISTER_DEFINITION(XMMRegister, xmm26);
82REGISTER_DEFINITION(XMMRegister, xmm27);
83REGISTER_DEFINITION(XMMRegister, xmm28);
84REGISTER_DEFINITION(XMMRegister, xmm29);
85REGISTER_DEFINITION(XMMRegister, xmm30);
86REGISTER_DEFINITION(XMMRegister, xmm31);
87
88REGISTER_DEFINITION(Register, c_rarg0);
89REGISTER_DEFINITION(Register, c_rarg1);
90REGISTER_DEFINITION(Register, c_rarg2);
91REGISTER_DEFINITION(Register, c_rarg3);
92
93REGISTER_DEFINITION(XMMRegister, c_farg0);
94REGISTER_DEFINITION(XMMRegister, c_farg1);
95REGISTER_DEFINITION(XMMRegister, c_farg2);
96REGISTER_DEFINITION(XMMRegister, c_farg3);
97
98// Non windows OS's have a few more argument registers
99#ifndef _WIN64
100REGISTER_DEFINITION(Register, c_rarg4);
101REGISTER_DEFINITION(Register, c_rarg5);
102
103REGISTER_DEFINITION(XMMRegister, c_farg4);
104REGISTER_DEFINITION(XMMRegister, c_farg5);
105REGISTER_DEFINITION(XMMRegister, c_farg6);
106REGISTER_DEFINITION(XMMRegister, c_farg7);
107#endif /* _WIN64 */
108
109REGISTER_DEFINITION(Register, j_rarg0);
110REGISTER_DEFINITION(Register, j_rarg1);
111REGISTER_DEFINITION(Register, j_rarg2);
112REGISTER_DEFINITION(Register, j_rarg3);
113REGISTER_DEFINITION(Register, j_rarg4);
114REGISTER_DEFINITION(Register, j_rarg5);
115
116REGISTER_DEFINITION(XMMRegister, j_farg0);
117REGISTER_DEFINITION(XMMRegister, j_farg1);
118REGISTER_DEFINITION(XMMRegister, j_farg2);
119REGISTER_DEFINITION(XMMRegister, j_farg3);
120REGISTER_DEFINITION(XMMRegister, j_farg4);
121REGISTER_DEFINITION(XMMRegister, j_farg5);
122REGISTER_DEFINITION(XMMRegister, j_farg6);
123REGISTER_DEFINITION(XMMRegister, j_farg7);
124
125REGISTER_DEFINITION(Register, rscratch1);
126REGISTER_DEFINITION(Register, rscratch2);
127
128REGISTER_DEFINITION(Register, r12_heapbase);
129REGISTER_DEFINITION(Register, r15_thread);
130#endif // AMD64
131
132REGISTER_DEFINITION(MMXRegister, mnoreg );
133REGISTER_DEFINITION(MMXRegister, mmx0 );
134REGISTER_DEFINITION(MMXRegister, mmx1 );
135REGISTER_DEFINITION(MMXRegister, mmx2 );
136REGISTER_DEFINITION(MMXRegister, mmx3 );
137REGISTER_DEFINITION(MMXRegister, mmx4 );
138REGISTER_DEFINITION(MMXRegister, mmx5 );
139REGISTER_DEFINITION(MMXRegister, mmx6 );
140REGISTER_DEFINITION(MMXRegister, mmx7 );
141
142REGISTER_DEFINITION(KRegister, knoreg);
143REGISTER_DEFINITION(KRegister, k0);
144REGISTER_DEFINITION(KRegister, k1);
145REGISTER_DEFINITION(KRegister, k2);
146REGISTER_DEFINITION(KRegister, k3);
147REGISTER_DEFINITION(KRegister, k4);
148REGISTER_DEFINITION(KRegister, k5);
149REGISTER_DEFINITION(KRegister, k6);
150REGISTER_DEFINITION(KRegister, k7);
151
152// JSR 292
153REGISTER_DEFINITION(Register, rbp_mh_SP_save);
154