@@ -257,6 +257,14 @@ static intptr_t getAIXPPCDescription(struct J9PortLibrary *portLibrary, J9Proces
257
257
#define __power_10 () (_system_configuration.implementation == POWER_10)
258
258
#endif /* !defined(__power_10) */
259
259
260
+ /*
261
+ * Please update the macro below to stay in sync with the latest POWER processor known to OpenJ9,
262
+ * ensuring CPU recognition is more robust than in the past. As the macro currently stands, any
263
+ * later processors are recognized as at least POWER11.
264
+ */
265
+ #define POWER11_OR_ABOVE (0xFFFFFF00 << 11)
266
+ #define __power_latestKnownAndUp () J9_ARE_ANY_BITS_SET(_system_configuration.implementation, POWER11_OR_ABOVE)
267
+
260
268
#if defined(J9OS_I5_V6R1 ) /* vmx_version id only available since TL4 */
261
269
#define __power_vsx () (_system_configuration.vmx_version > 1)
262
270
#endif
@@ -578,7 +586,9 @@ mapPPCProcessor(const char *processorName)
578
586
} else if (0 == strncasecmp (processorName , "power9" , 6 )) {
579
587
rc = PROCESSOR_PPC_P9 ;
580
588
} else if (0 == strncasecmp (processorName , "power10" , 7 )) {
581
- rc = PROCESSOR_PPC_P10 ;
589
+ rc = PROCESSOR_PPC_P10 ;
590
+ } else if (0 == strncasecmp (processorName , "power11" , 7 )) {
591
+ rc = PROCESSOR_PPC_P11 ;
582
592
}
583
593
584
594
return rc ;
@@ -631,7 +641,9 @@ getAIXPPCDescription(struct J9PortLibrary *portLibrary, J9ProcessorDesc *desc)
631
641
} else if (__power_9 ()) {
632
642
desc -> processor = PROCESSOR_PPC_P9 ;
633
643
} else if (__power_10 ()) {
634
- desc -> processor = PROCESSOR_PPC_P10 ;
644
+ desc -> processor = PROCESSOR_PPC_P10 ;
645
+ } else if (__power_latestKnownAndUp ()) {
646
+ desc -> processor = PROCESSOR_PPC_P11 ;
635
647
} else {
636
648
desc -> processor = PROCESSOR_PPC_UNKNOWN ;
637
649
}
0 commit comments