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 63 #op OP_CHECK_CAST c 64 #op OP_CMPG_DOUBLE c 65 #op OP_CMPG_FLOAT c 66 #op OP_CMPL_DOUBLE c 67 #op OP_CMPL_FLOAT c 68 #op OP_CMP_LONG c 69 #op OP_CONST_16 c 70 #op OP_CONST_4 c 71 #op OP_CONST_CLASS c 72 #op OP_CONST_HIGH16 c 73 #op OP_CONST c 74 #op OP_CONST_STRING_JUMBO c 75 #op OP_CONST_STRING c 76 #op OP_CONST_WIDE_16 c 77 #op OP_CONST_WIDE_32 c 78 #op OP_CONST_WIDE_HIGH16 c 79 #op OP_CONST_WIDE c 80 #op OP_DIV_DOUBLE_2ADDR c 81 #op OP_DIV_DOUBLE c 82 #op OP_DIV_FLOAT_2ADDR c 83 #op OP_DIV_FLOAT c 84 #op OP_DIV_INT_2ADDR c 85 #op OP_DIV_INT_LIT16 c 86 #op OP_DIV_INT_LIT8 c 87 #op OP_DIV_INT c 88 #op OP_DIV_LONG_2ADDR c 89 #op OP_DIV_LONG c 90 #op OP_DOUBLE_TO_FLOAT c 91 #op OP_DOUBLE_TO_INT c 92 #op OP_DOUBLE_TO_LONG c 93 #op OP_EXECUTE_INLINE c 94 #op OP_FILL_ARRAY_DATA c 95 #op OP_FILLED_NEW_ARRAY_RANGE c 96 #op OP_FILLED_NEW_ARRAY c 97 #op OP_FLOAT_TO_DOUBLE c 98 #op OP_FLOAT_TO_INT c 99 #op OP_FLOAT_TO_LONG c 100 #op OP_GOTO_16 c 101 #op OP_GOTO_32 c 102 #op OP_GOTO c 103 #op OP_IF_EQ c 104 #op OP_IF_EQZ c 105 #op OP_IF_GE c 106 #op OP_IF_GEZ c 107 #op OP_IF_GT c 108 #op OP_IF_GTZ c 109 #op OP_IF_LE c 110 #op OP_IF_LEZ c 111 #op OP_IF_LT c 112 #op OP_IF_LTZ c 113 #op OP_IF_NE c 114 #op OP_IF_NEZ c 115 #op OP_IGET_BOOLEAN c 116 #op OP_IGET_BYTE c 117 #op OP_IGET_CHAR c 118 #op OP_IGET_OBJECT_QUICK c 119 #op OP_IGET_OBJECT c 120 #op OP_IGET_QUICK c 121 #op OP_IGET c 122 #op OP_IGET_SHORT c 123 #op OP_IGET_WIDE_QUICK c 124 #op OP_IGET_WIDE c 125 #op OP_INSTANCE_OF c 126 #op OP_INT_TO_BYTE c 127 #op OP_INT_TO_CHAR c 128 #op OP_INT_TO_DOUBLE c 129 #op OP_INT_TO_FLOAT c 130 #op OP_INT_TO_LONG c 131 #op OP_INT_TO_SHORT c 132 #op OP_INVOKE_DIRECT_EMPTY c 133 #op OP_INVOKE_DIRECT_RANGE c 134 #op OP_INVOKE_DIRECT c 135 #op OP_INVOKE_INTERFACE_RANGE c 136 #op OP_INVOKE_INTERFACE c 137 #op OP_INVOKE_STATIC_RANGE c 138 #op OP_INVOKE_STATIC c 139 #op OP_INVOKE_SUPER_QUICK_RANGE c 140 #op OP_INVOKE_SUPER_QUICK c 141 #op OP_INVOKE_SUPER_RANGE c 142 #op OP_INVOKE_SUPER c 143 #op OP_INVOKE_VIRTUAL_QUICK_RANGE c 144 #op OP_INVOKE_VIRTUAL_QUICK c 145 #op OP_INVOKE_VIRTUAL_RANGE c 146 #op OP_INVOKE_VIRTUAL c 147 #op OP_IPUT_BOOLEAN c 148 #op OP_IPUT_BYTE c 149 #op OP_IPUT_CHAR c 150 #op OP_IPUT_OBJECT_QUICK c 151 #op OP_IPUT_OBJECT c 152 #op OP_IPUT_QUICK c 153 #op OP_IPUT c 154 #op OP_IPUT_SHORT c 155 #op OP_IPUT_WIDE_QUICK c 156 #op OP_IPUT_WIDE c 157 #op OP_LONG_TO_DOUBLE c 158 #op OP_LONG_TO_FLOAT c 159 #op OP_LONG_TO_INT c 160 #op OP_MONITOR_ENTER c 161 #op OP_MONITOR_EXIT c 162 #op OP_MOVE_16 c 163 #op OP_MOVE_EXCEPTION c 164 #op OP_MOVE_FROM16 c 165 #op OP_MOVE_OBJECT_16 c 166 #op OP_MOVE_OBJECT_FROM16 c 167 #op OP_MOVE_OBJECT c 168 #op OP_MOVE_RESULT_OBJECT c 169 #op OP_MOVE_RESULT c 170 #op OP_MOVE_RESULT_WIDE c 171 #op OP_MOVE c 172 #op OP_MOVE_WIDE_16 c 173 #op OP_MOVE_WIDE_FROM16 c 174 #op OP_MOVE_WIDE c 175 #op OP_MUL_DOUBLE_2ADDR c 176 #op OP_MUL_DOUBLE c 177 #op OP_MUL_FLOAT_2ADDR c 178 #op OP_MUL_FLOAT c 179 #op OP_MUL_INT_2ADDR c 180 #op OP_MUL_INT_LIT16 c 181 #op OP_MUL_INT_LIT8 c 182 #op OP_MUL_INT c 183 #op OP_MUL_LONG_2ADDR c 184 #op OP_MUL_LONG c 185 #op OP_NEG_DOUBLE c 186 #op OP_NEG_FLOAT c 187 #op OP_NEG_INT c 188 #op OP_NEG_LONG c 189 #op OP_NEW_ARRAY c 190 #op OP_NEW_INSTANCE c 191 #op OP_NOP c 192 #op OP_NOT_INT c 193 #op OP_NOT_LONG c 194 #op OP_OR_INT_2ADDR c 195 #op OP_OR_INT_LIT16 c 196 #op OP_OR_INT_LIT8 c 197 #op OP_OR_INT c 198 #op OP_OR_LONG_2ADDR c 199 #op OP_OR_LONG c 200 #op OP_PACKED_SWITCH c 201 #op OP_REM_DOUBLE_2ADDR c 202 #op OP_REM_DOUBLE c 203 #op OP_REM_FLOAT_2ADDR c 204 #op OP_REM_FLOAT c 205 #op OP_REM_INT_2ADDR c 206 #op OP_REM_INT_LIT16 c 207 #op OP_REM_INT_LIT8 c 208 #op OP_REM_INT c 209 #op OP_REM_LONG_2ADDR c 210 #op OP_REM_LONG c 211 #op OP_RETURN_OBJECT c 212 #op OP_RETURN c 213 #op OP_RETURN_VOID c 214 #op OP_RETURN_WIDE c 215 #op OP_RSUB_INT_LIT8 c 216 #op OP_RSUB_INT c 217 #op OP_SGET_BOOLEAN c 218 #op OP_SGET_BYTE c 219 #op OP_SGET_CHAR c 220 #op OP_SGET_OBJECT c 221 #op OP_SGET c 222 #op OP_SGET_SHORT c 223 #op OP_SGET_WIDE c 224 #op OP_SHL_INT_2ADDR c 225 #op OP_SHL_INT_LIT8 c 226 #op OP_SHL_INT c 227 #op OP_SHL_LONG_2ADDR c 228 #op OP_SHL_LONG c 229 #op OP_SHR_INT_2ADDR c 230 #op OP_SHR_INT_LIT8 c 231 #op OP_SHR_INT c 232 #op OP_SHR_LONG_2ADDR c 233 #op OP_SHR_LONG c 234 #op OP_SPARSE_SWITCH c 235 #op OP_SPUT_BOOLEAN c 236 #op OP_SPUT_BYTE c 237 #op OP_SPUT_CHAR c 238 #op OP_SPUT_OBJECT c 239 #op OP_SPUT c 240 #op OP_SPUT_SHORT c 241 #op OP_SPUT_WIDE c 242 #op OP_SUB_DOUBLE_2ADDR c 243 #op OP_SUB_DOUBLE c 244 #op OP_SUB_FLOAT_2ADDR c 245 #op OP_SUB_FLOAT c 246 #op OP_SUB_INT_2ADDR c 247 #op OP_SUB_INT c 248 #op OP_SUB_LONG_2ADDR c 249 #op OP_SUB_LONG c 250 #op OP_THROW c 251 #op OP_UNUSED_3E c 252 #op OP_UNUSED_3F c 253 #op OP_UNUSED_40 c 254 #op OP_UNUSED_41 c 255 #op OP_UNUSED_42 c 256 #op OP_UNUSED_43 c 257 #op OP_UNUSED_73 c 258 #op OP_UNUSED_79 c 259 #op OP_UNUSED_7A c 260 #op OP_UNUSED_E3 c 261 #op OP_UNUSED_E4 c 262 #op OP_UNUSED_E5 c 263 #op OP_UNUSED_E6 c 264 #op OP_UNUSED_E7 c 265 #op OP_UNUSED_E8 c 266 #op OP_UNUSED_E9 c 267 #op OP_UNUSED_EA c 268 #op OP_UNUSED_EB c 269 #op OP_UNUSED_F1 c 270 #op OP_UNUSED_FC c 271 #op OP_UNUSED_FD c 272 #op OP_UNUSED_FE c 273 #op OP_UNUSED_FF c 274 #op OP_USHR_INT_2ADDR c 275 #op OP_USHR_INT_LIT8 c 276 #op OP_USHR_INT c 277 #op OP_USHR_LONG_2ADDR c 278 #op OP_USHR_LONG c 279 #op OP_XOR_INT_2ADDR c 280 #op OP_XOR_INT_LIT16 c 281 #op OP_XOR_INT_LIT8 c 282 #op OP_XOR_INT c 283 #op OP_XOR_LONG_2ADDR c 284 #op OP_XOR_LONG c 285 286 # TODO: provide native implementations 287 op OP_BREAKPOINT c 288 op OP_EXECUTE_INLINE_RANGE c 289 290 op-end 291 292 # arch-specific entry point to interpreter 293 import x86-atom/entry.S 294 295 # "helper" code for C; include this after the instruction handlers 296 import c/gotoTargets.c 297 import cstubs/enddefs.c 298 299 # common subroutines for asm 300 import x86-atom/footer.S 301 302 303