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 16handler-size 64 17 18# source for the instruction table stub 19asm-stub x86-atom/stub.S 20 21# file header, macros and definitions 22import c/header.c 23import x86-atom/header.S 24 25# common defs for the C helper; include this before the instruction handlers 26import cstubs/stubdefs.c 27import c/opcommon.c 28 29# start of opcode list; command gives default directory location of instruction files 30op-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 287op OP_BREAKPOINT c 288op OP_EXECUTE_INLINE_RANGE c 289op OP_IGET_VOLATILE c 290op OP_IPUT_VOLATILE c 291op OP_SGET_VOLATILE c 292op OP_SPUT_VOLATILE c 293op OP_IGET_OBJECT_VOLATILE c 294op OP_IPUT_OBJECT_VOLATILE c 295op OP_SGET_OBJECT_VOLATILE c 296op OP_SPUT_OBJECT_VOLATILE c 297op OP_IGET_WIDE_VOLATILE c 298op OP_IPUT_WIDE_VOLATILE c 299op OP_SGET_WIDE_VOLATILE c 300op OP_SPUT_WIDE_VOLATILE c 301 302op-end 303 304# arch-specific entry point to interpreter 305import x86-atom/entry.S 306 307# "helper" code for C; include this after the instruction handlers 308import c/gotoTargets.c 309import cstubs/enddefs.c 310 311# common subroutines for asm 312import x86-atom/footer.S 313