Home | History | Annotate | Download | only in mterp
      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 #
     16 # Configuration for ARMv7-A targets.
     17 #
     18 # This target includes Thumb-2 and Thumb2-EE support, as well as VFPLite.
     19 #
     20 # The difference in performance between this and ARMv5TE appears to be
     21 # negligible on a Cortex-A8 CPU, so this is really just an experiment.
     22 #
     23 
     24 handler-style computed-goto
     25 handler-size 64
     26 
     27 # source for the instruction table stub
     28 asm-stub armv5te/stub.S
     29 
     30 # source for alternate entry stub
     31 asm-alt-stub armv5te/alt_stub.S
     32 
     33 # file header and basic definitions
     34 import c/header.cpp
     35 import armv5te/header.S
     36 
     37 # C pre-processor defines for stub C instructions
     38 import cstubs/stubdefs.cpp
     39 
     40 # highly-platform-specific defs
     41 import armv7-a/platform.S
     42 
     43 # common defs for the C helpers; include this before the instruction handlers
     44 import c/opcommon.cpp
     45 
     46 # arch-specific entry point to interpreter
     47 import armv5te/entry.S
     48 
     49 # opcode list; argument to op-start is default directory
     50 op-start armv5te
     51     # handlers that take advantage of >= ARMv6T2 instructions
     52     op OP_ADD_DOUBLE_2ADDR armv6t2
     53     op OP_ADD_FLOAT_2ADDR armv6t2
     54     op OP_ADD_INT_2ADDR armv6t2
     55     op OP_ADD_INT_LIT16 armv6t2
     56     op OP_ADD_LONG_2ADDR armv6t2
     57     op OP_AND_INT_2ADDR armv6t2
     58     op OP_AND_INT_LIT16 armv6t2
     59     op OP_AND_LONG_2ADDR armv6t2
     60     op OP_ARRAY_LENGTH armv6t2
     61     op OP_CONST_4 armv6t2
     62     op OP_DIV_DOUBLE_2ADDR armv6t2
     63     op OP_DIV_FLOAT_2ADDR armv6t2
     64     op OP_DIV_INT_2ADDR armv6t2
     65     op OP_DIV_INT_LIT16 armv6t2
     66     op OP_DIV_LONG_2ADDR armv6t2
     67     op OP_DOUBLE_TO_FLOAT armv6t2
     68     op OP_DOUBLE_TO_INT armv6t2
     69     op OP_DOUBLE_TO_LONG armv6t2
     70     op OP_FLOAT_TO_DOUBLE armv6t2
     71     op OP_FLOAT_TO_INT armv6t2
     72     op OP_FLOAT_TO_LONG armv6t2
     73     op OP_IF_EQ armv6t2
     74     op OP_IF_GE armv6t2
     75     op OP_IF_GT armv6t2
     76     op OP_IF_LE armv6t2
     77     op OP_IF_LT armv6t2
     78     op OP_IF_NE armv6t2
     79     op OP_IGET armv6t2
     80     op OP_IGET_QUICK armv6t2
     81     op OP_IGET_WIDE armv6t2
     82     op OP_IGET_WIDE_QUICK armv6t2
     83     op OP_INT_TO_BYTE armv6t2
     84     op OP_INT_TO_CHAR armv6t2
     85     op OP_INT_TO_DOUBLE armv6t2
     86     op OP_INT_TO_FLOAT armv6t2
     87     op OP_INT_TO_LONG armv6t2
     88     op OP_INT_TO_SHORT armv6t2
     89     op OP_IPUT armv6t2
     90     op OP_IPUT_QUICK armv6t2
     91     op OP_IPUT_WIDE armv6t2
     92     op OP_IPUT_WIDE_QUICK armv6t2
     93     op OP_LONG_TO_DOUBLE armv6t2
     94     op OP_LONG_TO_FLOAT armv6t2
     95     op OP_MOVE armv6t2
     96     op OP_MOVE_WIDE armv6t2
     97     op OP_MUL_DOUBLE_2ADDR armv6t2
     98     op OP_MUL_FLOAT_2ADDR armv6t2
     99     op OP_MUL_INT_2ADDR armv6t2
    100     op OP_MUL_INT_LIT16 armv6t2
    101     op OP_MUL_LONG_2ADDR armv6t2
    102     op OP_NEG_DOUBLE armv6t2
    103     op OP_NEG_FLOAT armv6t2
    104     op OP_NEG_INT armv6t2
    105     op OP_NEG_LONG armv6t2
    106     op OP_NOT_INT armv6t2
    107     op OP_NOT_LONG armv6t2
    108     op OP_OR_INT_2ADDR armv6t2
    109     op OP_OR_INT_LIT16 armv6t2
    110     op OP_OR_LONG_2ADDR armv6t2
    111     op OP_REM_DOUBLE_2ADDR armv6t2
    112     op OP_REM_FLOAT_2ADDR armv6t2
    113     op OP_REM_INT_2ADDR armv6t2
    114     op OP_REM_INT_LIT16 armv6t2
    115     op OP_REM_LONG_2ADDR armv6t2
    116     op OP_RSUB_INT armv6t2
    117     op OP_SHL_INT_2ADDR armv6t2
    118     op OP_SHL_LONG_2ADDR armv6t2
    119     op OP_SHR_INT_2ADDR armv6t2
    120     op OP_SHR_LONG_2ADDR armv6t2
    121     op OP_SUB_DOUBLE_2ADDR armv6t2
    122     op OP_SUB_FLOAT_2ADDR armv6t2
    123     op OP_SUB_INT_2ADDR armv6t2
    124     op OP_SUB_LONG_2ADDR armv6t2
    125     op OP_USHR_INT_2ADDR armv6t2
    126     op OP_USHR_LONG_2ADDR armv6t2
    127     op OP_XOR_INT_2ADDR armv6t2
    128     op OP_XOR_INT_LIT16 armv6t2
    129     op OP_XOR_LONG_2ADDR armv6t2
    130 
    131     # floating point handlers that use VFP
    132     # these override the handlers specified earlier
    133     op OP_ADD_DOUBLE arm-vfp
    134     op OP_ADD_DOUBLE_2ADDR arm-vfp
    135     op OP_ADD_FLOAT arm-vfp
    136     op OP_ADD_FLOAT_2ADDR arm-vfp
    137     op OP_CMPG_DOUBLE arm-vfp
    138     op OP_CMPG_FLOAT arm-vfp
    139     op OP_CMPL_DOUBLE arm-vfp
    140     op OP_CMPL_FLOAT arm-vfp
    141     op OP_DIV_DOUBLE arm-vfp
    142     op OP_DIV_DOUBLE_2ADDR arm-vfp
    143     op OP_DIV_FLOAT arm-vfp
    144     op OP_DIV_FLOAT_2ADDR arm-vfp
    145     op OP_DOUBLE_TO_FLOAT arm-vfp
    146     op OP_DOUBLE_TO_INT arm-vfp
    147     op OP_FLOAT_TO_DOUBLE arm-vfp
    148     op OP_FLOAT_TO_INT arm-vfp
    149     op OP_INT_TO_DOUBLE arm-vfp
    150     op OP_INT_TO_FLOAT arm-vfp
    151     op OP_MUL_DOUBLE arm-vfp
    152     op OP_MUL_DOUBLE_2ADDR arm-vfp
    153     op OP_MUL_FLOAT arm-vfp
    154     op OP_MUL_FLOAT_2ADDR arm-vfp
    155     op OP_SUB_DOUBLE arm-vfp
    156     op OP_SUB_DOUBLE_2ADDR arm-vfp
    157     op OP_SUB_FLOAT arm-vfp
    158     op OP_SUB_FLOAT_2ADDR arm-vfp
    159 
    160     alt OP_DISPATCH_FF armv5te
    161 op-end
    162 
    163 # "helper" code for C; include if you use any of the C stubs (this generates
    164 # object code, so it's normally excluded)
    165 #
    166 # Add this if you see linker failures for stuff like "dvmMterp_exceptionThrown".
    167 ##import c/gotoTargets.cpp
    168 
    169 # end of defs; include this when cstubs/stubdefs.cpp is included
    170 import cstubs/enddefs.cpp
    171 
    172 # common subroutines for asm
    173 import armv5te/footer.S
    174 import armv5te/debug.cpp
    175