blob: e1e88669e39eebac756693ab1f481ab9298b33a7 [file] [log] [blame]
Johnnie Birch22d404a2009-04-06 15:26:13 -07001# Copyright (C) 2009 The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15# Specifies the size of the assembly region in bytes
16handler-size 64
17
18# source for the instruction table stub
19asm-stub x86-atom/stub.S
20
21# file header, macros and definitions
22import c/header.c
23import x86-atom/header.S
24
25# common defs for the C helper; include this before the instruction handlers
26import cstubs/stubdefs.c
27import c/opcommon.c
28
29# start of opcode list; command gives default directory location of instruction files
30op-start x86-atom
31
32#op OP_ADD_DOUBLE_2ADDR c
33#op OP_ADD_DOUBLE c
34#op OP_ADD_FLOAT_2ADDR c
35#op OP_ADD_FLOAT c
36#op OP_ADD_INT_2ADDR c
37#op OP_ADD_INT_LIT16 c
38#op OP_ADD_INT_LIT8 c
39#op OP_ADD_INT c
40#op OP_ADD_LONG_2ADDR c
41#op OP_ADD_LONG c
42#op OP_AGET_BOOLEAN c
43#op OP_AGET_BYTE c
44#op OP_AGET_CHAR c
45#op OP_AGET_OBJECT c
46#op OP_AGET c
47#op OP_AGET_SHORT c
48#op OP_AGET_WIDE c
49#op OP_AND_INT_2ADDR c
50#op OP_AND_INT_LIT16 c
51#op OP_AND_INT_LIT8 c
52#op OP_AND_INT c
53#op OP_AND_LONG_2ADDR c
54#op OP_AND_LONG c
55#op OP_APUT_BOOLEAN c
56#op OP_APUT_BYTE c
57#op OP_APUT_CHAR c
58#op OP_APUT_OBJECT c
59#op OP_APUT c
60#op OP_APUT_SHORT c
61#op OP_APUT_WIDE c
62#op OP_ARRAY_LENGTH c
Johnnie Birchc6cc1bd2010-08-02 11:03:14 -070063#op OP_BREAKPOINT c
Johnnie Birch22d404a2009-04-06 15:26:13 -070064#op OP_CHECK_CAST c
65#op OP_CMPG_DOUBLE c
66#op OP_CMPG_FLOAT c
67#op OP_CMPL_DOUBLE c
68#op OP_CMPL_FLOAT c
69#op OP_CMP_LONG c
70#op OP_CONST_16 c
71#op OP_CONST_4 c
72#op OP_CONST_CLASS c
73#op OP_CONST_HIGH16 c
74#op OP_CONST c
75#op OP_CONST_STRING_JUMBO c
76#op OP_CONST_STRING c
77#op OP_CONST_WIDE_16 c
78#op OP_CONST_WIDE_32 c
79#op OP_CONST_WIDE_HIGH16 c
80#op OP_CONST_WIDE c
81#op OP_DIV_DOUBLE_2ADDR c
82#op OP_DIV_DOUBLE c
83#op OP_DIV_FLOAT_2ADDR c
84#op OP_DIV_FLOAT c
85#op OP_DIV_INT_2ADDR c
86#op OP_DIV_INT_LIT16 c
87#op OP_DIV_INT_LIT8 c
88#op OP_DIV_INT c
89#op OP_DIV_LONG_2ADDR c
90#op OP_DIV_LONG c
91#op OP_DOUBLE_TO_FLOAT c
92#op OP_DOUBLE_TO_INT c
93#op OP_DOUBLE_TO_LONG c
Johnnie Birchc6cc1bd2010-08-02 11:03:14 -070094#op OP_EXECUTE_INLINE_RANGE c
Johnnie Birch22d404a2009-04-06 15:26:13 -070095#op OP_EXECUTE_INLINE c
96#op OP_FILL_ARRAY_DATA c
97#op OP_FILLED_NEW_ARRAY_RANGE c
98#op OP_FILLED_NEW_ARRAY c
99#op OP_FLOAT_TO_DOUBLE c
100#op OP_FLOAT_TO_INT c
101#op OP_FLOAT_TO_LONG c
102#op OP_GOTO_16 c
103#op OP_GOTO_32 c
104#op OP_GOTO c
105#op OP_IF_EQ c
106#op OP_IF_EQZ c
107#op OP_IF_GE c
108#op OP_IF_GEZ c
109#op OP_IF_GT c
110#op OP_IF_GTZ c
111#op OP_IF_LE c
112#op OP_IF_LEZ c
113#op OP_IF_LT c
114#op OP_IF_LTZ c
115#op OP_IF_NE c
116#op OP_IF_NEZ c
117#op OP_IGET_BOOLEAN c
118#op OP_IGET_BYTE c
119#op OP_IGET_CHAR c
120#op OP_IGET_OBJECT_QUICK c
121#op OP_IGET_OBJECT c
122#op OP_IGET_QUICK c
123#op OP_IGET c
124#op OP_IGET_SHORT c
125#op OP_IGET_WIDE_QUICK c
126#op OP_IGET_WIDE c
127#op OP_INSTANCE_OF c
128#op OP_INT_TO_BYTE c
129#op OP_INT_TO_CHAR c
130#op OP_INT_TO_DOUBLE c
131#op OP_INT_TO_FLOAT c
132#op OP_INT_TO_LONG c
133#op OP_INT_TO_SHORT c
134#op OP_INVOKE_DIRECT_EMPTY c
135#op OP_INVOKE_DIRECT_RANGE c
136#op OP_INVOKE_DIRECT c
137#op OP_INVOKE_INTERFACE_RANGE c
138#op OP_INVOKE_INTERFACE c
139#op OP_INVOKE_STATIC_RANGE c
140#op OP_INVOKE_STATIC c
141#op OP_INVOKE_SUPER_QUICK_RANGE c
142#op OP_INVOKE_SUPER_QUICK c
143#op OP_INVOKE_SUPER_RANGE c
144#op OP_INVOKE_SUPER c
145#op OP_INVOKE_VIRTUAL_QUICK_RANGE c
146#op OP_INVOKE_VIRTUAL_QUICK c
147#op OP_INVOKE_VIRTUAL_RANGE c
148#op OP_INVOKE_VIRTUAL c
149#op OP_IPUT_BOOLEAN c
150#op OP_IPUT_BYTE c
151#op OP_IPUT_CHAR c
152#op OP_IPUT_OBJECT_QUICK c
153#op OP_IPUT_OBJECT c
154#op OP_IPUT_QUICK c
155#op OP_IPUT c
156#op OP_IPUT_SHORT c
157#op OP_IPUT_WIDE_QUICK c
158#op OP_IPUT_WIDE c
159#op OP_LONG_TO_DOUBLE c
160#op OP_LONG_TO_FLOAT c
161#op OP_LONG_TO_INT c
162#op OP_MONITOR_ENTER c
163#op OP_MONITOR_EXIT c
164#op OP_MOVE_16 c
165#op OP_MOVE_EXCEPTION c
166#op OP_MOVE_FROM16 c
167#op OP_MOVE_OBJECT_16 c
168#op OP_MOVE_OBJECT_FROM16 c
169#op OP_MOVE_OBJECT c
170#op OP_MOVE_RESULT_OBJECT c
171#op OP_MOVE_RESULT c
172#op OP_MOVE_RESULT_WIDE c
173#op OP_MOVE c
174#op OP_MOVE_WIDE_16 c
175#op OP_MOVE_WIDE_FROM16 c
176#op OP_MOVE_WIDE c
177#op OP_MUL_DOUBLE_2ADDR c
178#op OP_MUL_DOUBLE c
179#op OP_MUL_FLOAT_2ADDR c
180#op OP_MUL_FLOAT c
181#op OP_MUL_INT_2ADDR c
182#op OP_MUL_INT_LIT16 c
183#op OP_MUL_INT_LIT8 c
184#op OP_MUL_INT c
185#op OP_MUL_LONG_2ADDR c
186#op OP_MUL_LONG c
187#op OP_NEG_DOUBLE c
188#op OP_NEG_FLOAT c
189#op OP_NEG_INT c
190#op OP_NEG_LONG c
191#op OP_NEW_ARRAY c
192#op OP_NEW_INSTANCE c
193#op OP_NOP c
194#op OP_NOT_INT c
195#op OP_NOT_LONG c
196#op OP_OR_INT_2ADDR c
197#op OP_OR_INT_LIT16 c
198#op OP_OR_INT_LIT8 c
199#op OP_OR_INT c
200#op OP_OR_LONG_2ADDR c
201#op OP_OR_LONG c
202#op OP_PACKED_SWITCH c
203#op OP_REM_DOUBLE_2ADDR c
204#op OP_REM_DOUBLE c
205#op OP_REM_FLOAT_2ADDR c
206#op OP_REM_FLOAT c
207#op OP_REM_INT_2ADDR c
208#op OP_REM_INT_LIT16 c
209#op OP_REM_INT_LIT8 c
210#op OP_REM_INT c
211#op OP_REM_LONG_2ADDR c
212#op OP_REM_LONG c
213#op OP_RETURN_OBJECT c
214#op OP_RETURN c
215#op OP_RETURN_VOID c
216#op OP_RETURN_WIDE c
217#op OP_RSUB_INT_LIT8 c
218#op OP_RSUB_INT c
219#op OP_SGET_BOOLEAN c
220#op OP_SGET_BYTE c
221#op OP_SGET_CHAR c
222#op OP_SGET_OBJECT c
223#op OP_SGET c
224#op OP_SGET_SHORT c
225#op OP_SGET_WIDE c
226#op OP_SHL_INT_2ADDR c
227#op OP_SHL_INT_LIT8 c
228#op OP_SHL_INT c
229#op OP_SHL_LONG_2ADDR c
230#op OP_SHL_LONG c
231#op OP_SHR_INT_2ADDR c
232#op OP_SHR_INT_LIT8 c
233#op OP_SHR_INT c
234#op OP_SHR_LONG_2ADDR c
235#op OP_SHR_LONG c
236#op OP_SPARSE_SWITCH c
237#op OP_SPUT_BOOLEAN c
238#op OP_SPUT_BYTE c
239#op OP_SPUT_CHAR c
240#op OP_SPUT_OBJECT c
241#op OP_SPUT c
242#op OP_SPUT_SHORT c
243#op OP_SPUT_WIDE c
244#op OP_SUB_DOUBLE_2ADDR c
245#op OP_SUB_DOUBLE c
246#op OP_SUB_FLOAT_2ADDR c
247#op OP_SUB_FLOAT c
248#op OP_SUB_INT_2ADDR c
249#op OP_SUB_INT c
250#op OP_SUB_LONG_2ADDR c
251#op OP_SUB_LONG c
252#op OP_THROW c
253#op OP_UNUSED_3E c
254#op OP_UNUSED_3F c
255#op OP_UNUSED_40 c
256#op OP_UNUSED_41 c
257#op OP_UNUSED_42 c
258#op OP_UNUSED_43 c
259#op OP_UNUSED_73 c
260#op OP_UNUSED_79 c
261#op OP_UNUSED_7A c
262#op OP_UNUSED_E3 c
263#op OP_UNUSED_E4 c
264#op OP_UNUSED_E5 c
265#op OP_UNUSED_E6 c
266#op OP_UNUSED_E7 c
267#op OP_UNUSED_E8 c
268#op OP_UNUSED_E9 c
269#op OP_UNUSED_EA c
270#op OP_UNUSED_EB c
Johnnie Birch22d404a2009-04-06 15:26:13 -0700271#op OP_UNUSED_F1 c
272#op OP_UNUSED_FC c
273#op OP_UNUSED_FD c
274#op OP_UNUSED_FE c
Dan Bornstein90f15432010-12-02 16:46:25 -0800275#op OP_DISPATCH_FF c
Johnnie Birch22d404a2009-04-06 15:26:13 -0700276#op OP_USHR_INT_2ADDR c
277#op OP_USHR_INT_LIT8 c
278#op OP_USHR_INT c
279#op OP_USHR_LONG_2ADDR c
280#op OP_USHR_LONG c
281#op OP_XOR_INT_2ADDR c
282#op OP_XOR_INT_LIT16 c
283#op OP_XOR_INT_LIT8 c
284#op OP_XOR_INT c
285#op OP_XOR_LONG_2ADDR c
286#op OP_XOR_LONG c
Andy McFadden4abe4012010-02-26 07:35:20 -0800287# TODO: provide native implementations
Andy McFaddenc35a2ef2010-06-17 12:36:00 -0700288op OP_IGET_VOLATILE c
289op OP_IPUT_VOLATILE c
290op OP_SGET_VOLATILE c
291op OP_SPUT_VOLATILE c
292op OP_IGET_OBJECT_VOLATILE c
293op OP_IPUT_OBJECT_VOLATILE c
294op OP_SGET_OBJECT_VOLATILE c
295op OP_SPUT_OBJECT_VOLATILE c
Andy McFadden53878242010-03-05 07:24:27 -0800296op OP_IGET_WIDE_VOLATILE c
297op OP_IPUT_WIDE_VOLATILE c
298op OP_SGET_WIDE_VOLATILE c
299op OP_SPUT_WIDE_VOLATILE c
Andy McFadden291758c2010-09-10 08:04:52 -0700300op OP_RETURN_VOID_BARRIER c
Johnnie Birch22d404a2009-04-06 15:26:13 -0700301op-end
302
303# arch-specific entry point to interpreter
304import x86-atom/entry.S
305
306# "helper" code for C; include this after the instruction handlers
307import c/gotoTargets.c
308import cstubs/enddefs.c
309
310# common subroutines for asm
311import x86-atom/footer.S