hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp
changeset 25633 4cd9c4622c8c
parent 25468 5331df506290
child 25949 34557722059b
equal deleted inserted replaced
25632:d200adafaee5 25633:4cd9c4622c8c
   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: ");