OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_ARM_CONSTANTS_ARM_H_ | 5 #ifndef V8_ARM_CONSTANTS_ARM_H_ |
6 #define V8_ARM_CONSTANTS_ARM_H_ | 6 #define V8_ARM_CONSTANTS_ARM_H_ |
7 | 7 |
8 // ARM EABI is required. | 8 // ARM EABI is required. |
9 #if defined(__arm__) && !defined(__ARM_EABI__) | 9 #if defined(__arm__) && !defined(__ARM_EABI__) |
10 #error ARM EABI support is required. | 10 #error ARM EABI support is required. |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 BLX = 3 << 4, | 154 BLX = 3 << 4, |
155 BKPT = 7 << 4, | 155 BKPT = 7 << 4, |
156 | 156 |
157 // With bits 22-21 11. | 157 // With bits 22-21 11. |
158 CLZ = 1 << 4 | 158 CLZ = 1 << 4 |
159 }; | 159 }; |
160 | 160 |
161 | 161 |
162 // Instruction encoding bits and masks. | 162 // Instruction encoding bits and masks. |
163 enum { | 163 enum { |
164 H = 1 << 5, // Halfword (or byte). | 164 H = 1 << 5, // Halfword (or byte). |
165 S6 = 1 << 6, // Signed (or unsigned). | 165 S6 = 1 << 6, // Signed (or unsigned). |
166 L = 1 << 20, // Load (or store). | 166 L = 1 << 20, // Load (or store). |
167 S = 1 << 20, // Set condition code (or leave unchanged). | 167 S = 1 << 20, // Set condition code (or leave unchanged). |
168 W = 1 << 21, // Writeback base register (or leave unchanged). | 168 W = 1 << 21, // Writeback base register (or leave unchanged). |
169 A = 1 << 21, // Accumulate in multiply instruction (or not). | 169 A = 1 << 21, // Accumulate in multiply instruction (or not). |
170 B = 1 << 22, // Unsigned byte (or word). | 170 B = 1 << 22, // Unsigned byte (or word). |
171 N = 1 << 22, // Long (or short). | 171 N = 1 << 22, // Long (or short). |
172 U = 1 << 23, // Positive (or negative) offset/index. | 172 U = 1 << 23, // Positive (or negative) offset/index. |
173 P = 1 << 24, // Offset/pre-indexed addressing (or post-indexed addressing). | 173 P = 1 << 24, // Offset/pre-indexed addressing (or post-indexed addressing). |
174 I = 1 << 25, // Immediate shifter operand (or not). | 174 I = 1 << 25, // Immediate shifter operand (or not). |
175 | 175 B4 = 1 << 4, |
176 B4 = 1 << 4, | 176 B5 = 1 << 5, |
177 B5 = 1 << 5, | 177 B6 = 1 << 6, |
178 B6 = 1 << 6, | 178 B7 = 1 << 7, |
179 B7 = 1 << 7, | 179 B8 = 1 << 8, |
180 B8 = 1 << 8, | 180 B9 = 1 << 9, |
181 B9 = 1 << 9, | |
182 B12 = 1 << 12, | 181 B12 = 1 << 12, |
183 B16 = 1 << 16, | 182 B16 = 1 << 16, |
| 183 B17 = 1 << 17, |
184 B18 = 1 << 18, | 184 B18 = 1 << 18, |
185 B19 = 1 << 19, | 185 B19 = 1 << 19, |
186 B20 = 1 << 20, | 186 B20 = 1 << 20, |
187 B21 = 1 << 21, | 187 B21 = 1 << 21, |
188 B22 = 1 << 22, | 188 B22 = 1 << 22, |
189 B23 = 1 << 23, | 189 B23 = 1 << 23, |
190 B24 = 1 << 24, | 190 B24 = 1 << 24, |
191 B25 = 1 << 25, | 191 B25 = 1 << 25, |
192 B26 = 1 << 26, | 192 B26 = 1 << 26, |
193 B27 = 1 << 27, | 193 B27 = 1 << 27, |
194 B28 = 1 << 28, | 194 B28 = 1 << 28, |
195 | 195 |
196 // Instruction bit masks. | 196 // Instruction bit masks. |
197 kCondMask = 15 << 28, | 197 kCondMask = 15 << 28, |
198 kALUMask = 0x6f << 21, | 198 kALUMask = 0x6f << 21, |
199 kRdMask = 15 << 12, // In str instruction. | 199 kRdMask = 15 << 12, // In str instruction. |
200 kCoprocessorMask = 15 << 8, | 200 kCoprocessorMask = 15 << 8, |
201 kOpCodeMask = 15 << 21, // In data-processing instructions. | 201 kOpCodeMask = 15 << 21, // In data-processing instructions. |
202 kImm24Mask = (1 << 24) - 1, | 202 kImm24Mask = (1 << 24) - 1, |
203 kImm16Mask = (1 << 16) - 1, | 203 kImm16Mask = (1 << 16) - 1, |
204 kImm8Mask = (1 << 8) - 1, | 204 kImm8Mask = (1 << 8) - 1, |
205 kOff12Mask = (1 << 12) - 1, | 205 kOff12Mask = (1 << 12) - 1, |
206 kOff8Mask = (1 << 8) - 1 | 206 kOff8Mask = (1 << 8) - 1 |
207 }; | 207 }; |
208 | 208 |
209 | 209 |
210 // ----------------------------------------------------------------------------- | 210 // ----------------------------------------------------------------------------- |
211 // Addressing modes and instruction variants. | 211 // Addressing modes and instruction variants. |
212 | 212 |
213 // Condition code updating mode. | 213 // Condition code updating mode. |
214 enum SBit { | 214 enum SBit { |
215 SetCC = 1 << 20, // Set condition code. | 215 SetCC = 1 << 20, // Set condition code. |
216 LeaveCC = 0 << 20 // Leave condition code unchanged. | 216 LeaveCC = 0 << 20 // Leave condition code unchanged. |
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
686 static int Number(const char* name, bool* is_double); | 686 static int Number(const char* name, bool* is_double); |
687 | 687 |
688 private: | 688 private: |
689 static const char* names_[kNumVFPRegisters]; | 689 static const char* names_[kNumVFPRegisters]; |
690 }; | 690 }; |
691 | 691 |
692 | 692 |
693 } } // namespace v8::internal | 693 } } // namespace v8::internal |
694 | 694 |
695 #endif // V8_ARM_CONSTANTS_ARM_H_ | 695 #endif // V8_ARM_CONSTANTS_ARM_H_ |
OLD | NEW |