mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-19 18:44:38 +02:00
7188227: VM should recognize M-series SPARC
Check kstat data for SPARC-M. Reviewed-by: roland
This commit is contained in:
parent
5e05a0d592
commit
ebeff89a89
2 changed files with 19 additions and 6 deletions
|
@ -44,10 +44,11 @@ protected:
|
|||
fmaf_instructions = 10,
|
||||
fmau_instructions = 11,
|
||||
vis3_instructions = 12,
|
||||
sparc64_family = 13,
|
||||
T_family = 14,
|
||||
T1_model = 15,
|
||||
cbcond_instructions = 16
|
||||
cbcond_instructions = 13,
|
||||
sparc64_family = 14,
|
||||
M_family = 15,
|
||||
T_family = 16,
|
||||
T1_model = 17
|
||||
};
|
||||
|
||||
enum Feature_Flag_Set {
|
||||
|
@ -67,10 +68,11 @@ protected:
|
|||
fmaf_instructions_m = 1 << fmaf_instructions,
|
||||
fmau_instructions_m = 1 << fmau_instructions,
|
||||
vis3_instructions_m = 1 << vis3_instructions,
|
||||
cbcond_instructions_m = 1 << cbcond_instructions,
|
||||
sparc64_family_m = 1 << sparc64_family,
|
||||
M_family_m = 1 << M_family,
|
||||
T_family_m = 1 << T_family,
|
||||
T1_model_m = 1 << T1_model,
|
||||
cbcond_instructions_m = 1 << cbcond_instructions,
|
||||
|
||||
generic_v8_m = v8_instructions_m | hardware_mul32_m | hardware_div32_m | hardware_fsmuld_m,
|
||||
generic_v9_m = generic_v8_m | v9_instructions_m,
|
||||
|
@ -89,6 +91,7 @@ protected:
|
|||
static int platform_features(int features);
|
||||
|
||||
// Returns true if the platform is in the niagara line (T series)
|
||||
static bool is_M_family(int features) { return (features & M_family_m) != 0; }
|
||||
static bool is_T_family(int features) { return (features & T_family_m) != 0; }
|
||||
static bool is_niagara() { return is_T_family(_features); }
|
||||
DEBUG_ONLY( static bool is_niagara(int features) { return (features & sun4v_m) != 0; } )
|
||||
|
|
|
@ -201,13 +201,23 @@ int VM_Version::platform_features(int features) {
|
|||
impl[i] = (char)toupper((uint)impl[i]);
|
||||
if (strstr(impl, "SPARC64") != NULL) {
|
||||
features |= sparc64_family_m;
|
||||
} else if (strstr(impl, "SPARC-M") != NULL) {
|
||||
// M-series SPARC is based on T-series.
|
||||
features |= (M_family_m | T_family_m);
|
||||
} else if (strstr(impl, "SPARC-T") != NULL) {
|
||||
features |= T_family_m;
|
||||
if (strstr(impl, "SPARC-T1") != NULL) {
|
||||
features |= T1_model_m;
|
||||
}
|
||||
} else {
|
||||
assert(strstr(impl, "SPARC") != NULL, "should be sparc");
|
||||
if (strstr(impl, "SPARC") == NULL) {
|
||||
#ifndef PRODUCT
|
||||
// kstat on Solaris 8 virtual machines (branded zones)
|
||||
// returns "(unsupported)" implementation.
|
||||
warning("kstat cpu_info implementation = '%s', should contain SPARC", impl);
|
||||
#endif
|
||||
implementation = "SPARC";
|
||||
}
|
||||
}
|
||||
free((void*)impl);
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue