summaryrefslogtreecommitdiff
path: root/vm/mterp/config-armv7-a
blob: e66640c658ecfe3b40f6c94789643c05ca7c20d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# 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.

#
# Configuration for ARMv7-A targets.
#
# This target includes Thumb-2 and Thumb2-EE support, as well as VFPLite.
#
# The difference in performance between this and ARMv5TE appears to be
# negligible on a Cortex-A8 CPU, so this is really just an experiment.
#

handler-size 64

# source for the instruction table stub
asm-stub armv5te/stub.S

# file header and basic definitions
import c/header.c
import armv5te/header.S

# C pre-processor defines for stub C instructions
import cstubs/stubdefs.c

# highly-platform-specific defs
import armv7-a/platform.S

# common defs for the C helpers; include this before the instruction handlers
import c/opcommon.c

# arch-specific entry point to interpreter
import armv5te/entry.S

# opcode list; argument to op-start is default directory
op-start armv5te
    # handlers that take advantage of >= ARMv6T2 instructions
    op OP_ADD_DOUBLE_2ADDR armv6t2
    op OP_ADD_FLOAT_2ADDR armv6t2
    op OP_ADD_INT_2ADDR armv6t2
    op OP_ADD_INT_LIT16 armv6t2
    op OP_ADD_LONG_2ADDR armv6t2
    op OP_AND_INT_2ADDR armv6t2
    op OP_AND_INT_LIT16 armv6t2
    op OP_AND_LONG_2ADDR armv6t2
    op OP_ARRAY_LENGTH armv6t2
    op OP_CONST_4 armv6t2
    op OP_DIV_DOUBLE_2ADDR armv6t2
    op OP_DIV_FLOAT_2ADDR armv6t2
    op OP_DIV_INT_2ADDR armv6t2
    op OP_DIV_INT_LIT16 armv6t2
    op OP_DIV_LONG_2ADDR armv6t2
    op OP_DOUBLE_TO_FLOAT armv6t2
    op OP_DOUBLE_TO_INT armv6t2
    op OP_DOUBLE_TO_LONG armv6t2
    op OP_FLOAT_TO_DOUBLE armv6t2
    op OP_FLOAT_TO_INT armv6t2
    op OP_FLOAT_TO_LONG armv6t2
    op OP_IF_EQ armv6t2
    op OP_IF_GE armv6t2
    op OP_IF_GT armv6t2
    op OP_IF_LE armv6t2
    op OP_IF_LT armv6t2
    op OP_IF_NE armv6t2
    op OP_IGET armv6t2
    op OP_IGET_QUICK armv6t2
    op OP_IGET_WIDE armv6t2
    op OP_IGET_WIDE_QUICK armv6t2
    op OP_INT_TO_BYTE armv6t2
    op OP_INT_TO_CHAR armv6t2
    op OP_INT_TO_DOUBLE armv6t2
    op OP_INT_TO_FLOAT armv6t2
    op OP_INT_TO_LONG armv6t2
    op OP_INT_TO_SHORT armv6t2
    op OP_IPUT armv6t2
    op OP_IPUT_QUICK armv6t2
    op OP_IPUT_WIDE armv6t2
    op OP_IPUT_WIDE_QUICK armv6t2
    op OP_LONG_TO_DOUBLE armv6t2
    op OP_LONG_TO_FLOAT armv6t2
    op OP_MOVE armv6t2
    op OP_MOVE_WIDE armv6t2
    op OP_MUL_DOUBLE_2ADDR armv6t2
    op OP_MUL_FLOAT_2ADDR armv6t2
    op OP_MUL_INT_2ADDR armv6t2
    op OP_MUL_INT_LIT16 armv6t2
    op OP_MUL_LONG_2ADDR armv6t2
    op OP_NEG_DOUBLE armv6t2
    op OP_NEG_FLOAT armv6t2
    op OP_NEG_INT armv6t2
    op OP_NEG_LONG armv6t2
    op OP_NOT_INT armv6t2
    op OP_NOT_LONG armv6t2
    op OP_OR_INT_2ADDR armv6t2
    op OP_OR_INT_LIT16 armv6t2
    op OP_OR_LONG_2ADDR armv6t2
    op OP_REM_DOUBLE_2ADDR armv6t2
    op OP_REM_FLOAT_2ADDR armv6t2
    op OP_REM_INT_2ADDR armv6t2
    op OP_REM_INT_LIT16 armv6t2
    op OP_REM_LONG_2ADDR armv6t2
    op OP_RSUB_INT armv6t2
    op OP_SHL_INT_2ADDR armv6t2
    op OP_SHL_LONG_2ADDR armv6t2
    op OP_SHR_INT_2ADDR armv6t2
    op OP_SHR_LONG_2ADDR armv6t2
    op OP_SUB_DOUBLE_2ADDR armv6t2
    op OP_SUB_FLOAT_2ADDR armv6t2
    op OP_SUB_INT_2ADDR armv6t2
    op OP_SUB_LONG_2ADDR armv6t2
    op OP_USHR_INT_2ADDR armv6t2
    op OP_USHR_LONG_2ADDR armv6t2
    op OP_XOR_INT_2ADDR armv6t2
    op OP_XOR_INT_LIT16 armv6t2
    op OP_XOR_LONG_2ADDR armv6t2

    # floating point handlers that use VFP
    # these override the handlers specified earlier
    op OP_ADD_DOUBLE arm-vfp
    op OP_ADD_DOUBLE_2ADDR arm-vfp
    op OP_ADD_FLOAT arm-vfp
    op OP_ADD_FLOAT_2ADDR arm-vfp
    op OP_CMPG_DOUBLE arm-vfp
    op OP_CMPG_FLOAT arm-vfp
    op OP_CMPL_DOUBLE arm-vfp
    op OP_CMPL_FLOAT arm-vfp
    op OP_DIV_DOUBLE arm-vfp
    op OP_DIV_DOUBLE_2ADDR arm-vfp
    op OP_DIV_FLOAT arm-vfp
    op OP_DIV_FLOAT_2ADDR arm-vfp
    op OP_DOUBLE_TO_FLOAT arm-vfp
    op OP_DOUBLE_TO_INT arm-vfp
    op OP_FLOAT_TO_DOUBLE arm-vfp
    op OP_FLOAT_TO_INT arm-vfp
    op OP_INT_TO_DOUBLE arm-vfp
    op OP_INT_TO_FLOAT arm-vfp
    op OP_MUL_DOUBLE arm-vfp
    op OP_MUL_DOUBLE_2ADDR arm-vfp
    op OP_MUL_FLOAT arm-vfp
    op OP_MUL_FLOAT_2ADDR arm-vfp
    op OP_SUB_DOUBLE arm-vfp
    op OP_SUB_DOUBLE_2ADDR arm-vfp
    op OP_SUB_FLOAT arm-vfp
    op OP_SUB_FLOAT_2ADDR arm-vfp
op-end

# "helper" code for C; include if you use any of the C stubs (this generates
# object code, so it's normally excluded)
##import c/gotoTargets.c

# end of defs; include this when cstubs/stubdefs.c is included
import cstubs/enddefs.c

# common subroutines for asm
import armv5te/footer.S
import armv5te/debug.c