| |
| # Copyright (C) 2015 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # |
| # Configuration for ARM64 |
| # |
| |
| handler-style computed-goto |
| handler-size 128 |
| |
| # file header and basic definitions |
| import arm64/header.S |
| |
| # arch-specific entry point to interpreter |
| import arm64/entry.S |
| |
| # Stub to switch to alternate interpreter |
| fallback-stub arm64/fallback.S |
| |
| # opcode list; argument to op-start is default directory |
| op-start arm64 |
| # (override example:) op OP_SUB_FLOAT_2ADDR arm-vfp |
| # (fallback example:) op OP_SUB_FLOAT_2ADDR FALLBACK |
| |
| # op op_nop FALLBACK |
| # op op_move FALLBACK |
| # op op_move_from16 FALLBACK |
| # op op_move_16 FALLBACK |
| # op op_move_wide FALLBACK |
| # op op_move_wide_from16 FALLBACK |
| # op op_move_wide_16 FALLBACK |
| # op op_move_object FALLBACK |
| # op op_move_object_from16 FALLBACK |
| # op op_move_object_16 FALLBACK |
| # op op_move_result FALLBACK |
| # op op_move_result_wide FALLBACK |
| # op op_move_result_object FALLBACK |
| # op op_move_exception FALLBACK |
| # op op_return_void FALLBACK |
| # op op_return FALLBACK |
| # op op_return_wide FALLBACK |
| # op op_return_object FALLBACK |
| # op op_const_4 FALLBACK |
| # op op_const_16 FALLBACK |
| # op op_const FALLBACK |
| # op op_const_high16 FALLBACK |
| # op op_const_wide_16 FALLBACK |
| # op op_const_wide_32 FALLBACK |
| # op op_const_wide FALLBACK |
| # op op_const_wide_high16 FALLBACK |
| # op op_const_string FALLBACK |
| # op op_const_string_jumbo FALLBACK |
| # op op_const_class FALLBACK |
| # op op_monitor_enter FALLBACK |
| # op op_monitor_exit FALLBACK |
| # op op_check_cast FALLBACK |
| # op op_instance_of FALLBACK |
| # op op_array_length FALLBACK |
| # op op_new_instance FALLBACK |
| # op op_new_array FALLBACK |
| # op op_filled_new_array FALLBACK |
| # op op_filled_new_array_range FALLBACK |
| # op op_fill_array_data FALLBACK |
| # op op_throw FALLBACK |
| # op op_goto FALLBACK |
| # op op_goto_16 FALLBACK |
| # op op_goto_32 FALLBACK |
| # op op_packed_switch FALLBACK |
| # op op_sparse_switch FALLBACK |
| # op op_cmpl_float FALLBACK |
| # op op_cmpg_float FALLBACK |
| # op op_cmpl_double FALLBACK |
| # op op_cmpg_double FALLBACK |
| # op op_cmp_long FALLBACK |
| # op op_if_eq FALLBACK |
| # op op_if_ne FALLBACK |
| # op op_if_lt FALLBACK |
| # op op_if_ge FALLBACK |
| # op op_if_gt FALLBACK |
| # op op_if_le FALLBACK |
| # op op_if_eqz FALLBACK |
| # op op_if_nez FALLBACK |
| # op op_if_ltz FALLBACK |
| # op op_if_gez FALLBACK |
| # op op_if_gtz FALLBACK |
| # op op_if_lez FALLBACK |
| # op op_unused_3e FALLBACK |
| # op op_unused_3f FALLBACK |
| # op op_unused_40 FALLBACK |
| # op op_unused_41 FALLBACK |
| # op op_unused_42 FALLBACK |
| # op op_unused_43 FALLBACK |
| # op op_aget FALLBACK |
| # op op_aget_wide FALLBACK |
| # op op_aget_object FALLBACK |
| # op op_aget_boolean FALLBACK |
| # op op_aget_byte FALLBACK |
| # op op_aget_char FALLBACK |
| # op op_aget_short FALLBACK |
| # op op_aput FALLBACK |
| # op op_aput_wide FALLBACK |
| # op op_aput_object FALLBACK |
| # op op_aput_boolean FALLBACK |
| # op op_aput_byte FALLBACK |
| # op op_aput_char FALLBACK |
| # op op_aput_short FALLBACK |
| # op op_iget FALLBACK |
| # op op_iget_wide FALLBACK |
| # op op_iget_object FALLBACK |
| # op op_iget_boolean FALLBACK |
| # op op_iget_byte FALLBACK |
| # op op_iget_char FALLBACK |
| # op op_iget_short FALLBACK |
| # op op_iput FALLBACK |
| # op op_iput_wide FALLBACK |
| # op op_iput_object FALLBACK |
| # op op_iput_boolean FALLBACK |
| # op op_iput_byte FALLBACK |
| # op op_iput_char FALLBACK |
| # op op_iput_short FALLBACK |
| # op op_sget FALLBACK |
| # op op_sget_wide FALLBACK |
| # op op_sget_object FALLBACK |
| # op op_sget_boolean FALLBACK |
| # op op_sget_byte FALLBACK |
| # op op_sget_char FALLBACK |
| # op op_sget_short FALLBACK |
| # op op_sput FALLBACK |
| # op op_sput_wide FALLBACK |
| # op op_sput_object FALLBACK |
| # op op_sput_boolean FALLBACK |
| # op op_sput_byte FALLBACK |
| # op op_sput_char FALLBACK |
| # op op_sput_short FALLBACK |
| # op op_invoke_virtual FALLBACK |
| # op op_invoke_super FALLBACK |
| # op op_invoke_direct FALLBACK |
| # op op_invoke_static FALLBACK |
| # op op_invoke_interface FALLBACK |
| # op op_return_void_no_barrier FALLBACK |
| # op op_invoke_virtual_range FALLBACK |
| # op op_invoke_super_range FALLBACK |
| # op op_invoke_direct_range FALLBACK |
| # op op_invoke_static_range FALLBACK |
| # op op_invoke_interface_range FALLBACK |
| # op op_unused_79 FALLBACK |
| # op op_unused_7a FALLBACK |
| # op op_neg_int FALLBACK |
| # op op_not_int FALLBACK |
| # op op_neg_long FALLBACK |
| # op op_not_long FALLBACK |
| # op op_neg_float FALLBACK |
| # op op_neg_double FALLBACK |
| # op op_int_to_long FALLBACK |
| # op op_int_to_float FALLBACK |
| # op op_int_to_double FALLBACK |
| # op op_long_to_int FALLBACK |
| # op op_long_to_float FALLBACK |
| # op op_long_to_double FALLBACK |
| # op op_float_to_int FALLBACK |
| # op op_float_to_long FALLBACK |
| # op op_float_to_double FALLBACK |
| # op op_double_to_int FALLBACK |
| # op op_double_to_long FALLBACK |
| # op op_double_to_float FALLBACK |
| # op op_int_to_byte FALLBACK |
| # op op_int_to_char FALLBACK |
| # op op_int_to_short FALLBACK |
| # op op_add_int FALLBACK |
| # op op_sub_int FALLBACK |
| # op op_mul_int FALLBACK |
| # op op_div_int FALLBACK |
| # op op_rem_int FALLBACK |
| # op op_and_int FALLBACK |
| # op op_or_int FALLBACK |
| # op op_xor_int FALLBACK |
| # op op_shl_int FALLBACK |
| # op op_shr_int FALLBACK |
| # op op_ushr_int FALLBACK |
| # op op_add_long FALLBACK |
| # op op_sub_long FALLBACK |
| # op op_mul_long FALLBACK |
| # op op_div_long FALLBACK |
| # op op_rem_long FALLBACK |
| # op op_and_long FALLBACK |
| # op op_or_long FALLBACK |
| # op op_xor_long FALLBACK |
| # op op_shl_long FALLBACK |
| # op op_shr_long FALLBACK |
| # op op_ushr_long FALLBACK |
| # op op_add_float FALLBACK |
| # op op_sub_float FALLBACK |
| # op op_mul_float FALLBACK |
| # op op_div_float FALLBACK |
| # op op_rem_float FALLBACK |
| # op op_add_double FALLBACK |
| # op op_sub_double FALLBACK |
| # op op_mul_double FALLBACK |
| # op op_div_double FALLBACK |
| # op op_rem_double FALLBACK |
| # op op_add_int_2addr FALLBACK |
| # op op_sub_int_2addr FALLBACK |
| # op op_mul_int_2addr FALLBACK |
| # op op_div_int_2addr FALLBACK |
| # op op_rem_int_2addr FALLBACK |
| # op op_and_int_2addr FALLBACK |
| # op op_or_int_2addr FALLBACK |
| # op op_xor_int_2addr FALLBACK |
| # op op_shl_int_2addr FALLBACK |
| # op op_shr_int_2addr FALLBACK |
| # op op_ushr_int_2addr FALLBACK |
| # op op_add_long_2addr FALLBACK |
| # op op_sub_long_2addr FALLBACK |
| # op op_mul_long_2addr FALLBACK |
| # op op_div_long_2addr FALLBACK |
| # op op_rem_long_2addr FALLBACK |
| # op op_and_long_2addr FALLBACK |
| # op op_or_long_2addr FALLBACK |
| # op op_xor_long_2addr FALLBACK |
| # op op_shl_long_2addr FALLBACK |
| # op op_shr_long_2addr FALLBACK |
| # op op_ushr_long_2addr FALLBACK |
| # op op_add_float_2addr FALLBACK |
| # op op_sub_float_2addr FALLBACK |
| # op op_mul_float_2addr FALLBACK |
| # op op_div_float_2addr FALLBACK |
| # op op_rem_float_2addr FALLBACK |
| # op op_add_double_2addr FALLBACK |
| # op op_sub_double_2addr FALLBACK |
| # op op_mul_double_2addr FALLBACK |
| # op op_div_double_2addr FALLBACK |
| # op op_rem_double_2addr FALLBACK |
| # op op_add_int_lit16 FALLBACK |
| # op op_rsub_int FALLBACK |
| # op op_mul_int_lit16 FALLBACK |
| # op op_div_int_lit16 FALLBACK |
| # op op_rem_int_lit16 FALLBACK |
| # op op_and_int_lit16 FALLBACK |
| # op op_or_int_lit16 FALLBACK |
| # op op_xor_int_lit16 FALLBACK |
| # op op_add_int_lit8 FALLBACK |
| # op op_rsub_int_lit8 FALLBACK |
| # op op_mul_int_lit8 FALLBACK |
| # op op_div_int_lit8 FALLBACK |
| # op op_rem_int_lit8 FALLBACK |
| # op op_and_int_lit8 FALLBACK |
| # op op_or_int_lit8 FALLBACK |
| # op op_xor_int_lit8 FALLBACK |
| # op op_shl_int_lit8 FALLBACK |
| # op op_shr_int_lit8 FALLBACK |
| # op op_ushr_int_lit8 FALLBACK |
| # op op_iget_quick FALLBACK |
| # op op_iget_wide_quick FALLBACK |
| # op op_iget_object_quick FALLBACK |
| # op op_iput_quick FALLBACK |
| # op op_iput_wide_quick FALLBACK |
| # op op_iput_object_quick FALLBACK |
| # op op_invoke_virtual_quick FALLBACK |
| # op op_invoke_virtual_range_quick FALLBACK |
| # op op_iput_boolean_quick FALLBACK |
| # op op_iput_byte_quick FALLBACK |
| # op op_iput_char_quick FALLBACK |
| # op op_iput_short_quick FALLBACK |
| # op op_iget_boolean_quick FALLBACK |
| # op op_iget_byte_quick FALLBACK |
| # op op_iget_char_quick FALLBACK |
| # op op_iget_short_quick FALLBACK |
| # op op_unused_f3 FALLBACK |
| # op op_unused_f4 FALLBACK |
| # op op_unused_f5 FALLBACK |
| # op op_unused_f6 FALLBACK |
| # op op_unused_f7 FALLBACK |
| # op op_unused_f8 FALLBACK |
| # op op_unused_f9 FALLBACK |
| # op op_invoke_polymorphic FALLBACK |
| # op op_invoke_polymorphic_range FALLBACK |
| # op op_invoke_custom FALLBACK |
| # op op_invoke_custom_range FALLBACK |
| # op op_const_method_handle FALLBACK |
| # op op_const_method_type FALLBACK |
| op-end |
| |
| # common subroutines for asm; we emit the footer before alternate |
| # entry stubs, so that TBZ/TBNZ from ops can reach targets in footer |
| import arm64/footer.S |
| |
| # source for alternate entry stub |
| asm-alt-stub arm64/alt_stub.S |
| |
| # emit alternate entry stubs |
| alt-ops |
| |
| # finish by closing .cfi info |
| import arm64/close_cfi.S |