Home | History | Annotate | Download | only in mterp
      1 
      2 # Copyright (C) 2015 The Android Open Source Project
      3 #
      4 # Licensed under the Apache License, Version 2.0 (the "License");
      5 # you may not use this file except in compliance with the License.
      6 # You may obtain a copy of the License at
      7 #
      8 #      http://www.apache.org/licenses/LICENSE-2.0
      9 #
     10 # Unless required by applicable law or agreed to in writing, software
     11 # distributed under the License is distributed on an "AS IS" BASIS,
     12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 # See the License for the specific language governing permissions and
     14 # limitations under the License.
     15 
     16 #
     17 # Configuration for ARM64
     18 #
     19 
     20 handler-style computed-goto
     21 handler-size 128
     22 
     23 # source for alternate entry stub
     24 asm-alt-stub arm64/alt_stub.S
     25 
     26 # file header and basic definitions
     27 import arm64/header.S
     28 
     29 # arch-specific entry point to interpreter
     30 import arm64/entry.S
     31 
     32 # Stub to switch to alternate interpreter
     33 fallback-stub arm64/fallback.S
     34 
     35 # opcode list; argument to op-start is default directory
     36 op-start arm64
     37     # (override example:) op OP_SUB_FLOAT_2ADDR arm-vfp
     38     # (fallback example:) op OP_SUB_FLOAT_2ADDR FALLBACK
     39 
     40     # op op_nop FALLBACK
     41     # op op_move FALLBACK
     42     # op op_move_from16 FALLBACK
     43     # op op_move_16 FALLBACK
     44     # op op_move_wide FALLBACK
     45     # op op_move_wide_from16 FALLBACK
     46     # op op_move_wide_16 FALLBACK
     47     # op op_move_object FALLBACK
     48     # op op_move_object_from16 FALLBACK
     49     # op op_move_object_16 FALLBACK
     50     # op op_move_result FALLBACK
     51     # op op_move_result_wide FALLBACK
     52     # op op_move_result_object FALLBACK
     53     # op op_move_exception FALLBACK
     54     # op op_return_void FALLBACK
     55     # op op_return FALLBACK
     56     # op op_return_wide FALLBACK
     57     # op op_return_object FALLBACK
     58     # op op_const_4 FALLBACK
     59     # op op_const_16 FALLBACK
     60     # op op_const FALLBACK
     61     # op op_const_high16 FALLBACK
     62     # op op_const_wide_16 FALLBACK
     63     # op op_const_wide_32 FALLBACK
     64     # op op_const_wide FALLBACK
     65     # op op_const_wide_high16 FALLBACK
     66     # op op_const_string FALLBACK
     67     # op op_const_string_jumbo FALLBACK
     68     # op op_const_class FALLBACK
     69     # op op_monitor_enter FALLBACK
     70     # op op_monitor_exit FALLBACK
     71     # op op_check_cast FALLBACK
     72     # op op_instance_of FALLBACK
     73     # op op_array_length FALLBACK
     74     # op op_new_instance FALLBACK
     75     # op op_new_array FALLBACK
     76     # op op_filled_new_array FALLBACK
     77     # op op_filled_new_array_range FALLBACK
     78     # op op_fill_array_data FALLBACK
     79     # op op_throw FALLBACK
     80     # op op_goto FALLBACK
     81     # op op_goto_16 FALLBACK
     82     # op op_goto_32 FALLBACK
     83     # op op_packed_switch FALLBACK
     84     # op op_sparse_switch FALLBACK
     85     # op op_cmpl_float FALLBACK
     86     # op op_cmpg_float FALLBACK
     87     # op op_cmpl_double FALLBACK
     88     # op op_cmpg_double FALLBACK
     89     # op op_cmp_long FALLBACK
     90     # op op_if_eq FALLBACK
     91     # op op_if_ne FALLBACK
     92     # op op_if_lt FALLBACK
     93     # op op_if_ge FALLBACK
     94     # op op_if_gt FALLBACK
     95     # op op_if_le FALLBACK
     96     # op op_if_eqz FALLBACK
     97     # op op_if_nez FALLBACK
     98     # op op_if_ltz FALLBACK
     99     # op op_if_gez FALLBACK
    100     # op op_if_gtz FALLBACK
    101     # op op_if_lez FALLBACK
    102     # op op_unused_3e FALLBACK
    103     # op op_unused_3f FALLBACK
    104     # op op_unused_40 FALLBACK
    105     # op op_unused_41 FALLBACK
    106     # op op_unused_42 FALLBACK
    107     # op op_unused_43 FALLBACK
    108     # op op_aget FALLBACK
    109     # op op_aget_wide FALLBACK
    110     # op op_aget_object FALLBACK
    111     # op op_aget_boolean FALLBACK
    112     # op op_aget_byte FALLBACK
    113     # op op_aget_char FALLBACK
    114     # op op_aget_short FALLBACK
    115     # op op_aput FALLBACK
    116     # op op_aput_wide FALLBACK
    117     # op op_aput_object FALLBACK
    118     # op op_aput_boolean FALLBACK
    119     # op op_aput_byte FALLBACK
    120     # op op_aput_char FALLBACK
    121     # op op_aput_short FALLBACK
    122     # op op_iget FALLBACK
    123     # op op_iget_wide FALLBACK
    124     # op op_iget_object FALLBACK
    125     # op op_iget_boolean FALLBACK
    126     # op op_iget_byte FALLBACK
    127     # op op_iget_char FALLBACK
    128     # op op_iget_short FALLBACK
    129     # op op_iput FALLBACK
    130     # op op_iput_wide FALLBACK
    131     # op op_iput_object FALLBACK
    132     # op op_iput_boolean FALLBACK
    133     # op op_iput_byte FALLBACK
    134     # op op_iput_char FALLBACK
    135     # op op_iput_short FALLBACK
    136     # op op_sget FALLBACK
    137     # op op_sget_wide FALLBACK
    138     # op op_sget_object FALLBACK
    139     # op op_sget_boolean FALLBACK
    140     # op op_sget_byte FALLBACK
    141     # op op_sget_char FALLBACK
    142     # op op_sget_short FALLBACK
    143     # op op_sput FALLBACK
    144     # op op_sput_wide FALLBACK
    145     # op op_sput_object FALLBACK
    146     # op op_sput_boolean FALLBACK
    147     # op op_sput_byte FALLBACK
    148     # op op_sput_char FALLBACK
    149     # op op_sput_short FALLBACK
    150     # op op_invoke_virtual FALLBACK
    151     # op op_invoke_super FALLBACK
    152     # op op_invoke_direct FALLBACK
    153     # op op_invoke_static FALLBACK
    154     # op op_invoke_interface FALLBACK
    155     # op op_return_void_no_barrier FALLBACK
    156     # op op_invoke_virtual_range FALLBACK
    157     # op op_invoke_super_range FALLBACK
    158     # op op_invoke_direct_range FALLBACK
    159     # op op_invoke_static_range FALLBACK
    160     # op op_invoke_interface_range FALLBACK
    161     # op op_unused_79 FALLBACK
    162     # op op_unused_7a FALLBACK
    163     # op op_neg_int FALLBACK
    164     # op op_not_int FALLBACK
    165     # op op_neg_long FALLBACK
    166     # op op_not_long FALLBACK
    167     # op op_neg_float FALLBACK
    168     # op op_neg_double FALLBACK
    169     # op op_int_to_long FALLBACK
    170     # op op_int_to_float FALLBACK
    171     # op op_int_to_double FALLBACK
    172     # op op_long_to_int FALLBACK
    173     # op op_long_to_float FALLBACK
    174     # op op_long_to_double FALLBACK
    175     # op op_float_to_int FALLBACK
    176     # op op_float_to_long FALLBACK
    177     # op op_float_to_double FALLBACK
    178     # op op_double_to_int FALLBACK
    179     # op op_double_to_long FALLBACK
    180     # op op_double_to_float FALLBACK
    181     # op op_int_to_byte FALLBACK
    182     # op op_int_to_char FALLBACK
    183     # op op_int_to_short FALLBACK
    184     # op op_add_int FALLBACK
    185     # op op_sub_int FALLBACK
    186     # op op_mul_int FALLBACK
    187     # op op_div_int FALLBACK
    188     # op op_rem_int FALLBACK
    189     # op op_and_int FALLBACK
    190     # op op_or_int FALLBACK
    191     # op op_xor_int FALLBACK
    192     # op op_shl_int FALLBACK
    193     # op op_shr_int FALLBACK
    194     # op op_ushr_int FALLBACK
    195     # op op_add_long FALLBACK
    196     # op op_sub_long FALLBACK
    197     # op op_mul_long FALLBACK
    198     # op op_div_long FALLBACK
    199     # op op_rem_long FALLBACK
    200     # op op_and_long FALLBACK
    201     # op op_or_long FALLBACK
    202     # op op_xor_long FALLBACK
    203     # op op_shl_long FALLBACK
    204     # op op_shr_long FALLBACK
    205     # op op_ushr_long FALLBACK
    206     # op op_add_float FALLBACK
    207     # op op_sub_float FALLBACK
    208     # op op_mul_float FALLBACK
    209     # op op_div_float FALLBACK
    210     # op op_rem_float FALLBACK
    211     # op op_add_double FALLBACK
    212     # op op_sub_double FALLBACK
    213     # op op_mul_double FALLBACK
    214     # op op_div_double FALLBACK
    215     # op op_rem_double FALLBACK
    216     # op op_add_int_2addr FALLBACK
    217     # op op_sub_int_2addr FALLBACK
    218     # op op_mul_int_2addr FALLBACK
    219     # op op_div_int_2addr FALLBACK
    220     # op op_rem_int_2addr FALLBACK
    221     # op op_and_int_2addr FALLBACK
    222     # op op_or_int_2addr FALLBACK
    223     # op op_xor_int_2addr FALLBACK
    224     # op op_shl_int_2addr FALLBACK
    225     # op op_shr_int_2addr FALLBACK
    226     # op op_ushr_int_2addr FALLBACK
    227     # op op_add_long_2addr FALLBACK
    228     # op op_sub_long_2addr FALLBACK
    229     # op op_mul_long_2addr FALLBACK
    230     # op op_div_long_2addr FALLBACK
    231     # op op_rem_long_2addr FALLBACK
    232     # op op_and_long_2addr FALLBACK
    233     # op op_or_long_2addr FALLBACK
    234     # op op_xor_long_2addr FALLBACK
    235     # op op_shl_long_2addr FALLBACK
    236     # op op_shr_long_2addr FALLBACK
    237     # op op_ushr_long_2addr FALLBACK
    238     # op op_add_float_2addr FALLBACK
    239     # op op_sub_float_2addr FALLBACK
    240     # op op_mul_float_2addr FALLBACK
    241     # op op_div_float_2addr FALLBACK
    242     # op op_rem_float_2addr FALLBACK
    243     # op op_add_double_2addr FALLBACK
    244     # op op_sub_double_2addr FALLBACK
    245     # op op_mul_double_2addr FALLBACK
    246     # op op_div_double_2addr FALLBACK
    247     # op op_rem_double_2addr FALLBACK
    248     # op op_add_int_lit16 FALLBACK
    249     # op op_rsub_int FALLBACK
    250     # op op_mul_int_lit16 FALLBACK
    251     # op op_div_int_lit16 FALLBACK
    252     # op op_rem_int_lit16 FALLBACK
    253     # op op_and_int_lit16 FALLBACK
    254     # op op_or_int_lit16 FALLBACK
    255     # op op_xor_int_lit16 FALLBACK
    256     # op op_add_int_lit8 FALLBACK
    257     # op op_rsub_int_lit8 FALLBACK
    258     # op op_mul_int_lit8 FALLBACK
    259     # op op_div_int_lit8 FALLBACK
    260     # op op_rem_int_lit8 FALLBACK
    261     # op op_and_int_lit8 FALLBACK
    262     # op op_or_int_lit8 FALLBACK
    263     # op op_xor_int_lit8 FALLBACK
    264     # op op_shl_int_lit8 FALLBACK
    265     # op op_shr_int_lit8 FALLBACK
    266     # op op_ushr_int_lit8 FALLBACK
    267     # op op_iget_quick FALLBACK
    268     # op op_iget_wide_quick FALLBACK
    269     # op op_iget_object_quick FALLBACK
    270     # op op_iput_quick FALLBACK
    271     # op op_iput_wide_quick FALLBACK
    272     # op op_iput_object_quick FALLBACK
    273     # op op_invoke_virtual_quick FALLBACK
    274     # op op_invoke_virtual_range_quick FALLBACK
    275     # op op_iput_boolean_quick FALLBACK
    276     # op op_iput_byte_quick FALLBACK
    277     # op op_iput_char_quick FALLBACK
    278     # op op_iput_short_quick FALLBACK
    279     # op op_iget_boolean_quick FALLBACK
    280     # op op_iget_byte_quick FALLBACK
    281     # op op_iget_char_quick FALLBACK
    282     # op op_iget_short_quick FALLBACK
    283     op op_invoke_lambda FALLBACK
    284     # op op_unused_f4 FALLBACK
    285     op op_capture_variable FALLBACK
    286     op op_create_lambda FALLBACK
    287     op op_liberate_variable FALLBACK
    288     op op_box_lambda FALLBACK
    289     op op_unbox_lambda FALLBACK
    290     # op op_unused_fa FALLBACK
    291     # op op_unused_fb FALLBACK
    292     # op op_unused_fc FALLBACK
    293     # op op_unused_fd FALLBACK
    294     # op op_unused_fe FALLBACK
    295     # op op_unused_ff FALLBACK
    296 op-end
    297 
    298 # common subroutines for asm
    299 import arm64/footer.S
    300