| 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 |