# 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-size 64 # source for the instruction table stub asm-stub x86-atom/stub.S # file header, macros and definitions import c/header.c import x86-atom/header.S # common defs for the C helper; include this before the instruction handlers import cstubs/stubdefs.c import c/opcommon.c # 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_E3 c #op OP_UNUSED_E4 c #op OP_UNUSED_E5 c #op OP_UNUSED_E6 c #op OP_UNUSED_E7 c #op OP_UNUSED_E8 c #op OP_UNUSED_E9 c #op OP_UNUSED_EA c #op OP_UNUSED_EB 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-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.c import cstubs/enddefs.c # common subroutines for asm import x86-atom/footer.S