The branch main has been updated by andrew:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=118bfc9f53ac9abfc58078195b35e293bbfb8136

commit 118bfc9f53ac9abfc58078195b35e293bbfb8136
Author:     Andrew Turner <and...@freebsd.org>
AuthorDate: 2025-07-30 10:51:20 +0000
Commit:     Andrew Turner <and...@freebsd.org>
CommitDate: 2025-07-30 12:46:22 +0000

    arm64: Fix the sign in ID registers
    
    Some ID registers use 0b0000 to indicate a feature is enabled, and
    0b1111 to indicate it's not. In these cases we need to tell the kernel
    to treat the value as a signed field.
    
    Set the signed flag in fields we decode that should be signed.
    
    Sponsored by:   Arm Ltd
    Differential Revision:  https://reviews.freebsd.org/D51369
---
 sys/arm64/arm64/identcpu.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/sys/arm64/arm64/identcpu.c b/sys/arm64/arm64/identcpu.c
index 49b4b25b51bb..55f7e98a1b1b 100644
--- a/sys/arm64/arm64/identcpu.c
+++ b/sys/arm64/arm64/identcpu.c
@@ -618,7 +618,7 @@ static const struct mrs_field id_aa64dfr0_fields[] = {
            id_aa64dfr0_tracebuffer),
        MRS_FIELD(ID_AA64DFR0, TraceFilt, false, MRS_LOWER, 0,
            id_aa64dfr0_tracefilt),
-       MRS_FIELD(ID_AA64DFR0, DoubleLock, false, MRS_LOWER, 0,
+       MRS_FIELD(ID_AA64DFR0, DoubleLock, true, MRS_LOWER, 0,
            id_aa64dfr0_doublelock),
        MRS_FIELD(ID_AA64DFR0, PMSVer, false, MRS_LOWER, 0, id_aa64dfr0_pmsver),
        MRS_FIELD(ID_AA64DFR0, CTX_CMPs, false, MRS_LOWER, 0,
@@ -628,7 +628,7 @@ static const struct mrs_field id_aa64dfr0_fields[] = {
        MRS_FIELD(ID_AA64DFR0, PMSS, false, MRS_LOWER, 0, id_aa64dfr0_pmss),
        MRS_FIELD(ID_AA64DFR0, BRPs, false, MRS_LOWER, MRS_USERSPACE,
            id_aa64dfr0_brps),
-       MRS_FIELD(ID_AA64DFR0, PMUVer, false, MRS_LOWER, 0, id_aa64dfr0_pmuver),
+       MRS_FIELD(ID_AA64DFR0, PMUVer, true, MRS_LOWER, 0, id_aa64dfr0_pmuver),
        MRS_FIELD(ID_AA64DFR0, TraceVer, false, MRS_LOWER, 0,
            id_aa64dfr0_tracever),
        MRS_FIELD(ID_AA64DFR0, DebugVer, false, MRS_LOWER | MRS_SAFE(0x6), 0,
@@ -1259,9 +1259,9 @@ static const struct mrs_field id_aa64mmfr0_fields[] = {
            id_aa64mmfr0_tgran64_2),
        MRS_FIELD(ID_AA64MMFR0, TGran16_2, false, MRS_LOWER, 0,
            id_aa64mmfr0_tgran16_2),
-       MRS_FIELD(ID_AA64MMFR0, TGran4, false, MRS_LOWER, 0,
+       MRS_FIELD(ID_AA64MMFR0, TGran4, true, MRS_LOWER, 0,
            id_aa64mmfr0_tgran4),
-       MRS_FIELD(ID_AA64MMFR0, TGran64, false, MRS_LOWER, 0,
+       MRS_FIELD(ID_AA64MMFR0, TGran64, true, MRS_LOWER, 0,
            id_aa64mmfr0_tgran64),
        MRS_FIELD(ID_AA64MMFR0, TGran16, false, MRS_LOWER, 0,
            id_aa64mmfr0_tgran16),
@@ -1856,7 +1856,8 @@ static const struct mrs_field id_aa64pfr1_fields[] = {
        MRS_FIELD(ID_AA64PFR1, DF2, false, MRS_LOWER, 0, id_aa64pfr1_df2),
        MRS_FIELD(ID_AA64PFR1, MTEX, false, MRS_LOWER, 0, id_aa64pfr1_mtex),
        MRS_FIELD(ID_AA64PFR1, THE, false, MRS_LOWER, 0, id_aa64pfr1_the),
-       MRS_FIELD(ID_AA64PFR1, MTE_frac, false, MRS_LOWER, 0, 
id_aa64pfr1_mtefrac),
+       MRS_FIELD(ID_AA64PFR1, MTE_frac, true, MRS_LOWER, 0,
+           id_aa64pfr1_mtefrac),
        MRS_FIELD(ID_AA64PFR1, NMI, false, MRS_LOWER, 0, id_aa64pfr1_nmi),
        MRS_FIELD(ID_AA64PFR1, CSV2_frac, false, MRS_LOWER, 0,
            id_aa64pfr1_csv2_frac),

Reply via email to