Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(548)

Side by Side Diff: include/opcode/arm.h

Issue 124383005: GDB 7.6.50 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@upstream
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « include/opcode/aarch64.h ('k') | include/opcode/avr.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* ARM assembler/disassembler support. 1 /* ARM assembler/disassembler support.
2 Copyright 2004, 2010, 2011 Free Software Foundation, Inc. 2 Copyright 2004, 2010, 2011 Free Software Foundation, Inc.
3 3
4 This file is part of GDB and GAS. 4 This file is part of GDB and GAS.
5 5
6 GDB and GAS are free software; you can redistribute it and/or 6 GDB and GAS are free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License as 7 modify it under the terms of the GNU General Public License as
8 published by the Free Software Foundation; either version 3, or (at 8 published by the Free Software Foundation; either version 3, or (at
9 your option) any later version. 9 your option) any later version.
10 10
(...skipping 16 matching lines...) Expand all
27 #define ARM_EXT_V4 0x00000020 /* Allow half word loads. */ 27 #define ARM_EXT_V4 0x00000020 /* Allow half word loads. */
28 #define ARM_EXT_V4T 0x00000040 /* Thumb. */ 28 #define ARM_EXT_V4T 0x00000040 /* Thumb. */
29 #define ARM_EXT_V5 0x00000080 /* Allow CLZ, etc. */ 29 #define ARM_EXT_V5 0x00000080 /* Allow CLZ, etc. */
30 #define ARM_EXT_V5T 0x00000100 /* Improved interworking. */ 30 #define ARM_EXT_V5T 0x00000100 /* Improved interworking. */
31 #define ARM_EXT_V5ExP 0x00000200 /* DSP core set. */ 31 #define ARM_EXT_V5ExP 0x00000200 /* DSP core set. */
32 #define ARM_EXT_V5E 0x00000400 /* DSP Double transfers. */ 32 #define ARM_EXT_V5E 0x00000400 /* DSP Double transfers. */
33 #define ARM_EXT_V5J 0x00000800 /* Jazelle extension. */ 33 #define ARM_EXT_V5J 0x00000800 /* Jazelle extension. */
34 #define ARM_EXT_V6 0x00001000 /* ARM V6. */ 34 #define ARM_EXT_V6 0x00001000 /* ARM V6. */
35 #define ARM_EXT_V6K 0x00002000 /* ARM V6K. */ 35 #define ARM_EXT_V6K 0x00002000 /* ARM V6K. */
36 /* 0x00004000 Was ARM V6Z. */ 36 /* 0x00004000 Was ARM V6Z. */
37 #define ARM_EXT_V8 0x00004000 /* is now ARMv8. */
37 #define ARM_EXT_V6T2 0x00008000 /* Thumb-2. */ 38 #define ARM_EXT_V6T2 0x00008000 /* Thumb-2. */
38 #define ARM_EXT_DIV 0x00010000 /* Integer division. */ 39 #define ARM_EXT_DIV 0x00010000 /* Integer division. */
39 /* The 'M' in Arm V7M stands for Microcontroller. 40 /* The 'M' in Arm V7M stands for Microcontroller.
40 On earlier architecture variants it stands for Multiply. */ 41 On earlier architecture variants it stands for Multiply. */
41 #define ARM_EXT_V5E_NOTM 0x00020000 /* Arm V5E but not Arm V7M. */ 42 #define ARM_EXT_V5E_NOTM 0x00020000 /* Arm V5E but not Arm V7M. */
42 #define ARM_EXT_V6_NOTM 0x00040000 /* Arm V6 but not Arm V7M. */ 43 #define ARM_EXT_V6_NOTM 0x00040000 /* Arm V6 but not Arm V7M. */
43 #define ARM_EXT_V7 0x00080000 /* Arm V7. */ 44 #define ARM_EXT_V7 0x00080000 /* Arm V7. */
44 #define ARM_EXT_V7A 0x00100000 /* Arm V7A. */ 45 #define ARM_EXT_V7A 0x00100000 /* Arm V7A. */
45 #define ARM_EXT_V7R 0x00200000 /* Arm V7R. */ 46 #define ARM_EXT_V7R 0x00200000 /* Arm V7R. */
46 #define ARM_EXT_V7M 0x00400000 /* Arm V7M. */ 47 #define ARM_EXT_V7M 0x00400000 /* Arm V7M. */
(...skipping 23 matching lines...) Expand all
70 #define FPU_VFP_EXT_V1xD 0x08000000 /* Base VFP instruction set. */ 71 #define FPU_VFP_EXT_V1xD 0x08000000 /* Base VFP instruction set. */
71 #define FPU_VFP_EXT_V1 0x04000000 /* Double-precision insns. */ 72 #define FPU_VFP_EXT_V1 0x04000000 /* Double-precision insns. */
72 #define FPU_VFP_EXT_V2 0x02000000 /* ARM10E VFPr1. */ 73 #define FPU_VFP_EXT_V2 0x02000000 /* ARM10E VFPr1. */
73 #define FPU_VFP_EXT_V3xD 0x01000000 /* VFPv3 single-precision. */ 74 #define FPU_VFP_EXT_V3xD 0x01000000 /* VFPv3 single-precision. */
74 #define FPU_VFP_EXT_V3 0x00800000 /* VFPv3 double-precision. */ 75 #define FPU_VFP_EXT_V3 0x00800000 /* VFPv3 double-precision. */
75 #define FPU_NEON_EXT_V1 0x00400000 /* Neon (SIMD) insns. */ 76 #define FPU_NEON_EXT_V1 0x00400000 /* Neon (SIMD) insns. */
76 #define FPU_VFP_EXT_D32 0x00200000 /* Registers D16-D31. */ 77 #define FPU_VFP_EXT_D32 0x00200000 /* Registers D16-D31. */
77 #define FPU_VFP_EXT_FP16 0x00100000 /* Half-precision extensions. */ 78 #define FPU_VFP_EXT_FP16 0x00100000 /* Half-precision extensions. */
78 #define FPU_NEON_EXT_FMA 0x00080000 /* Neon fused multiply-add */ 79 #define FPU_NEON_EXT_FMA 0x00080000 /* Neon fused multiply-add */
79 #define FPU_VFP_EXT_FMA 0x00040000 /* VFP fused multiply-add */ 80 #define FPU_VFP_EXT_FMA 0x00040000 /* VFP fused multiply-add */
81 #define FPU_VFP_EXT_ARMV8 0x00020000 /* FP for ARMv8. */
82 #define FPU_NEON_EXT_ARMV8 0x00010000 /* Neon for ARMv8. */
83 #define FPU_CRYPTO_EXT_ARMV8 0x00008000 /* Crypto for ARMv8. */
84 #define CRC_EXT_ARMV8 0x00004000 /* CRC32 for ARMv8. */
80 85
81 /* Architectures are the sum of the base and extensions. The ARM ARM (rev E) 86 /* Architectures are the sum of the base and extensions. The ARM ARM (rev E)
82 defines the following: ARMv3, ARMv3M, ARMv4xM, ARMv4, ARMv4TxM, ARMv4T, 87 defines the following: ARMv3, ARMv3M, ARMv4xM, ARMv4, ARMv4TxM, ARMv4T,
83 ARMv5xM, ARMv5, ARMv5TxM, ARMv5T, ARMv5TExP, ARMv5TE. To these we add 88 ARMv5xM, ARMv5, ARMv5TxM, ARMv5T, ARMv5TExP, ARMv5TE. To these we add
84 three more to cover cores prior to ARM6. Finally, there are cores which 89 three more to cover cores prior to ARM6. Finally, there are cores which
85 implement further extensions in the co-processor space. */ 90 implement further extensions in the co-processor space. */
86 #define ARM_AEXT_V1 ARM_EXT_V1 91 #define ARM_AEXT_V1 ARM_EXT_V1
87 #define ARM_AEXT_V2 (ARM_AEXT_V1 | ARM_EXT_V2) 92 #define ARM_AEXT_V2 (ARM_AEXT_V1 | ARM_EXT_V2)
88 #define ARM_AEXT_V2S (ARM_AEXT_V2 | ARM_EXT_V2S) 93 #define ARM_AEXT_V2S (ARM_AEXT_V2 | ARM_EXT_V2S)
89 #define ARM_AEXT_V3 (ARM_AEXT_V2S | ARM_EXT_V3) 94 #define ARM_AEXT_V3 (ARM_AEXT_V2S | ARM_EXT_V3)
(...skipping 14 matching lines...) Expand all
104 #define ARM_AEXT_V6Z (ARM_AEXT_V6K | ARM_EXT_SEC) 109 #define ARM_AEXT_V6Z (ARM_AEXT_V6K | ARM_EXT_SEC)
105 #define ARM_AEXT_V6ZK (ARM_AEXT_V6K | ARM_EXT_SEC) 110 #define ARM_AEXT_V6ZK (ARM_AEXT_V6K | ARM_EXT_SEC)
106 #define ARM_AEXT_V6T2 (ARM_AEXT_V6 \ 111 #define ARM_AEXT_V6T2 (ARM_AEXT_V6 \
107 | ARM_EXT_V6T2 | ARM_EXT_V6_NOTM | ARM_EXT_THUMB_MSR \ 112 | ARM_EXT_V6T2 | ARM_EXT_V6_NOTM | ARM_EXT_THUMB_MSR \
108 | ARM_EXT_V6_DSP ) 113 | ARM_EXT_V6_DSP )
109 #define ARM_AEXT_V6KT2 (ARM_AEXT_V6T2 | ARM_EXT_V6K) 114 #define ARM_AEXT_V6KT2 (ARM_AEXT_V6T2 | ARM_EXT_V6K)
110 #define ARM_AEXT_V6ZT2 (ARM_AEXT_V6T2 | ARM_EXT_SEC) 115 #define ARM_AEXT_V6ZT2 (ARM_AEXT_V6T2 | ARM_EXT_SEC)
111 #define ARM_AEXT_V6ZKT2 (ARM_AEXT_V6T2 | ARM_EXT_V6K | ARM_EXT_SEC) 116 #define ARM_AEXT_V6ZKT2 (ARM_AEXT_V6T2 | ARM_EXT_V6K | ARM_EXT_SEC)
112 #define ARM_AEXT_V7_ARM (ARM_AEXT_V6KT2 | ARM_EXT_V7 | ARM_EXT_BARRIER) 117 #define ARM_AEXT_V7_ARM (ARM_AEXT_V6KT2 | ARM_EXT_V7 | ARM_EXT_BARRIER)
113 #define ARM_AEXT_V7A (ARM_AEXT_V7_ARM | ARM_EXT_V7A) 118 #define ARM_AEXT_V7A (ARM_AEXT_V7_ARM | ARM_EXT_V7A)
119 #define ARM_AEXT_V7VE (ARM_AEXT_V7A | ARM_EXT_DIV | ARM_EXT_ADIV \
120 | ARM_EXT_VIRT | ARM_EXT_SEC | ARM_EXT_MP)
114 #define ARM_AEXT_V7R (ARM_AEXT_V7_ARM | ARM_EXT_V7R | ARM_EXT_DIV) 121 #define ARM_AEXT_V7R (ARM_AEXT_V7_ARM | ARM_EXT_V7R | ARM_EXT_DIV)
115 #define ARM_AEXT_NOTM \ 122 #define ARM_AEXT_NOTM \
116 (ARM_AEXT_V4 | ARM_EXT_V5ExP | ARM_EXT_V5J | ARM_EXT_V6_NOTM \ 123 (ARM_AEXT_V4 | ARM_EXT_V5ExP | ARM_EXT_V5J | ARM_EXT_V6_NOTM \
117 | ARM_EXT_V6_DSP ) 124 | ARM_EXT_V6_DSP )
118 #define ARM_AEXT_V6M_ONLY \ 125 #define ARM_AEXT_V6M_ONLY \
119 ((ARM_EXT_BARRIER | ARM_EXT_V6M | ARM_EXT_THUMB_MSR) & ~(ARM_AEXT_NOTM)) 126 ((ARM_EXT_BARRIER | ARM_EXT_V6M | ARM_EXT_THUMB_MSR) & ~(ARM_AEXT_NOTM))
120 #define ARM_AEXT_V6M \ 127 #define ARM_AEXT_V6M \
121 ((ARM_AEXT_V6K | ARM_AEXT_V6M_ONLY) & ~(ARM_AEXT_NOTM)) 128 ((ARM_AEXT_V6K | ARM_AEXT_V6M_ONLY) & ~(ARM_AEXT_NOTM))
122 #define ARM_AEXT_V6SM (ARM_AEXT_V6M | ARM_EXT_OS) 129 #define ARM_AEXT_V6SM (ARM_AEXT_V6M | ARM_EXT_OS)
123 #define ARM_AEXT_V7M \ 130 #define ARM_AEXT_V7M \
124 ((ARM_AEXT_V7_ARM | ARM_EXT_V6M | ARM_EXT_V7M | ARM_EXT_DIV) \ 131 ((ARM_AEXT_V7_ARM | ARM_EXT_V6M | ARM_EXT_V7M | ARM_EXT_DIV) \
125 & ~(ARM_AEXT_NOTM)) 132 & ~(ARM_AEXT_NOTM))
126 #define ARM_AEXT_V7 (ARM_AEXT_V7A & ARM_AEXT_V7R & ARM_AEXT_V7M) 133 #define ARM_AEXT_V7 (ARM_AEXT_V7A & ARM_AEXT_V7R & ARM_AEXT_V7M)
127 #define ARM_AEXT_V7EM \ 134 #define ARM_AEXT_V7EM \
128 (ARM_AEXT_V7M | ARM_EXT_V5ExP | ARM_EXT_V6_DSP) 135 (ARM_AEXT_V7M | ARM_EXT_V5ExP | ARM_EXT_V6_DSP)
136 #define ARM_AEXT_V8A \
137 (ARM_AEXT_V7A | ARM_EXT_MP | ARM_EXT_SEC | ARM_EXT_DIV | ARM_EXT_ADIV \
138 | ARM_EXT_VIRT | ARM_EXT_V8)
129 139
130 /* Processors with specific extensions in the co-processor space. */ 140 /* Processors with specific extensions in the co-processor space. */
131 #define ARM_ARCH_XSCALE ARM_FEATURE (ARM_AEXT_V5TE, ARM_CEXT_XSCALE) 141 #define ARM_ARCH_XSCALE ARM_FEATURE (ARM_AEXT_V5TE, ARM_CEXT_XSCALE)
132 #define ARM_ARCH_IWMMXT \ 142 #define ARM_ARCH_IWMMXT \
133 ARM_FEATURE (ARM_AEXT_V5TE, ARM_CEXT_XSCALE | ARM_CEXT_IWMMXT) 143 ARM_FEATURE (ARM_AEXT_V5TE, ARM_CEXT_XSCALE | ARM_CEXT_IWMMXT)
134 #define ARM_ARCH_IWMMXT2 \ 144 #define ARM_ARCH_IWMMXT2 \
135 ARM_FEATURE (ARM_AEXT_V5TE, ARM_CEXT_XSCALE | ARM_CEXT_IWMMXT | ARM_CEXT_IWMMXT 2) 145 ARM_FEATURE (ARM_AEXT_V5TE, ARM_CEXT_XSCALE | ARM_CEXT_IWMMXT | ARM_CEXT_IWMMXT 2)
136 146
137 #define FPU_VFP_V1xD (FPU_VFP_EXT_V1xD | FPU_ENDIAN_PURE) 147 #define FPU_VFP_V1xD (FPU_VFP_EXT_V1xD | FPU_ENDIAN_PURE)
138 #define FPU_VFP_V1 (FPU_VFP_V1xD | FPU_VFP_EXT_V1) 148 #define FPU_VFP_V1 (FPU_VFP_V1xD | FPU_VFP_EXT_V1)
139 #define FPU_VFP_V2 (FPU_VFP_V1 | FPU_VFP_EXT_V2) 149 #define FPU_VFP_V2 (FPU_VFP_V1 | FPU_VFP_EXT_V2)
140 #define FPU_VFP_V3D16 (FPU_VFP_V2 | FPU_VFP_EXT_V3xD | FPU_VFP_EXT_V3) 150 #define FPU_VFP_V3D16 (FPU_VFP_V2 | FPU_VFP_EXT_V3xD | FPU_VFP_EXT_V3)
141 #define FPU_VFP_V3 (FPU_VFP_V3D16 | FPU_VFP_EXT_D32) 151 #define FPU_VFP_V3 (FPU_VFP_V3D16 | FPU_VFP_EXT_D32)
142 #define FPU_VFP_V3xD (FPU_VFP_V1xD | FPU_VFP_EXT_V2 | FPU_VFP_EXT_V3xD) 152 #define FPU_VFP_V3xD (FPU_VFP_V1xD | FPU_VFP_EXT_V2 | FPU_VFP_EXT_V3xD)
143 #define FPU_VFP_V4D16 (FPU_VFP_V3D16 | FPU_VFP_EXT_FP16 | FPU_VFP_EXT_FMA) 153 #define FPU_VFP_V4D16 (FPU_VFP_V3D16 | FPU_VFP_EXT_FP16 | FPU_VFP_EXT_FMA)
144 #define FPU_VFP_V4 (FPU_VFP_V3 | FPU_VFP_EXT_FP16 | FPU_VFP_EXT_FMA) 154 #define FPU_VFP_V4 (FPU_VFP_V3 | FPU_VFP_EXT_FP16 | FPU_VFP_EXT_FMA)
145 #define FPU_VFP_V4_SP_D16 (FPU_VFP_V3xD | FPU_VFP_EXT_FP16 | FPU_VFP_EXT_FMA) 155 #define FPU_VFP_V4_SP_D16 (FPU_VFP_V3xD | FPU_VFP_EXT_FP16 | FPU_VFP_EXT_FMA)
156 #define FPU_VFP_ARMV8 (FPU_VFP_V4 | FPU_VFP_EXT_ARMV8)
157 #define FPU_NEON_ARMV8 (FPU_NEON_EXT_V1 | FPU_NEON_EXT_FMA | FPU_NEON_EXT_ARMV8 )
158 #define FPU_CRYPTO_ARMV8 (FPU_CRYPTO_EXT_ARMV8)
146 #define FPU_VFP_HARD (FPU_VFP_EXT_V1xD | FPU_VFP_EXT_V1 | FPU_VFP_EXT_V2 \ 159 #define FPU_VFP_HARD (FPU_VFP_EXT_V1xD | FPU_VFP_EXT_V1 | FPU_VFP_EXT_V2 \
147 | FPU_VFP_EXT_V3xD | FPU_VFP_EXT_FMA | FPU_NEON_EXT_FMA \ 160 | FPU_VFP_EXT_V3xD | FPU_VFP_EXT_FMA | FPU_NEON_EXT_FMA \
148 | FPU_VFP_EXT_V3 | FPU_NEON_EXT_V1 | FPU_VFP_EXT_D32) 161 | FPU_VFP_EXT_V3 | FPU_NEON_EXT_V1 | FPU_VFP_EXT_D32)
149 #define FPU_FPA (FPU_FPA_EXT_V1 | FPU_FPA_EXT_V2) 162 #define FPU_FPA (FPU_FPA_EXT_V1 | FPU_FPA_EXT_V2)
150 163
151 /* Deprecated. */ 164 /* Deprecated. */
152 #define FPU_ARCH_VFP ARM_FEATURE (0, FPU_ENDIAN_PURE) 165 #define FPU_ARCH_VFP ARM_FEATURE (0, FPU_ENDIAN_PURE)
153 166
154 #define FPU_ARCH_FPE ARM_FEATURE (0, FPU_FPA_EXT_V1) 167 #define FPU_ARCH_FPE ARM_FEATURE (0, FPU_FPA_EXT_V1)
155 #define FPU_ARCH_FPA ARM_FEATURE (0, FPU_FPA) 168 #define FPU_ARCH_FPA ARM_FEATURE (0, FPU_FPA)
(...skipping 12 matching lines...) Expand all
168 #define FPU_ARCH_VFP_V3_PLUS_NEON_V1 \ 181 #define FPU_ARCH_VFP_V3_PLUS_NEON_V1 \
169 ARM_FEATURE (0, FPU_VFP_V3 | FPU_NEON_EXT_V1) 182 ARM_FEATURE (0, FPU_VFP_V3 | FPU_NEON_EXT_V1)
170 #define FPU_ARCH_NEON_FP16 \ 183 #define FPU_ARCH_NEON_FP16 \
171 ARM_FEATURE (0, FPU_VFP_V3 | FPU_NEON_EXT_V1 | FPU_VFP_EXT_FP16) 184 ARM_FEATURE (0, FPU_VFP_V3 | FPU_NEON_EXT_V1 | FPU_VFP_EXT_FP16)
172 #define FPU_ARCH_VFP_HARD ARM_FEATURE (0, FPU_VFP_HARD) 185 #define FPU_ARCH_VFP_HARD ARM_FEATURE (0, FPU_VFP_HARD)
173 #define FPU_ARCH_VFP_V4 ARM_FEATURE(0, FPU_VFP_V4) 186 #define FPU_ARCH_VFP_V4 ARM_FEATURE(0, FPU_VFP_V4)
174 #define FPU_ARCH_VFP_V4D16 ARM_FEATURE(0, FPU_VFP_V4D16) 187 #define FPU_ARCH_VFP_V4D16 ARM_FEATURE(0, FPU_VFP_V4D16)
175 #define FPU_ARCH_VFP_V4_SP_D16 ARM_FEATURE(0, FPU_VFP_V4_SP_D16) 188 #define FPU_ARCH_VFP_V4_SP_D16 ARM_FEATURE(0, FPU_VFP_V4_SP_D16)
176 #define FPU_ARCH_NEON_VFP_V4 \ 189 #define FPU_ARCH_NEON_VFP_V4 \
177 ARM_FEATURE(0, FPU_VFP_V4 | FPU_NEON_EXT_V1 | FPU_NEON_EXT_FMA) 190 ARM_FEATURE(0, FPU_VFP_V4 | FPU_NEON_EXT_V1 | FPU_NEON_EXT_FMA)
191 #define FPU_ARCH_VFP_ARMV8 ARM_FEATURE(0, FPU_VFP_ARMV8)
192 #define FPU_ARCH_NEON_VFP_ARMV8 ARM_FEATURE(0, FPU_NEON_ARMV8 | FPU_VFP_ARMV8)
193 #define FPU_ARCH_CRYPTO_NEON_VFP_ARMV8 \
194 ARM_FEATURE(0, FPU_CRYPTO_ARMV8 | FPU_NEON_ARMV8 | FPU_VFP_ARMV8)
195 #define ARCH_CRC_ARMV8 ARM_FEATURE(0, CRC_EXT_ARMV8)
178 196
179 #define FPU_ARCH_ENDIAN_PURE ARM_FEATURE (0, FPU_ENDIAN_PURE) 197 #define FPU_ARCH_ENDIAN_PURE ARM_FEATURE (0, FPU_ENDIAN_PURE)
180 198
181 #define FPU_ARCH_MAVERICK ARM_FEATURE (0, FPU_MAVERICK) 199 #define FPU_ARCH_MAVERICK ARM_FEATURE (0, FPU_MAVERICK)
182 200
183 #define ARM_ARCH_V1 ARM_FEATURE (ARM_AEXT_V1, 0) 201 #define ARM_ARCH_V1 ARM_FEATURE (ARM_AEXT_V1, 0)
184 #define ARM_ARCH_V2 ARM_FEATURE (ARM_AEXT_V2, 0) 202 #define ARM_ARCH_V2 ARM_FEATURE (ARM_AEXT_V2, 0)
185 #define ARM_ARCH_V2S ARM_FEATURE (ARM_AEXT_V2S, 0) 203 #define ARM_ARCH_V2S ARM_FEATURE (ARM_AEXT_V2S, 0)
186 #define ARM_ARCH_V3 ARM_FEATURE (ARM_AEXT_V3, 0) 204 #define ARM_ARCH_V3 ARM_FEATURE (ARM_AEXT_V3, 0)
187 #define ARM_ARCH_V3M ARM_FEATURE (ARM_AEXT_V3M, 0) 205 #define ARM_ARCH_V3M ARM_FEATURE (ARM_AEXT_V3M, 0)
(...skipping 13 matching lines...) Expand all
201 #define ARM_ARCH_V6Z ARM_FEATURE (ARM_AEXT_V6Z, 0) 219 #define ARM_ARCH_V6Z ARM_FEATURE (ARM_AEXT_V6Z, 0)
202 #define ARM_ARCH_V6ZK ARM_FEATURE (ARM_AEXT_V6ZK, 0) 220 #define ARM_ARCH_V6ZK ARM_FEATURE (ARM_AEXT_V6ZK, 0)
203 #define ARM_ARCH_V6T2 ARM_FEATURE (ARM_AEXT_V6T2, 0) 221 #define ARM_ARCH_V6T2 ARM_FEATURE (ARM_AEXT_V6T2, 0)
204 #define ARM_ARCH_V6KT2 ARM_FEATURE (ARM_AEXT_V6KT2, 0) 222 #define ARM_ARCH_V6KT2 ARM_FEATURE (ARM_AEXT_V6KT2, 0)
205 #define ARM_ARCH_V6ZT2 ARM_FEATURE (ARM_AEXT_V6ZT2, 0) 223 #define ARM_ARCH_V6ZT2 ARM_FEATURE (ARM_AEXT_V6ZT2, 0)
206 #define ARM_ARCH_V6ZKT2 ARM_FEATURE (ARM_AEXT_V6ZKT2, 0) 224 #define ARM_ARCH_V6ZKT2 ARM_FEATURE (ARM_AEXT_V6ZKT2, 0)
207 #define ARM_ARCH_V6M ARM_FEATURE (ARM_AEXT_V6M, 0) 225 #define ARM_ARCH_V6M ARM_FEATURE (ARM_AEXT_V6M, 0)
208 #define ARM_ARCH_V6SM ARM_FEATURE (ARM_AEXT_V6SM, 0) 226 #define ARM_ARCH_V6SM ARM_FEATURE (ARM_AEXT_V6SM, 0)
209 #define ARM_ARCH_V7 ARM_FEATURE (ARM_AEXT_V7, 0) 227 #define ARM_ARCH_V7 ARM_FEATURE (ARM_AEXT_V7, 0)
210 #define ARM_ARCH_V7A ARM_FEATURE (ARM_AEXT_V7A, 0) 228 #define ARM_ARCH_V7A ARM_FEATURE (ARM_AEXT_V7A, 0)
229 #define ARM_ARCH_V7VE ARM_FEATURE (ARM_AEXT_V7VE, 0)
211 #define ARM_ARCH_V7R ARM_FEATURE (ARM_AEXT_V7R, 0) 230 #define ARM_ARCH_V7R ARM_FEATURE (ARM_AEXT_V7R, 0)
212 #define ARM_ARCH_V7M ARM_FEATURE (ARM_AEXT_V7M, 0) 231 #define ARM_ARCH_V7M ARM_FEATURE (ARM_AEXT_V7M, 0)
213 #define ARM_ARCH_V7EM ARM_FEATURE (ARM_AEXT_V7EM, 0) 232 #define ARM_ARCH_V7EM ARM_FEATURE (ARM_AEXT_V7EM, 0)
233 #define ARM_ARCH_V8A ARM_FEATURE (ARM_AEXT_V8A, 0)
214 234
215 /* Some useful combinations: */ 235 /* Some useful combinations: */
216 #define ARM_ARCH_NONE ARM_FEATURE (0, 0) 236 #define ARM_ARCH_NONE ARM_FEATURE (0, 0)
217 #define FPU_NONE ARM_FEATURE (0, 0) 237 #define FPU_NONE ARM_FEATURE (0, 0)
218 #define ARM_ANY ARM_FEATURE (-1, 0) /* Any basic core. */ 238 #define ARM_ANY ARM_FEATURE (-1, 0) /* Any basic core. */
219 #define FPU_ANY_HARD ARM_FEATURE (0, FPU_FPA | FPU_VFP_HARD | FPU_MAVERICK) 239 #define FPU_ANY_HARD ARM_FEATURE (0, FPU_FPA | FPU_VFP_HARD | FPU_MAVERICK)
220 #define ARM_ARCH_THUMB2 ARM_FEATURE (ARM_EXT_V6T2 | ARM_EXT_V7 | ARM_EXT_V7A | A RM_EXT_V7R | ARM_EXT_V7M | ARM_EXT_DIV, 0) 240 #define ARM_ARCH_THUMB2 ARM_FEATURE (ARM_EXT_V6T2 | ARM_EXT_V7 | ARM_EXT_V7A | A RM_EXT_V7R | ARM_EXT_V7M | ARM_EXT_DIV, 0)
221 /* v7-a+sec. */ 241 /* v7-a+sec. */
222 #define ARM_ARCH_V7A_SEC ARM_FEATURE (ARM_AEXT_V7A | ARM_EXT_SEC, 0) 242 #define ARM_ARCH_V7A_SEC ARM_FEATURE (ARM_AEXT_V7A | ARM_EXT_SEC, 0)
223 /* v7-a+mp+sec. */ 243 /* v7-a+mp+sec. */
224 #define ARM_ARCH_V7A_MP_SEC \ 244 #define ARM_ARCH_V7A_MP_SEC \
225 ARM_FEATURE (ARM_AEXT_V7A | ARM_EXT_MP | ARM_EXT_SEC, \ 245 ARM_FEATURE (ARM_AEXT_V7A | ARM_EXT_MP | ARM_EXT_SEC, \
226 0) 246 0)
227 /* v7-a+idiv+mp+sec+virt. */
228 #define ARM_ARCH_V7A_IDIV_MP_SEC_VIRT \
229 ARM_FEATURE (ARM_AEXT_V7A | ARM_EXT_MP | ARM_EXT_SEC \
230 | ARM_EXT_DIV | ARM_EXT_ADIV \
231 | ARM_EXT_VIRT, 0)
232 /* v7-r+idiv. */ 247 /* v7-r+idiv. */
233 #define ARM_ARCH_V7R_IDIV ARM_FEATURE (ARM_AEXT_V7R | ARM_EXT_ADIV, 0) 248 #define ARM_ARCH_V7R_IDIV ARM_FEATURE (ARM_AEXT_V7R | ARM_EXT_ADIV, 0)
234 /* Features that are present in v6M and v6S-M but not other v6 cores. */ 249 /* Features that are present in v6M and v6S-M but not other v6 cores. */
235 #define ARM_ARCH_V6M_ONLY ARM_FEATURE (ARM_AEXT_V6M_ONLY, 0) 250 #define ARM_ARCH_V6M_ONLY ARM_FEATURE (ARM_AEXT_V6M_ONLY, 0)
251 /* v8-a+fp. */
252 #define ARM_ARCH_V8A_FP ARM_FEATURE (ARM_AEXT_V8A, FPU_ARCH_VFP_ARMV8)
253 /* v8-a+simd (implies fp). */
254 #define ARM_ARCH_V8A_SIMD ARM_FEATURE (ARM_AEXT_V8A, \
255 FPU_ARCH_NEON_VFP_ARMV8)
256 /* v8-a+crypto (implies simd+fp). */
257 #define ARM_ARCH_V8A_CRYPTOV1 ARM_FEATURE (ARM_AEXT_V8A, \
258 FPU_ARCH_CRYPTO_NEON_VFP_ARMV8)
236 259
237 /* There are too many feature bits to fit in a single word, so use a 260 /* There are too many feature bits to fit in a single word, so use a
238 structure. For simplicity we put all core features in one word and 261 structure. For simplicity we put all core features in one word and
239 everything else in the other. */ 262 everything else in the other. */
240 typedef struct 263 typedef struct
241 { 264 {
242 unsigned long core; 265 unsigned long core;
243 unsigned long coproc; 266 unsigned long coproc;
244 } arm_feature_set; 267 } arm_feature_set;
245 268
246 #define ARM_CPU_HAS_FEATURE(CPU,FEAT) \ 269 #define ARM_CPU_HAS_FEATURE(CPU,FEAT) \
247 (((CPU).core & (FEAT).core) != 0 || ((CPU).coproc & (FEAT).coproc) != 0) 270 (((CPU).core & (FEAT).core) != 0 || ((CPU).coproc & (FEAT).coproc) != 0)
248 271
272 #define ARM_CPU_IS_ANY(CPU) \
273 ((CPU).core == ((arm_feature_set)ARM_ANY).core)
274
249 #define ARM_MERGE_FEATURE_SETS(TARG,F1,F2) \ 275 #define ARM_MERGE_FEATURE_SETS(TARG,F1,F2) \
250 do { \ 276 do { \
251 (TARG).core = (F1).core | (F2).core; \ 277 (TARG).core = (F1).core | (F2).core; \
252 (TARG).coproc = (F1).coproc | (F2).coproc; \ 278 (TARG).coproc = (F1).coproc | (F2).coproc; \
253 } while (0) 279 } while (0)
254 280
255 #define ARM_CLEAR_FEATURE(TARG,F1,F2) \ 281 #define ARM_CLEAR_FEATURE(TARG,F1,F2) \
256 do { \ 282 do { \
257 (TARG).core = (F1).core &~ (F2).core; \ 283 (TARG).core = (F1).core &~ (F2).core; \
258 (TARG).coproc = (F1).coproc &~ (F2).coproc; \ 284 (TARG).coproc = (F1).coproc &~ (F2).coproc; \
259 } while (0) 285 } while (0)
260 286
261 #define ARM_FEATURE(core, coproc) {(core), (coproc)} 287 #define ARM_FEATURE(core, coproc) {(core), (coproc)}
OLDNEW
« no previous file with comments | « include/opcode/aarch64.h ('k') | include/opcode/avr.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698