Johnnie Birch | 22d404a | 2009-04-06 15:26:13 -0700 | [diff] [blame] | 1 | # 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 |
| 16 | handler-size 64 |
| 17 | |
| 18 | # source for the instruction table stub |
| 19 | asm-stub x86-atom/stub.S |
| 20 | |
| 21 | # file header, macros and definitions |
| 22 | import c/header.c |
| 23 | import x86-atom/header.S |
| 24 | |
| 25 | # common defs for the C helper; include this before the instruction handlers |
| 26 | import cstubs/stubdefs.c |
| 27 | import c/opcommon.c |
| 28 | |
| 29 | # start of opcode list; command gives default directory location of instruction files |
| 30 | op-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 Birch | c6cc1bd | 2010-08-02 11:03:14 -0700 | [diff] [blame] | 63 | #op OP_BREAKPOINT c |
Johnnie Birch | 22d404a | 2009-04-06 15:26:13 -0700 | [diff] [blame] | 64 | #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 Birch | c6cc1bd | 2010-08-02 11:03:14 -0700 | [diff] [blame] | 94 | #op OP_EXECUTE_INLINE_RANGE c |
Johnnie Birch | 22d404a | 2009-04-06 15:26:13 -0700 | [diff] [blame] | 95 | #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 Birch | 22d404a | 2009-04-06 15:26:13 -0700 | [diff] [blame] | 271 | #op OP_UNUSED_F1 c |
| 272 | #op OP_UNUSED_FC c |
| 273 | #op OP_UNUSED_FD c |
| 274 | #op OP_UNUSED_FE c |
Dan Bornstein | 90f1543 | 2010-12-02 16:46:25 -0800 | [diff] [blame^] | 275 | #op OP_DISPATCH_FF c |
Johnnie Birch | 22d404a | 2009-04-06 15:26:13 -0700 | [diff] [blame] | 276 | #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 McFadden | 4abe401 | 2010-02-26 07:35:20 -0800 | [diff] [blame] | 287 | # TODO: provide native implementations |
Andy McFadden | c35a2ef | 2010-06-17 12:36:00 -0700 | [diff] [blame] | 288 | op OP_IGET_VOLATILE c |
| 289 | op OP_IPUT_VOLATILE c |
| 290 | op OP_SGET_VOLATILE c |
| 291 | op OP_SPUT_VOLATILE c |
| 292 | op OP_IGET_OBJECT_VOLATILE c |
| 293 | op OP_IPUT_OBJECT_VOLATILE c |
| 294 | op OP_SGET_OBJECT_VOLATILE c |
| 295 | op OP_SPUT_OBJECT_VOLATILE c |
Andy McFadden | 5387824 | 2010-03-05 07:24:27 -0800 | [diff] [blame] | 296 | op OP_IGET_WIDE_VOLATILE c |
| 297 | op OP_IPUT_WIDE_VOLATILE c |
| 298 | op OP_SGET_WIDE_VOLATILE c |
| 299 | op OP_SPUT_WIDE_VOLATILE c |
Andy McFadden | 291758c | 2010-09-10 08:04:52 -0700 | [diff] [blame] | 300 | op OP_RETURN_VOID_BARRIER c |
Johnnie Birch | 22d404a | 2009-04-06 15:26:13 -0700 | [diff] [blame] | 301 | op-end |
| 302 | |
| 303 | # arch-specific entry point to interpreter |
| 304 | import x86-atom/entry.S |
| 305 | |
| 306 | # "helper" code for C; include this after the instruction handlers |
| 307 | import c/gotoTargets.c |
| 308 | import cstubs/enddefs.c |
| 309 | |
| 310 | # common subroutines for asm |
| 311 | import x86-atom/footer.S |