diff --git a/aarch64/corefreq-cli-json.c b/aarch64/corefreq-cli-json.c index fd3b7361..2f3d2e84 100644 --- a/aarch64/corefreq-cli-json.c +++ b/aarch64/corefreq-cli-json.c @@ -526,6 +526,27 @@ void JsonSysInfo(RO(SHM_STRUCT) *RO(Shm)) json_literal(&s, "%u", (unsigned) RO(Shm)->Proc.Features.DPB2); json_end_object(&s); } + json_key(&s, "ISAR2"); + { + json_start_object(&s); + json_key(&s, "PACQARMA3"); + json_literal(&s, "%u", (unsigned) RO(Shm)->Proc.Features.PACQARMA3); + json_key(&s, "PAuth"); + json_literal(&s, "%u", (unsigned) RO(Shm)->Proc.Features.PAuth); + json_key(&s, "EPAC"); + json_literal(&s, "%u", (unsigned) RO(Shm)->Proc.Features.EPAC); + json_key(&s, "PAuth2"); + json_literal(&s, "%u", (unsigned) RO(Shm)->Proc.Features.PAuth2); + json_key(&s, "FPAC"); + json_literal(&s, "%u", (unsigned) RO(Shm)->Proc.Features.FPAC); + json_key(&s, "FPACCOMBINE"); + json_literal(&s, "%u", (unsigned) RO(Shm)->Proc.Features.FPACCOMBINE); + json_key(&s, "PAuth_LR"); + json_literal(&s, "%u", (unsigned) RO(Shm)->Proc.Features.PAuth_LR); + json_key(&s, "WFxT"); + json_literal(&s, "%u", (unsigned) RO(Shm)->Proc.Features.WFxT); + json_end_object(&s); + } json_key(&s, "MMFR0"); { json_start_object(&s); diff --git a/aarch64/corefreq-cli-rsc-en.h b/aarch64/corefreq-cli-rsc-en.h index 3ce24453..867fe7b9 100644 --- a/aarch64/corefreq-cli-rsc-en.h +++ b/aarch64/corefreq-cli-rsc-en.h @@ -779,6 +779,7 @@ #define RSC_ISA_LSE_COMM_CODE_EN " Atomic instructions " #define RSC_ISA_CRC32_COMM_CODE_EN " Cyclic Redundancy Check " #define RSC_ISA_DP_COMM_CODE_EN " Dot Product instructions " +#define RSC_ISA_EPAC_COMM_CODE_EN " Enhanced Pointer Authentication " #define RSC_ISA_FCMA_COMM_CODE_EN \ " Floating-point Complex Multiplication & Addition " @@ -786,20 +787,31 @@ " Floating-point Half-precision Multiplication " #define RSC_ISA_FP_COMM_CODE_EN " Floating Point " +#define RSC_ISA_FPAC_COMM_CODE_EN " Faulting Pointer Authentication Code " +#define RSC_ISA_FPACCOMBINE_COMM_CODE_EN \ + " Faulting on Combined Pointer Authentication " + #define RSC_ISA_JSCVT_COMM_CODE_EN " JavaScript Conversion " #define RSC_ISA_LRCPC_COMM_CODE_EN " Load-Acquire RCpc instructions " #define RSC_ISA_PACIMP_COMM_CODE_EN \ " Pointer Authentication Code, using Generic key " +#define RSC_ISA_PACQARMA3_COMM_CODE_EN \ + " Pointer Authentication Code, using the QARMA3 algorithm " + #define RSC_ISA_PACQARMA5_COMM_CODE_EN \ " Pointer Authentication Code, using the QARMA5 algorithm " +#define RSC_ISA_PAUTH_COMM_CODE_EN " Pointer Authentication " +#define RSC_ISA_PAUTH2_COMM_CODE_EN " Enhanced Pointer Authentication " +#define RSC_ISA_PAUTH_LR_COMM_CODE_EN " Pointer Authentication Link Register " #define RSC_ISA_FRINTTS_COMM_CODE_EN " Floating-point to Integer " #define RSC_ISA_SPECRES_COMM_CODE_EN " Prediction Invalidation " #define RSC_ISA_BF16_COMM_CODE_EN " BFloat16 instructions " #define RSC_ISA_EBF16_COMM_CODE_EN " Extended BFloat16 " #define RSC_ISA_I8MM_COMM_CODE_EN " Int8 Matrix Multiplication " #define RSC_ISA_SB_COMM_CODE_EN " Speculation Barrier " +#define RSC_ISA_WFxT_COMM_CODE_EN " WFE & WFI instructions with timeout " #define RSC_ISA_XS_COMM_CODE_EN " XS attribute for memory " #define RSC_ISA_LS64_COMM_CODE_EN " Atomic 64-byte loads and stores " #define RSC_ISA_DGH_COMM_CODE_EN " Data Gathering Hint " @@ -1956,15 +1968,22 @@ #define RSC_ISA_LSE128_CODE " LSE128 [%c]" #define RSC_ISA_CRC32_CODE " CRC32 [%c]" #define RSC_ISA_DP_CODE " DP [%c]" +#define RSC_ISA_EPAC_CODE " EPAC [%c]" #define RSC_ISA_FCMA_CODE " FCMA [%c]" #define RSC_ISA_FHM_CODE " FHM [%c]" #define RSC_ISA_FP_CODE " FP [%c]" +#define RSC_ISA_FPAC_CODE " FPAC [%c]" +#define RSC_ISA_FPACCOMBINE_CODE " FPACCOMBINE [%c]" #define RSC_ISA_JSCVT_CODE " JSCVT [%c]" #define RSC_ISA_LRCPC_CODE " LRCPC [%c]" #define RSC_ISA_LRCPC2_CODE " LRCPC2 [%c]" #define RSC_ISA_LRCPC3_CODE " LRCPC3 [%c]" #define RSC_ISA_PACGA_CODE " PACGA [%c]" +#define RSC_ISA_PACQARMA3_CODE " PACQARMA3 [%c]" #define RSC_ISA_PACQARMA5_CODE " PACQARMA5 [%c]" +#define RSC_ISA_PAUTH_CODE " PAuth [%c]" +#define RSC_ISA_PAUTH2_CODE " PAuth2 [%c]" +#define RSC_ISA_PAUTH_LR_CODE " PAuth_LR [%c]" #define RSC_ISA_FRINTTS_CODE " FRINTTS [%c]" #define RSC_ISA_SPECRES_CODE " SPECRES [%c]" #define RSC_ISA_SPECRES2_CODE " SPECRES2 [%c]" @@ -1972,6 +1991,7 @@ #define RSC_ISA_EBF16_CODE " EBF16 [%c]" #define RSC_ISA_I8MM_CODE " I8MM [%c]" #define RSC_ISA_SB_CODE " SB [%c]" +#define RSC_ISA_WFxT_CODE " WFxT [%c]" #define RSC_ISA_XS_CODE " XS [%c]" #define RSC_ISA_LS64_CODE " LS64 [%c]" #define RSC_ISA_LS64_V_CODE " LS64_V [%c]" diff --git a/aarch64/corefreq-cli-rsc-fr.h b/aarch64/corefreq-cli-rsc-fr.h index 22f4d01d..43206e75 100644 --- a/aarch64/corefreq-cli-rsc-fr.h +++ b/aarch64/corefreq-cli-rsc-fr.h @@ -471,19 +471,27 @@ do echo -en "$h$l\t""\xc3""\x$h$l""\t"; done; done;echo #define RSC_ISA_LSE_COMM_CODE_FR RSC_ISA_LSE_COMM_CODE_EN #define RSC_ISA_CRC32_COMM_CODE_FR RSC_ISA_CRC32_COMM_CODE_EN #define RSC_ISA_DP_COMM_CODE_FR RSC_ISA_DP_COMM_CODE_EN +#define RSC_ISA_EPAC_COMM_CODE_FR RSC_ISA_EPAC_COMM_CODE_EN #define RSC_ISA_FCMA_COMM_CODE_FR RSC_ISA_FCMA_COMM_CODE_EN #define RSC_ISA_FHM_COMM_CODE_FR RSC_ISA_FHM_COMM_CODE_EN #define RSC_ISA_FP_COMM_CODE_FR RSC_ISA_FP_COMM_CODE_EN +#define RSC_ISA_FPAC_COMM_CODE_FR RSC_ISA_FPAC_COMM_CODE_EN +#define RSC_ISA_FPACCOMBINE_COMM_CODE_FR RSC_ISA_FPACCOMBINE_COMM_CODE_EN #define RSC_ISA_JSCVT_COMM_CODE_FR RSC_ISA_JSCVT_COMM_CODE_EN #define RSC_ISA_LRCPC_COMM_CODE_FR RSC_ISA_LRCPC_COMM_CODE_EN #define RSC_ISA_PACIMP_COMM_CODE_FR RSC_ISA_PACIMP_COMM_CODE_EN +#define RSC_ISA_PACQARMA3_COMM_CODE_FR RSC_ISA_PACQARMA3_COMM_CODE_EN #define RSC_ISA_PACQARMA5_COMM_CODE_FR RSC_ISA_PACQARMA5_COMM_CODE_EN +#define RSC_ISA_PAUTH_COMM_CODE_FR RSC_ISA_PAUTH_COMM_CODE_EN +#define RSC_ISA_PAUTH2_COMM_CODE_FR RSC_ISA_PAUTH2_COMM_CODE_EN +#define RSC_ISA_PAUTH_LR_COMM_CODE_FR RSC_ISA_PAUTH_LR_COMM_CODE_EN #define RSC_ISA_FRINTTS_COMM_CODE_FR RSC_ISA_FRINTTS_COMM_CODE_EN #define RSC_ISA_SPECRES_COMM_CODE_FR RSC_ISA_SPECRES_COMM_CODE_EN #define RSC_ISA_BF16_COMM_CODE_FR RSC_ISA_BF16_COMM_CODE_EN #define RSC_ISA_EBF16_COMM_CODE_FR RSC_ISA_EBF16_COMM_CODE_EN #define RSC_ISA_I8MM_COMM_CODE_FR RSC_ISA_I8MM_COMM_CODE_EN #define RSC_ISA_SB_COMM_CODE_FR RSC_ISA_SB_COMM_CODE_EN +#define RSC_ISA_WFxT_COMM_CODE_FR RSC_ISA_WFxT_COMM_CODE_EN #define RSC_ISA_XS_COMM_CODE_FR RSC_ISA_XS_COMM_CODE_EN #define RSC_ISA_LS64_COMM_CODE_FR RSC_ISA_LS64_COMM_CODE_EN #define RSC_ISA_DGH_COMM_CODE_FR RSC_ISA_DGH_COMM_CODE_EN diff --git a/aarch64/corefreq-cli-rsc.c b/aarch64/corefreq-cli-rsc.c index 140fc8db..350523eb 100644 --- a/aarch64/corefreq-cli-rsc.c +++ b/aarch64/corefreq-cli-rsc.c @@ -681,12 +681,18 @@ RESOURCE_ST Resource[] = { LDT(RSC_ISA_CRC32_COMM), LDQ(RSC_ISA_DP), LDT(RSC_ISA_DP_COMM), + LDQ(RSC_ISA_EPAC), + LDT(RSC_ISA_EPAC_COMM), LDQ(RSC_ISA_FCMA), LDT(RSC_ISA_FCMA_COMM), LDQ(RSC_ISA_FHM), LDT(RSC_ISA_FHM_COMM), LDQ(RSC_ISA_FP), LDT(RSC_ISA_FP_COMM), + LDQ(RSC_ISA_FPAC), + LDT(RSC_ISA_FPAC_COMM), + LDQ(RSC_ISA_FPACCOMBINE), + LDT(RSC_ISA_FPACCOMBINE_COMM), LDQ(RSC_ISA_JSCVT), LDT(RSC_ISA_JSCVT_COMM), LDQ(RSC_ISA_LRCPC), @@ -695,8 +701,16 @@ RESOURCE_ST Resource[] = { LDT(RSC_ISA_LRCPC_COMM), LDQ(RSC_ISA_PACGA), LDT(RSC_ISA_PACIMP_COMM), + LDQ(RSC_ISA_PACQARMA3), + LDT(RSC_ISA_PACQARMA3_COMM), LDQ(RSC_ISA_PACQARMA5), LDT(RSC_ISA_PACQARMA5_COMM), + LDQ(RSC_ISA_PAUTH), + LDT(RSC_ISA_PAUTH_COMM), + LDQ(RSC_ISA_PAUTH2), + LDT(RSC_ISA_PAUTH2_COMM), + LDQ(RSC_ISA_PAUTH_LR), + LDT(RSC_ISA_PAUTH_LR_COMM), LDQ(RSC_ISA_FRINTTS), LDT(RSC_ISA_FRINTTS_COMM), LDQ(RSC_ISA_SPECRES), @@ -710,6 +724,8 @@ RESOURCE_ST Resource[] = { LDT(RSC_ISA_I8MM_COMM), LDQ(RSC_ISA_SB), LDT(RSC_ISA_SB_COMM), + LDQ(RSC_ISA_WFxT), + LDT(RSC_ISA_WFxT_COMM), LDQ(RSC_ISA_XS), LDT(RSC_ISA_XS_COMM), LDQ(RSC_ISA_LS64), diff --git a/aarch64/corefreq-cli-rsc.h b/aarch64/corefreq-cli-rsc.h index 2abe796a..8b272202 100644 --- a/aarch64/corefreq-cli-rsc.h +++ b/aarch64/corefreq-cli-rsc.h @@ -504,12 +504,18 @@ enum { RSC_ISA_CRC32_COMM, RSC_ISA_DP, RSC_ISA_DP_COMM, + RSC_ISA_EPAC, + RSC_ISA_EPAC_COMM, RSC_ISA_FCMA, RSC_ISA_FCMA_COMM, RSC_ISA_FHM, RSC_ISA_FHM_COMM, RSC_ISA_FP, RSC_ISA_FP_COMM, + RSC_ISA_FPAC, + RSC_ISA_FPAC_COMM, + RSC_ISA_FPACCOMBINE, + RSC_ISA_FPACCOMBINE_COMM, RSC_ISA_JSCVT, RSC_ISA_JSCVT_COMM, RSC_ISA_LRCPC, @@ -518,8 +524,16 @@ enum { RSC_ISA_LRCPC_COMM, RSC_ISA_PACGA, RSC_ISA_PACIMP_COMM, + RSC_ISA_PACQARMA3, + RSC_ISA_PACQARMA3_COMM, RSC_ISA_PACQARMA5, RSC_ISA_PACQARMA5_COMM, + RSC_ISA_PAUTH, + RSC_ISA_PAUTH_COMM, + RSC_ISA_PAUTH2, + RSC_ISA_PAUTH2_COMM, + RSC_ISA_PAUTH_LR, + RSC_ISA_PAUTH_LR_COMM, RSC_ISA_FRINTTS, RSC_ISA_FRINTTS_COMM, RSC_ISA_SPECRES, @@ -533,6 +547,8 @@ enum { RSC_ISA_I8MM_COMM, RSC_ISA_SB, RSC_ISA_SB_COMM, + RSC_ISA_WFxT, + RSC_ISA_WFxT_COMM, RSC_ISA_XS, RSC_ISA_XS_COMM, RSC_ISA_LS64, diff --git a/aarch64/corefreq-cli.c b/aarch64/corefreq-cli.c index bb69fef9..dc688e12 100644 --- a/aarch64/corefreq-cli.c +++ b/aarch64/corefreq-cli.c @@ -1541,6 +1541,13 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.EBF16 }, }, + { + NULL, + RSC(ISA_EPAC).CODE(), RSC(ISA_EPAC_COMM).CODE(), + { 0, RO(Shm)->Proc.Features.EPAC }, + (unsigned short[]) + { RO(Shm)->Proc.Features.EPAC }, + }, { NULL, RSC(ISA_FCMA).CODE(), RSC(ISA_FCMA_COMM).CODE(), @@ -1555,6 +1562,7 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.FHM }, }, +/* Row Mark */ { NULL, RSC(ISA_FlagM).CODE(), RSC(ISA_FlagM_COMM).CODE(), @@ -1562,7 +1570,6 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.FlagM }, }, -/* Row Mark */ { NULL, RSC(ISA_FlagM2).CODE(), RSC(ISA_FlagM_COMM).CODE(), @@ -1577,6 +1584,21 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.FP }, }, + { + NULL, + RSC(ISA_FPAC).CODE(), RSC(ISA_FPAC_COMM).CODE(), + { 0, RO(Shm)->Proc.Features.FPAC }, + (unsigned short[]) + { RO(Shm)->Proc.Features.FPAC }, + }, +/* Row Mark */ + { + NULL, + RSC(ISA_FPACCOMBINE).CODE(), RSC(ISA_FPACCOMBINE_COMM).CODE(), + { 0, RO(Shm)->Proc.Features.FPACCOMBINE }, + (unsigned short[]) + { RO(Shm)->Proc.Features.FPACCOMBINE }, + }, { NULL, RSC(ISA_FRINTTS).CODE(), RSC(ISA_FRINTTS_COMM).CODE(), @@ -1591,7 +1613,6 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.I8MM }, }, -/* Row Mark */ { NULL, RSC(ISA_JSCVT).CODE(), RSC(ISA_JSCVT_COMM).CODE(), @@ -1599,6 +1620,7 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.JSCVT }, }, +/* Row Mark */ { NULL, RSC(ISA_LRCPC).CODE(), RSC(ISA_LRCPC_COMM).CODE(), @@ -1620,7 +1642,6 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.LRCPC3 }, }, -/* Row Mark */ { NULL, RSC(ISA_LS64).CODE(), RSC(ISA_LS64_COMM).CODE(), @@ -1628,6 +1649,7 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.LS64 }, }, +/* Row Mark */ { NULL, RSC(ISA_LS64_V).CODE(), RSC(ISA_LS64_COMM).CODE(), @@ -1649,7 +1671,6 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.LSE }, }, -/* Row Mark */ { NULL, RSC(ISA_LSE128).CODE(), RSC(ISA_LSE_COMM).CODE(), @@ -1657,6 +1678,7 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.LSE128 }, }, +/* Row Mark */ { NULL, RSC(ISA_PACGA).CODE(), RSC(ISA_PACIMP_COMM).CODE(), @@ -1664,6 +1686,13 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.PACIMP }, }, + { + NULL, + RSC(ISA_PACQARMA3).CODE(), RSC(ISA_PACQARMA3_COMM).CODE(), + { 0, RO(Shm)->Proc.Features.PACQARMA3 }, + (unsigned short[]) + { RO(Shm)->Proc.Features.PACQARMA3 }, + }, { NULL, RSC(ISA_PACQARMA5).CODE(), RSC(ISA_PACQARMA5_COMM).CODE(), @@ -1671,6 +1700,28 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.PACQARMA5 }, }, + { + NULL, + RSC(ISA_PAUTH).CODE(), RSC(ISA_PAUTH_COMM).CODE(), + { 0, RO(Shm)->Proc.Features.PAuth }, + (unsigned short[]) + { RO(Shm)->Proc.Features.PAuth }, + }, +/* Row Mark */ + { + NULL, + RSC(ISA_PAUTH2).CODE(), RSC(ISA_PAUTH2_COMM).CODE(), + { 0, RO(Shm)->Proc.Features.PAuth2 }, + (unsigned short[]) + { RO(Shm)->Proc.Features.PAuth2 }, + }, + { + NULL, + RSC(ISA_PAUTH_LR).CODE(), RSC(ISA_PAUTH_LR_COMM).CODE(), + { 0, RO(Shm)->Proc.Features.PAuth_LR }, + (unsigned short[]) + { RO(Shm)->Proc.Features.PAuth_LR }, + }, { NULL, RSC(ISA_PMULL).CODE(), RSC(ISA_AES_COMM).CODE(), @@ -1678,7 +1729,6 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.PMULL }, }, -/* Row Mark */ { NULL, RSC(ISA_RAND).CODE(), RSC(ISA_RAND_COMM).CODE(), @@ -1686,6 +1736,7 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.RAND }, }, +/* Row Mark */ { NULL, RSC(ISA_RDMA).CODE(), RSC(ISA_RDMA_COMM).CODE(), @@ -1707,7 +1758,6 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SHA1 }, }, -/* Row Mark */ { NULL, RSC(ISA_SHA256).CODE(), RSC(ISA_SHA_COMM).CODE(), @@ -1715,6 +1765,7 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SHA256 }, }, +/* Row Mark */ { NULL, RSC(ISA_SHA512).CODE(), RSC(ISA_SHA_COMM).CODE(), @@ -1736,7 +1787,6 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SM3 }, }, -/* Row Mark */ { NULL, RSC(ISA_SM4).CODE(), RSC(ISA_SM_COMM).CODE(), @@ -1744,6 +1794,7 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SM4 }, }, +/* Row Mark */ { NULL, RSC(ISA_SME).CODE(), RSC(ISA_SME_COMM).CODE(), @@ -1765,7 +1816,6 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SME2p1 }, }, -/* Row Mark */ { NULL, RSC(ISA_SME_FA64).CODE(), NULL, @@ -1773,6 +1823,7 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SME_FA64 }, }, +/* Row Mark */ { NULL, RSC(ISA_SME_LUTv2).CODE(), NULL, @@ -1794,7 +1845,6 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SME_F64F64 }, }, -/* Row Mark */ { NULL, RSC(ISA_SME_I16I32).CODE(), NULL, @@ -1802,6 +1852,7 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SME_I16I32 }, }, +/* Row Mark */ { NULL, RSC(ISA_SME_B16B16).CODE(), NULL, @@ -1823,7 +1874,6 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SME_F8F16 }, }, -/* Row Mark */ { NULL, RSC(ISA_SME_F8F32).CODE(), NULL, @@ -1831,6 +1881,7 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SME_F8F32 }, }, +/* Row Mark */ { NULL, RSC(ISA_SME_I8I32).CODE(), NULL, @@ -1852,7 +1903,6 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SME_B16F32 }, }, -/* Row Mark */ { NULL, RSC(ISA_SME_BI32I32).CODE(), NULL, @@ -1860,6 +1910,7 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SME_BI32I32 }, }, +/* Row Mark */ { NULL, RSC(ISA_SME_F32F32).CODE(), NULL, @@ -1881,7 +1932,6 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SME_SF8DP4 }, }, -/* Row Mark */ { NULL, RSC(ISA_SME_SF8DP2).CODE(), NULL, @@ -1889,6 +1939,7 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SME_SF8DP2 }, }, +/* Row Mark */ { NULL, RSC(ISA_SPECRES).CODE(), RSC(ISA_SPECRES_COMM).CODE(), @@ -1910,7 +1961,6 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SVE }, }, -/* Row Mark */ { NULL, RSC(ISA_SVE2).CODE(), RSC(ISA_SVE_COMM).CODE(), @@ -1918,6 +1968,7 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SVE2 }, }, +/* Row Mark */ { NULL, RSC(ISA_SVE_F64MM).CODE(), NULL, @@ -1939,7 +1990,6 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SVE_I8MM }, }, -/* Row Mark */ { NULL, RSC(ISA_SVE_SM4).CODE(), NULL, @@ -1947,6 +1997,7 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SVE_SM4 }, }, +/* Row Mark */ { NULL, RSC(ISA_SVE_SHA3).CODE(), NULL, @@ -1968,7 +2019,6 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SVE_EBF16 }, }, -/* Row Mark */ { NULL, RSC(ISA_SVE_BitPerm).CODE(), NULL, @@ -1976,6 +2026,7 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SVE_BitPerm }, }, +/* Row Mark */ { NULL, RSC(ISA_SVE_AES).CODE(), NULL, @@ -1990,6 +2041,13 @@ REASON_CODE SysInfoISA( Window *win, (unsigned short[]) { RO(Shm)->Proc.Features.SVE_PMULL128 }, }, + { + NULL, + RSC(ISA_WFxT).CODE(), RSC(ISA_WFxT_COMM).CODE(), + { 0, RO(Shm)->Proc.Features.WFxT }, + (unsigned short[]) + { RO(Shm)->Proc.Features.WFxT }, + }, { NULL, RSC(ISA_XS).CODE(), RSC(ISA_XS_COMM).CODE(), diff --git a/aarch64/corefreqk.c b/aarch64/corefreqk.c index 5f20e71b..10a3971c 100644 --- a/aarch64/corefreqk.c +++ b/aarch64/corefreqk.c @@ -523,6 +523,7 @@ static void Query_Features(void *pArg) volatile AA64DFR1 dfr1; volatile AA64ISAR0 isar0; volatile AA64ISAR1 isar1; + volatile AA64ISAR2 isar2; volatile AA64MMFR0 mmfr0; volatile AA64MMFR1 mmfr1; volatile AA64MMFR2 mmfr2; @@ -562,6 +563,8 @@ static void Query_Features(void *pArg) : : "memory" ); + + isar2.value = SysRegRead(ID_AA64ISAR2_EL1); mmfr2.value = SysRegRead(ID_AA64MMFR2_EL1); iArg->Features->Info.Signature.Stepping = midr.Revision @@ -918,6 +921,43 @@ static void Query_Features(void *pArg) iArg->Features->DPB = 0; break; } + switch (isar2.GPA3) { + case 0b0001: + iArg->Features->PACQARMA3 = 1; + break; + case 0b0000: + default: + iArg->Features->PACQARMA3 = 0; + break; + } + + iArg->Features->PAuth = (isar2.APA3 == 0b0001) || (isar1.API == 0b0001) + || (isar1.APA == 0b0001); + + iArg->Features->EPAC = (isar2.APA3 == 0b0010) || (isar1.API == 0b0010) + || (isar1.APA == 0b0010); + + iArg->Features->PAuth2 = (isar2.APA3 == 0b0011) || (isar1.API == 0b0011) + || (isar1.APA == 0b0011); + + iArg->Features->FPAC = (isar2.APA3 == 0b0100) || (isar1.API == 0b0100) + || (isar1.APA == 0b0100); + + iArg->Features->FPACCOMBINE = (isar2.APA3 == 0b0101) + || (isar1.API == 0b0101)||(isar1.APA == 0b0101); + + iArg->Features->PAuth_LR = (isar2.APA3 == 0b0110) + || (isar1.API == 0b0110)||(isar1.APA == 0b0110); + + switch (isar2.WFxT) { + case 0b0010: + iArg->Features->WFxT = 1; + break; + case 0b0000: + default: + iArg->Features->WFxT = 0; + break; + } switch (mmfr0.ECV) { case 0b0010: case 0b0001: diff --git a/aarch64/coretypes.h b/aarch64/coretypes.h index 9db8790f..d52cefd7 100644 --- a/aarch64/coretypes.h +++ b/aarch64/coretypes.h @@ -890,7 +890,16 @@ typedef struct /* BSP features. */ PACQARMA5 : 56-55, LRCPC2 : 57-56, LRCPC3 : 58-57, - _Unused1_ : 64-58; + PACQARMA3 : 59-58, + PAuth : 60-59, + EPAC : 61-60, + PAuth2 : 62-61, + FPAC : 63-62, + FPACCOMBINE : 64-63; + + Bit64 PAuth_LR : 1-0, + WFxT : 2-1, + _Unused1_ : 64-2; Bit64 InvariantTSC : 8-0, HyperThreading : 9-8,