249 (!has_hardware_fsmuld() ? ", no-fsmuld" : "")); |
249 (!has_hardware_fsmuld() ? ", no-fsmuld" : "")); |
250 |
250 |
251 // buf is started with ", " or is empty |
251 // buf is started with ", " or is empty |
252 _features_str = strdup(strlen(buf) > 2 ? buf + 2 : buf); |
252 _features_str = strdup(strlen(buf) > 2 ? buf + 2 : buf); |
253 |
253 |
|
254 // There are three 64-bit SPARC families that do not overlap, e.g., |
|
255 // both is_ultra3() and is_sparc64() cannot be true at the same time. |
|
256 // Within these families, there can be more than one chip, e.g., |
|
257 // is_T4() and is_T7() machines are also is_niagara(). |
|
258 if (is_ultra3()) { |
|
259 assert(_L1_data_cache_line_size == 0, "overlap with Ultra3 family"); |
|
260 // Ref: UltraSPARC III Cu Processor |
|
261 _L1_data_cache_line_size = 64; |
|
262 } |
|
263 if (is_niagara()) { |
|
264 assert(_L1_data_cache_line_size == 0, "overlap with niagara family"); |
|
265 // All Niagara's are sun4v's, but not all sun4v's are Niagaras, e.g., |
|
266 // Fujitsu SPARC64 is sun4v, but we don't want it in this block. |
|
267 // |
|
268 // Ref: UltraSPARC T1 Supplement to the UltraSPARC Architecture 2005 |
|
269 // Appendix F.1.3.1 Cacheable Accesses |
|
270 // -> 16-byte L1 cache line size |
|
271 // |
|
272 // Ref: UltraSPARC T2: A Highly-Threaded, Power-Efficient, SPARC SOC |
|
273 // Section III: SPARC Processor Core |
|
274 // -> 16-byte L1 cache line size |
|
275 // |
|
276 // Ref: Oracle's SPARC T4-1, SPARC T4-2, SPARC T4-4, and SPARC T4-1B Server Architecture |
|
277 // Section SPARC T4 Processor Cache Architecture |
|
278 // -> 32-byte L1 cache line size (no longer see that info on this ref) |
|
279 // |
|
280 // XXX - still need a T7 reference here |
|
281 // |
|
282 if (is_T7()) { // T7 or newer |
|
283 _L1_data_cache_line_size = 64; |
|
284 } else if (is_T4()) { // T4 or newer (until T7) |
|
285 _L1_data_cache_line_size = 32; |
|
286 } else { // T1 or newer (until T4) |
|
287 _L1_data_cache_line_size = 16; |
|
288 } |
|
289 } |
|
290 if (is_sparc64()) { |
|
291 guarantee(_L1_data_cache_line_size == 0, "overlap with SPARC64 family"); |
|
292 // Ref: Fujitsu SPARC64 VII Processor |
|
293 // Section 4 Cache System |
|
294 _L1_data_cache_line_size = 64; |
|
295 } |
|
296 |
254 // UseVIS is set to the smallest of what hardware supports and what |
297 // UseVIS is set to the smallest of what hardware supports and what |
255 // the command line requires. I.e., you cannot set UseVIS to 3 on |
298 // the command line requires. I.e., you cannot set UseVIS to 3 on |
256 // older UltraSparc which do not support it. |
299 // older UltraSparc which do not support it. |
257 if (UseVIS > 3) UseVIS=3; |
300 if (UseVIS > 3) UseVIS=3; |
258 if (UseVIS < 0) UseVIS=0; |
301 if (UseVIS < 0) UseVIS=0; |
354 (cache_line_size > ContendedPaddingWidth)) |
397 (cache_line_size > ContendedPaddingWidth)) |
355 ContendedPaddingWidth = cache_line_size; |
398 ContendedPaddingWidth = cache_line_size; |
356 |
399 |
357 #ifndef PRODUCT |
400 #ifndef PRODUCT |
358 if (PrintMiscellaneous && Verbose) { |
401 if (PrintMiscellaneous && Verbose) { |
|
402 tty->print_cr("L1 data cache line size: %u", L1_data_cache_line_size()); |
359 tty->print("Allocation"); |
403 tty->print("Allocation"); |
360 if (AllocatePrefetchStyle <= 0) { |
404 if (AllocatePrefetchStyle <= 0) { |
361 tty->print_cr(": no prefetching"); |
405 tty->print_cr(": no prefetching"); |
362 } else { |
406 } else { |
363 tty->print(" prefetching: "); |
407 tty->print(" prefetching: "); |