OLD | NEW |
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
2 // All Rights Reserved. | 2 // All Rights Reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions |
6 // are met: | 6 // are met: |
7 // | 7 // |
8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
10 // | 10 // |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 } | 134 } |
135 | 135 |
136 // ARM Cortex-A9 and Cortex-A5 have 32 byte cachelines. | 136 // ARM Cortex-A9 and Cortex-A5 have 32 byte cachelines. |
137 if (cpu.implementer() == base::CPU::ARM && | 137 if (cpu.implementer() == base::CPU::ARM && |
138 (cpu.part() == base::CPU::ARM_CORTEX_A5 || | 138 (cpu.part() == base::CPU::ARM_CORTEX_A5 || |
139 cpu.part() == base::CPU::ARM_CORTEX_A9)) { | 139 cpu.part() == base::CPU::ARM_CORTEX_A9)) { |
140 dcache_line_size_ = 32; | 140 dcache_line_size_ = 32; |
141 } | 141 } |
142 | 142 |
143 if (FLAG_enable_32dregs && cpu.has_vfp3_d32()) supported_ |= 1u << VFP32DREGS; | 143 if (FLAG_enable_32dregs && cpu.has_vfp3_d32()) supported_ |= 1u << VFP32DREGS; |
144 | |
145 if (cpu.implementer() == base::CPU::NVIDIA && | |
146 cpu.variant() == base::CPU::NVIDIA_DENVER && | |
147 cpu.part() <= base::CPU::NVIDIA_DENVER_V10) { | |
148 // TODO(jkummerow): This is turned off as an experiment to see if it | |
149 // affects crash rates. Keep an eye on crash reports and either remove | |
150 // coherent cache support permanently, or re-enable it! | |
151 // supported_ |= 1u << COHERENT_CACHE; | |
152 } | |
153 #endif | 144 #endif |
154 | 145 |
155 DCHECK(!IsSupported(VFP3) || IsSupported(ARMv7)); | 146 DCHECK(!IsSupported(VFP3) || IsSupported(ARMv7)); |
156 } | 147 } |
157 | 148 |
158 | 149 |
159 void CpuFeatures::PrintTarget() { | 150 void CpuFeatures::PrintTarget() { |
160 const char* arm_arch = NULL; | 151 const char* arm_arch = NULL; |
161 const char* arm_target_type = ""; | 152 const char* arm_target_type = ""; |
162 const char* arm_no_probe = ""; | 153 const char* arm_no_probe = ""; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 #endif | 196 #endif |
206 | 197 |
207 printf("target%s%s %s%s%s %s\n", | 198 printf("target%s%s %s%s%s %s\n", |
208 arm_target_type, arm_no_probe, arm_arch, arm_fpu, arm_thumb, | 199 arm_target_type, arm_no_probe, arm_arch, arm_fpu, arm_thumb, |
209 arm_float_abi); | 200 arm_float_abi); |
210 } | 201 } |
211 | 202 |
212 | 203 |
213 void CpuFeatures::PrintFeatures() { | 204 void CpuFeatures::PrintFeatures() { |
214 printf( | 205 printf( |
215 "ARMv8=%d ARMv7=%d VFP3=%d VFP32DREGS=%d NEON=%d SUDIV=%d MLS=%d" | 206 "ARMv8=%d ARMv7=%d VFP3=%d VFP32DREGS=%d NEON=%d SUDIV=%d MLS=%d" |
216 "UNALIGNED_ACCESSES=%d MOVW_MOVT_IMMEDIATE_LOADS=%d COHERENT_CACHE=%d", | 207 "UNALIGNED_ACCESSES=%d MOVW_MOVT_IMMEDIATE_LOADS=%d", |
217 CpuFeatures::IsSupported(ARMv8), | 208 CpuFeatures::IsSupported(ARMv8), CpuFeatures::IsSupported(ARMv7), |
218 CpuFeatures::IsSupported(ARMv7), | 209 CpuFeatures::IsSupported(VFP3), CpuFeatures::IsSupported(VFP32DREGS), |
219 CpuFeatures::IsSupported(VFP3), | 210 CpuFeatures::IsSupported(NEON), CpuFeatures::IsSupported(SUDIV), |
220 CpuFeatures::IsSupported(VFP32DREGS), | 211 CpuFeatures::IsSupported(MLS), |
221 CpuFeatures::IsSupported(NEON), | 212 CpuFeatures::IsSupported(UNALIGNED_ACCESSES), |
222 CpuFeatures::IsSupported(SUDIV), | 213 CpuFeatures::IsSupported(MOVW_MOVT_IMMEDIATE_LOADS)); |
223 CpuFeatures::IsSupported(MLS), | |
224 CpuFeatures::IsSupported(UNALIGNED_ACCESSES), | |
225 CpuFeatures::IsSupported(MOVW_MOVT_IMMEDIATE_LOADS), | |
226 CpuFeatures::IsSupported(COHERENT_CACHE)); | |
227 #ifdef __arm__ | 214 #ifdef __arm__ |
228 bool eabi_hardfloat = base::OS::ArmUsingHardFloat(); | 215 bool eabi_hardfloat = base::OS::ArmUsingHardFloat(); |
229 #elif USE_EABI_HARDFLOAT | 216 #elif USE_EABI_HARDFLOAT |
230 bool eabi_hardfloat = true; | 217 bool eabi_hardfloat = true; |
231 #else | 218 #else |
232 bool eabi_hardfloat = false; | 219 bool eabi_hardfloat = false; |
233 #endif | 220 #endif |
234 printf(" USE_EABI_HARDFLOAT=%d\n", eabi_hardfloat); | 221 printf(" USE_EABI_HARDFLOAT=%d\n", eabi_hardfloat); |
235 } | 222 } |
236 | 223 |
(...skipping 4023 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4260 DCHECK(is_uint12(offset)); | 4247 DCHECK(is_uint12(offset)); |
4261 instr_at_put(pc, SetLdrRegisterImmediateOffset(instr, offset)); | 4248 instr_at_put(pc, SetLdrRegisterImmediateOffset(instr, offset)); |
4262 } | 4249 } |
4263 } | 4250 } |
4264 | 4251 |
4265 | 4252 |
4266 } // namespace internal | 4253 } // namespace internal |
4267 } // namespace v8 | 4254 } // namespace v8 |
4268 | 4255 |
4269 #endif // V8_TARGET_ARCH_ARM | 4256 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |