config-armv7-a revision ab35b50311951feea3782151dd5422ee944685c2
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
24handler-style computed-goto
25handler-size 64
26
27# source for the instruction table stub
28asm-stub armv5te/stub.S
29
30# source for alternate entry stub
31asm-alt-stub armv5te/alt_stub.S
32
33# file header and basic definitions
34import c/header.cpp
35import armv5te/header.S
36
37# C pre-processor defines for stub C instructions
38import cstubs/stubdefs.cpp
39
40# highly-platform-specific defs
41import armv7-a/platform.S
42
43# common defs for the C helpers; include this before the instruction handlers
44import c/opcommon.cpp
45
46# arch-specific entry point to interpreter
47import armv5te/entry.S
48
49# opcode list; argument to op-start is default directory
50op-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
159op-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
168import cstubs/enddefs.cpp
169
170# common subroutines for asm
171import armv5te/footer.S
172import armv5te/debug.cpp
173