src/cpu/sparc/vm/vm_version_sparc.cpp

changeset 8730
4b7ea2e3f901
parent 8729
402618d5afc9
child 8731
3cb2feaca8cf
equal deleted inserted replaced
8729:402618d5afc9 8730:4b7ea2e3f901
257 (!has_hardware_fsmuld() ? ", no-fsmuld" : "")); 257 (!has_hardware_fsmuld() ? ", no-fsmuld" : ""));
258 258
259 // buf is started with ", " or is empty 259 // buf is started with ", " or is empty
260 _features_str = strdup(strlen(buf) > 2 ? buf + 2 : buf); 260 _features_str = strdup(strlen(buf) > 2 ? buf + 2 : buf);
261 261
262 // There are three 64-bit SPARC families that do not overlap, e.g.,
263 // both is_ultra3() and is_sparc64() cannot be true at the same time.
264 // Within these families, there can be more than one chip, e.g.,
265 // is_T4() and is_T7() machines are also is_niagara().
266 if (is_ultra3()) {
267 assert(_L1_data_cache_line_size == 0, "overlap with Ultra3 family");
268 // Ref: UltraSPARC III Cu Processor
269 _L1_data_cache_line_size = 64;
270 }
271 if (is_niagara()) {
272 assert(_L1_data_cache_line_size == 0, "overlap with niagara family");
273 // All Niagara's are sun4v's, but not all sun4v's are Niagaras, e.g.,
274 // Fujitsu SPARC64 is sun4v, but we don't want it in this block.
275 //
276 // Ref: UltraSPARC T1 Supplement to the UltraSPARC Architecture 2005
277 // Appendix F.1.3.1 Cacheable Accesses
278 // -> 16-byte L1 cache line size
279 //
280 // Ref: UltraSPARC T2: A Highly-Threaded, Power-Efficient, SPARC SOC
281 // Section III: SPARC Processor Core
282 // -> 16-byte L1 cache line size
283 //
284 // Ref: Oracle's SPARC T4-1, SPARC T4-2, SPARC T4-4, and SPARC T4-1B Server Architecture
285 // Section SPARC T4 Processor Cache Architecture
286 // -> 32-byte L1 cache line size (no longer see that info on this ref)
287 //
288 // XXX - still need a T7 reference here
289 //
290 if (is_T7()) { // T7 or newer
291 _L1_data_cache_line_size = 64;
292 } else if (is_T4()) { // T4 or newer (until T7)
293 _L1_data_cache_line_size = 32;
294 } else { // T1 or newer (until T4)
295 _L1_data_cache_line_size = 16;
296 }
297 }
298 if (is_sparc64()) {
299 guarantee(_L1_data_cache_line_size == 0, "overlap with SPARC64 family");
300 // Ref: Fujitsu SPARC64 VII Processor
301 // Section 4 Cache System
302 _L1_data_cache_line_size = 64;
303 }
304
305 // UseVIS is set to the smallest of what hardware supports and what 262 // UseVIS is set to the smallest of what hardware supports and what
306 // the command line requires. I.e., you cannot set UseVIS to 3 on 263 // the command line requires. I.e., you cannot set UseVIS to 3 on
307 // older UltraSparc which do not support it. 264 // older UltraSparc which do not support it.
308 if (UseVIS > 3) UseVIS=3; 265 if (UseVIS > 3) UseVIS=3;
309 if (UseVIS < 0) UseVIS=0; 266 if (UseVIS < 0) UseVIS=0;

mercurial