| # Copyright (C) 2009 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. |
| |
| # Specifies the size of the assembly region in bytes |
| handler-style computed-goto |
| handler-size 64 |
| |
| # source for the instruction table stub |
| asm-stub x86-atom/stub.S |
| |
| # file header, macros and definitions |
| import c/header.cpp |
| import x86-atom/header.S |
| |
| # common defs for the C helper; include this before the instruction handlers |
| import cstubs/stubdefs.cpp |
| import c/opcommon.cpp |
| |
| # start of opcode list; command gives default directory location of instruction files |
| op-start x86-atom |
| |
| #op OP_ADD_DOUBLE_2ADDR c |
| #op OP_ADD_DOUBLE c |
| #op OP_ADD_FLOAT_2ADDR c |
| #op OP_ADD_FLOAT c |
| #op OP_ADD_INT_2ADDR c |
| #op OP_ADD_INT_LIT16 c |
| #op OP_ADD_INT_LIT8 c |
| #op OP_ADD_INT c |
| #op OP_ADD_LONG_2ADDR c |
| #op OP_ADD_LONG c |
| #op OP_AGET_BOOLEAN c |
| #op OP_AGET_BYTE c |
| #op OP_AGET_CHAR c |
| #op OP_AGET_OBJECT c |
| #op OP_AGET c |
| #op OP_AGET_SHORT c |
| #op OP_AGET_WIDE c |
| #op OP_AND_INT_2ADDR c |
| #op OP_AND_INT_LIT16 c |
| #op OP_AND_INT_LIT8 c |
| #op OP_AND_INT c |
| #op OP_AND_LONG_2ADDR c |
| #op OP_AND_LONG c |
| #op OP_APUT_BOOLEAN c |
| #op OP_APUT_BYTE c |
| #op OP_APUT_CHAR c |
| #op OP_APUT_OBJECT c |
| #op OP_APUT c |
| #op OP_APUT_SHORT c |
| #op OP_APUT_WIDE c |
| #op OP_ARRAY_LENGTH c |
| #op OP_CHECK_CAST c |
| #op OP_CMPG_DOUBLE c |
| #op OP_CMPG_FLOAT c |
| #op OP_CMPL_DOUBLE c |
| #op OP_CMPL_FLOAT c |
| #op OP_CMP_LONG c |
| #op OP_CONST_16 c |
| #op OP_CONST_4 c |
| #op OP_CONST_CLASS c |
| #op OP_CONST_HIGH16 c |
| #op OP_CONST c |
| #op OP_CONST_STRING_JUMBO c |
| #op OP_CONST_STRING c |
| #op OP_CONST_WIDE_16 c |
| #op OP_CONST_WIDE_32 c |
| #op OP_CONST_WIDE_HIGH16 c |
| #op OP_CONST_WIDE c |
| #op OP_DIV_DOUBLE_2ADDR c |
| #op OP_DIV_DOUBLE c |
| #op OP_DIV_FLOAT_2ADDR c |
| #op OP_DIV_FLOAT c |
| #op OP_DIV_INT_2ADDR c |
| #op OP_DIV_INT_LIT16 c |
| #op OP_DIV_INT_LIT8 c |
| #op OP_DIV_INT c |
| #op OP_DIV_LONG_2ADDR c |
| #op OP_DIV_LONG c |
| #op OP_DOUBLE_TO_FLOAT c |
| #op OP_DOUBLE_TO_INT c |
| #op OP_DOUBLE_TO_LONG c |
| #op OP_EXECUTE_INLINE c |
| #op OP_FILL_ARRAY_DATA c |
| #op OP_FILLED_NEW_ARRAY_RANGE c |
| #op OP_FILLED_NEW_ARRAY c |
| #op OP_FLOAT_TO_DOUBLE c |
| #op OP_FLOAT_TO_INT c |
| #op OP_FLOAT_TO_LONG c |
| #op OP_GOTO_16 c |
| #op OP_GOTO_32 c |
| #op OP_GOTO c |
| #op OP_IF_EQ c |
| #op OP_IF_EQZ c |
| #op OP_IF_GE c |
| #op OP_IF_GEZ c |
| #op OP_IF_GT c |
| #op OP_IF_GTZ c |
| #op OP_IF_LE c |
| #op OP_IF_LEZ c |
| #op OP_IF_LT c |
| #op OP_IF_LTZ c |
| #op OP_IF_NE c |
| #op OP_IF_NEZ c |
| #op OP_IGET_BOOLEAN c |
| #op OP_IGET_BYTE c |
| #op OP_IGET_CHAR c |
| #op OP_IGET_OBJECT_QUICK c |
| #op OP_IGET_OBJECT c |
| #op OP_IGET_QUICK c |
| #op OP_IGET c |
| #op OP_IGET_SHORT c |
| #op OP_IGET_WIDE_QUICK c |
| #op OP_IGET_WIDE c |
| #op OP_INSTANCE_OF c |
| #op OP_INT_TO_BYTE c |
| #op OP_INT_TO_CHAR c |
| #op OP_INT_TO_DOUBLE c |
| #op OP_INT_TO_FLOAT c |
| #op OP_INT_TO_LONG c |
| #op OP_INT_TO_SHORT c |
| #op OP_INVOKE_DIRECT_EMPTY c |
| #op OP_INVOKE_DIRECT_RANGE c |
| #op OP_INVOKE_DIRECT c |
| #op OP_INVOKE_INTERFACE_RANGE c |
| #op OP_INVOKE_INTERFACE c |
| #op OP_INVOKE_STATIC_RANGE c |
| #op OP_INVOKE_STATIC c |
| #op OP_INVOKE_SUPER_QUICK_RANGE c |
| #op OP_INVOKE_SUPER_QUICK c |
| #op OP_INVOKE_SUPER_RANGE c |
| #op OP_INVOKE_SUPER c |
| #op OP_INVOKE_VIRTUAL_QUICK_RANGE c |
| #op OP_INVOKE_VIRTUAL_QUICK c |
| #op OP_INVOKE_VIRTUAL_RANGE c |
| #op OP_INVOKE_VIRTUAL c |
| #op OP_IPUT_BOOLEAN c |
| #op OP_IPUT_BYTE c |
| #op OP_IPUT_CHAR c |
| #op OP_IPUT_OBJECT_QUICK c |
| #op OP_IPUT_OBJECT c |
| #op OP_IPUT_QUICK c |
| #op OP_IPUT c |
| #op OP_IPUT_SHORT c |
| #op OP_IPUT_WIDE_QUICK c |
| #op OP_IPUT_WIDE c |
| #op OP_LONG_TO_DOUBLE c |
| #op OP_LONG_TO_FLOAT c |
| #op OP_LONG_TO_INT c |
| #op OP_MONITOR_ENTER c |
| #op OP_MONITOR_EXIT c |
| #op OP_MOVE_16 c |
| #op OP_MOVE_EXCEPTION c |
| #op OP_MOVE_FROM16 c |
| #op OP_MOVE_OBJECT_16 c |
| #op OP_MOVE_OBJECT_FROM16 c |
| #op OP_MOVE_OBJECT c |
| #op OP_MOVE_RESULT_OBJECT c |
| #op OP_MOVE_RESULT c |
| #op OP_MOVE_RESULT_WIDE c |
| #op OP_MOVE c |
| #op OP_MOVE_WIDE_16 c |
| #op OP_MOVE_WIDE_FROM16 c |
| #op OP_MOVE_WIDE c |
| #op OP_MUL_DOUBLE_2ADDR c |
| #op OP_MUL_DOUBLE c |
| #op OP_MUL_FLOAT_2ADDR c |
| #op OP_MUL_FLOAT c |
| #op OP_MUL_INT_2ADDR c |
| #op OP_MUL_INT_LIT16 c |
| #op OP_MUL_INT_LIT8 c |
| #op OP_MUL_INT c |
| #op OP_MUL_LONG_2ADDR c |
| #op OP_MUL_LONG c |
| #op OP_NEG_DOUBLE c |
| #op OP_NEG_FLOAT c |
| #op OP_NEG_INT c |
| #op OP_NEG_LONG c |
| #op OP_NEW_ARRAY c |
| #op OP_NEW_INSTANCE c |
| #op OP_NOP c |
| #op OP_NOT_INT c |
| #op OP_NOT_LONG c |
| #op OP_OR_INT_2ADDR c |
| #op OP_OR_INT_LIT16 c |
| #op OP_OR_INT_LIT8 c |
| #op OP_OR_INT c |
| #op OP_OR_LONG_2ADDR c |
| #op OP_OR_LONG c |
| #op OP_PACKED_SWITCH c |
| #op OP_REM_DOUBLE_2ADDR c |
| #op OP_REM_DOUBLE c |
| #op OP_REM_FLOAT_2ADDR c |
| #op OP_REM_FLOAT c |
| #op OP_REM_INT_2ADDR c |
| #op OP_REM_INT_LIT16 c |
| #op OP_REM_INT_LIT8 c |
| #op OP_REM_INT c |
| #op OP_REM_LONG_2ADDR c |
| #op OP_REM_LONG c |
| #op OP_RETURN_OBJECT c |
| #op OP_RETURN c |
| #op OP_RETURN_VOID c |
| #op OP_RETURN_WIDE c |
| #op OP_RSUB_INT_LIT8 c |
| #op OP_RSUB_INT c |
| #op OP_SGET_BOOLEAN c |
| #op OP_SGET_BYTE c |
| #op OP_SGET_CHAR c |
| #op OP_SGET_OBJECT c |
| #op OP_SGET c |
| #op OP_SGET_SHORT c |
| #op OP_SGET_WIDE c |
| #op OP_SHL_INT_2ADDR c |
| #op OP_SHL_INT_LIT8 c |
| #op OP_SHL_INT c |
| #op OP_SHL_LONG_2ADDR c |
| #op OP_SHL_LONG c |
| #op OP_SHR_INT_2ADDR c |
| #op OP_SHR_INT_LIT8 c |
| #op OP_SHR_INT c |
| #op OP_SHR_LONG_2ADDR c |
| #op OP_SHR_LONG c |
| #op OP_SPARSE_SWITCH c |
| #op OP_SPUT_BOOLEAN c |
| #op OP_SPUT_BYTE c |
| #op OP_SPUT_CHAR c |
| #op OP_SPUT_OBJECT c |
| #op OP_SPUT c |
| #op OP_SPUT_SHORT c |
| #op OP_SPUT_WIDE c |
| #op OP_SUB_DOUBLE_2ADDR c |
| #op OP_SUB_DOUBLE c |
| #op OP_SUB_FLOAT_2ADDR c |
| #op OP_SUB_FLOAT c |
| #op OP_SUB_INT_2ADDR c |
| #op OP_SUB_INT c |
| #op OP_SUB_LONG_2ADDR c |
| #op OP_SUB_LONG c |
| #op OP_THROW c |
| #op OP_UNUSED_3E c |
| #op OP_UNUSED_3F c |
| #op OP_UNUSED_40 c |
| #op OP_UNUSED_41 c |
| #op OP_UNUSED_42 c |
| #op OP_UNUSED_43 c |
| #op OP_UNUSED_73 c |
| #op OP_UNUSED_79 c |
| #op OP_UNUSED_7A c |
| #op OP_UNUSED_F1 c |
| #op OP_UNUSED_FC c |
| #op OP_UNUSED_FD c |
| #op OP_UNUSED_FE c |
| #op OP_UNUSED_FF c |
| #op OP_USHR_INT_2ADDR c |
| #op OP_USHR_INT_LIT8 c |
| #op OP_USHR_INT c |
| #op OP_USHR_LONG_2ADDR c |
| #op OP_USHR_LONG c |
| #op OP_XOR_INT_2ADDR c |
| #op OP_XOR_INT_LIT16 c |
| #op OP_XOR_INT_LIT8 c |
| #op OP_XOR_INT c |
| #op OP_XOR_LONG_2ADDR c |
| #op OP_XOR_LONG c |
| |
| # TODO: provide native implementations |
| op OP_BREAKPOINT c |
| op OP_EXECUTE_INLINE_RANGE c |
| op OP_IGET_VOLATILE c |
| op OP_IPUT_VOLATILE c |
| op OP_SGET_VOLATILE c |
| op OP_SPUT_VOLATILE c |
| op OP_IGET_OBJECT_VOLATILE c |
| op OP_IPUT_OBJECT_VOLATILE c |
| op OP_SGET_OBJECT_VOLATILE c |
| op OP_SPUT_OBJECT_VOLATILE c |
| op OP_IGET_WIDE_VOLATILE c |
| op OP_IPUT_WIDE_VOLATILE c |
| op OP_SGET_WIDE_VOLATILE c |
| op OP_SPUT_WIDE_VOLATILE c |
| op OP_RETURN_VOID_BARRIER c |
| op OP_INVOKE_OBJECT_INIT_RANGE c |
| |
| op-end |
| |
| # arch-specific entry point to interpreter |
| import x86-atom/entry.S |
| |
| # "helper" code for C; include this after the instruction handlers |
| import c/gotoTargets.cpp |
| import cstubs/enddefs.cpp |
| |
| # common subroutines for asm |
| import x86-atom/footer.S |