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 op-end 160 161 # "helper" code for C; include if you use any of the C stubs (this generates 162 # object code, so it's normally excluded) 163 # 164 # Add this if you see linker failures for stuff like "dvmMterp_exceptionThrown". 165 ##import c/gotoTargets.cpp 166 167 # end of defs; include this when cstubs/stubdefs.cpp is included 168 import cstubs/enddefs.cpp 169 170 # common subroutines for asm 171 import armv5te/footer.S 172 import armv5te/debug.cpp 173