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 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 } | 120 } |
121 | 121 |
122 // ARM Cortex-A9 and Cortex-A5 have 32 byte cachelines. | 122 // ARM Cortex-A9 and Cortex-A5 have 32 byte cachelines. |
123 if (cpu.implementer() == base::CPU::ARM && | 123 if (cpu.implementer() == base::CPU::ARM && |
124 (cpu.part() == base::CPU::ARM_CORTEX_A5 || | 124 (cpu.part() == base::CPU::ARM_CORTEX_A5 || |
125 cpu.part() == base::CPU::ARM_CORTEX_A9)) { | 125 cpu.part() == base::CPU::ARM_CORTEX_A9)) { |
126 cache_line_size_ = 32; | 126 cache_line_size_ = 32; |
127 } | 127 } |
128 | 128 |
129 if (FLAG_enable_32dregs && cpu.has_vfp3_d32()) supported_ |= 1u << VFP32DREGS; | 129 if (FLAG_enable_32dregs && cpu.has_vfp3_d32()) supported_ |= 1u << VFP32DREGS; |
| 130 |
| 131 if (cpu.implementer() == base::CPU::NVIDIA && |
| 132 cpu.variant() == base::CPU::NVIDIA_DENVER) { |
| 133 supported_ |= 1u << COHERENT_CACHE; |
| 134 } |
130 #endif | 135 #endif |
131 | 136 |
132 DCHECK(!IsSupported(VFP3) || IsSupported(ARMv7)); | 137 DCHECK(!IsSupported(VFP3) || IsSupported(ARMv7)); |
133 } | 138 } |
134 | 139 |
135 | 140 |
136 void CpuFeatures::PrintTarget() { | 141 void CpuFeatures::PrintTarget() { |
137 const char* arm_arch = NULL; | 142 const char* arm_arch = NULL; |
138 const char* arm_target_type = ""; | 143 const char* arm_target_type = ""; |
139 const char* arm_no_probe = ""; | 144 const char* arm_no_probe = ""; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 | 186 |
182 printf("target%s%s %s%s%s %s\n", | 187 printf("target%s%s %s%s%s %s\n", |
183 arm_target_type, arm_no_probe, arm_arch, arm_fpu, arm_thumb, | 188 arm_target_type, arm_no_probe, arm_arch, arm_fpu, arm_thumb, |
184 arm_float_abi); | 189 arm_float_abi); |
185 } | 190 } |
186 | 191 |
187 | 192 |
188 void CpuFeatures::PrintFeatures() { | 193 void CpuFeatures::PrintFeatures() { |
189 printf( | 194 printf( |
190 "ARMv7=%d VFP3=%d VFP32DREGS=%d NEON=%d SUDIV=%d UNALIGNED_ACCESSES=%d " | 195 "ARMv7=%d VFP3=%d VFP32DREGS=%d NEON=%d SUDIV=%d UNALIGNED_ACCESSES=%d " |
191 "MOVW_MOVT_IMMEDIATE_LOADS=%d", | 196 "MOVW_MOVT_IMMEDIATE_LOADS=%d COHERENT_CACHE=%d", |
192 CpuFeatures::IsSupported(ARMv7), | 197 CpuFeatures::IsSupported(ARMv7), |
193 CpuFeatures::IsSupported(VFP3), | 198 CpuFeatures::IsSupported(VFP3), |
194 CpuFeatures::IsSupported(VFP32DREGS), | 199 CpuFeatures::IsSupported(VFP32DREGS), |
195 CpuFeatures::IsSupported(NEON), | 200 CpuFeatures::IsSupported(NEON), |
196 CpuFeatures::IsSupported(SUDIV), | 201 CpuFeatures::IsSupported(SUDIV), |
197 CpuFeatures::IsSupported(UNALIGNED_ACCESSES), | 202 CpuFeatures::IsSupported(UNALIGNED_ACCESSES), |
198 CpuFeatures::IsSupported(MOVW_MOVT_IMMEDIATE_LOADS)); | 203 CpuFeatures::IsSupported(MOVW_MOVT_IMMEDIATE_LOADS), |
| 204 CpuFeatures::IsSupported(COHERENT_CACHE)); |
199 #ifdef __arm__ | 205 #ifdef __arm__ |
200 bool eabi_hardfloat = base::OS::ArmUsingHardFloat(); | 206 bool eabi_hardfloat = base::OS::ArmUsingHardFloat(); |
201 #elif USE_EABI_HARDFLOAT | 207 #elif USE_EABI_HARDFLOAT |
202 bool eabi_hardfloat = true; | 208 bool eabi_hardfloat = true; |
203 #else | 209 #else |
204 bool eabi_hardfloat = false; | 210 bool eabi_hardfloat = false; |
205 #endif | 211 #endif |
206 printf(" USE_EABI_HARDFLOAT=%d\n", eabi_hardfloat); | 212 printf(" USE_EABI_HARDFLOAT=%d\n", eabi_hardfloat); |
207 } | 213 } |
208 | 214 |
(...skipping 3762 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3971 assm->instr_at_put( | 3977 assm->instr_at_put( |
3972 rinfo.pc(), Assembler::SetLdrRegisterImmediateOffset(instr, offset)); | 3978 rinfo.pc(), Assembler::SetLdrRegisterImmediateOffset(instr, offset)); |
3973 } | 3979 } |
3974 } | 3980 } |
3975 } | 3981 } |
3976 | 3982 |
3977 | 3983 |
3978 } } // namespace v8::internal | 3984 } } // namespace v8::internal |
3979 | 3985 |
3980 #endif // V8_TARGET_ARCH_ARM | 3986 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |