Home | History | Annotate | Download | only in mterp
      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