From: Gustavo Romero <gustavo.romero@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-devel@nongnu.org, alex.bennee@linaro.org,
richard.henderson@linaro.org, philmd@linaro.org
Subject: Re: [PATCH v2 1/2] target/arm: Move initialization of debug ID registers
Date: Mon, 24 Jun 2024 15:13:18 -0300 [thread overview]
Message-ID: <72424620-6a2e-333d-75ae-3ae9dc0920ab@linaro.org> (raw)
In-Reply-To: <CAFEAcA-W6KdKonrzf2UqAVODZLiUJdTzUiNLUeiq+Qe-W-KHQg@mail.gmail.com>
Hi Peter!
On 6/24/24 10:26 AM, Peter Maydell wrote:
> On Fri, 21 Jun 2024 at 15:39, Gustavo Romero <gustavo.romero@linaro.org> wrote:
>>
>> Move the initialization of the debug ID registers to aa32_max_features,
>> which is used to set the 32-bit ID registers. This ensures that the
>> debug ID registers are consistently set for the max CPU in a single
>> place.
>>
>> Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
>> ---
>> target/arm/cpu.h | 2 ++
>> target/arm/tcg/cpu32.c | 30 +++++++++++++++++++++++++++---
>> target/arm/tcg/cpu64.c | 2 +-
>> 3 files changed, 30 insertions(+), 4 deletions(-)
>>
>> diff --git a/target/arm/cpu.h b/target/arm/cpu.h
>> index 3841359d0f..d8eb986a04 100644
>> --- a/target/arm/cpu.h
>> +++ b/target/arm/cpu.h
>> @@ -2299,6 +2299,8 @@ FIELD(DBGDEVID, DOUBLELOCK, 20, 4)
>> FIELD(DBGDEVID, AUXREGS, 24, 4)
>> FIELD(DBGDEVID, CIDMASK, 28, 4)
>>
>> +FIELD(DBGDEVID1, PCSROFFSET, 0, 4)
>> +
>> FIELD(MVFR0, SIMDREG, 0, 4)
>> FIELD(MVFR0, FPSP, 4, 4)
>> FIELD(MVFR0, FPDP, 8, 4)
>> diff --git a/target/arm/tcg/cpu32.c b/target/arm/tcg/cpu32.c
>> index bdd82d912a..b155a0136f 100644
>> --- a/target/arm/tcg/cpu32.c
>> +++ b/target/arm/tcg/cpu32.c
>> @@ -87,6 +87,33 @@ void aa32_max_features(ARMCPU *cpu)
>> t = FIELD_DP32(t, ID_DFR0, PERFMON, 6); /* FEAT_PMUv3p5 */
>> cpu->isar.id_dfr0 = t;
>>
>> + /* Debug ID registers. */
>> +
>> + /* Bit[15] is RES1, Bit[13] and Bits[11:0] are RES0. */
>> + t = 0x00008000;
>> + t = FIELD_DP32(t, DBGDIDR, SE_IMP, 1);
>> + t = FIELD_DP32(t, DBGDIDR, NSUHD_IMP, 1);
>> + t = FIELD_DP32(t, DBGDIDR, VERSION, 6); /* Armv8 debug */
>> + t = FIELD_DP32(t, DBGDIDR, CTX_CMPS, 1);
>> + t = FIELD_DP32(t, DBGDIDR, BRPS, 5);
>> + t = FIELD_DP32(t, DBGDIDR, WRPS, 3);
>> + cpu->isar.dbgdidr = t;
>> +
>> + t = FIELD_DP32(t, DBGDEVID, PCSAMPLE, 3);
>
> Looks like we should have an initial "t = something" ("t = 0")
> before this line? Otherwise we start the DBGDEVID value
> with the value of DBGDIDR.
I'm setting all the 32 bits here so there is no bit left from previous t value.
But I agree it's better to be explicit here for readability. Done in v3.
>> + t = FIELD_DP32(t, DBGDEVID, WPADDRMASK, 1);
>> + t = FIELD_DP32(t, DBGDEVID, BPADDRMASK, 15);
>> + t = FIELD_DP32(t, DBGDEVID, VECTORCATCH, 0);
>> + t = FIELD_DP32(t, DBGDEVID, VIRTEXTNS, 1);
>> + t = FIELD_DP32(t, DBGDEVID, DOUBLELOCK, 1);
>> + t = FIELD_DP32(t, DBGDEVID, AUXREGS, 0);
>> + t = FIELD_DP32(t, DBGDEVID, CIDMASK, 0);
>> + cpu->isar.dbgdevid = t;
>> +
>> + /* Bits[31:4] are RES0. */
>> + t = 0;
>> + t = FIELD_DP32(t, DBGDEVID1, PCSROFFSET, 2);
>> + cpu->isar.dbgdevid1 = t;
>> +
>> t = cpu->isar.id_dfr1;
>> t = FIELD_DP32(t, ID_DFR1, HPMN0, 1); /* FEAT_HPMN0 */
>> cpu->isar.id_dfr1 = t;
>> @@ -955,9 +982,6 @@ static void arm_max_initfn(Object *obj)
>> cpu->isar.id_isar4 = 0x00011142;
>> cpu->isar.id_isar5 = 0x00011121;
>> cpu->isar.id_isar6 = 0;
>> - cpu->isar.dbgdidr = 0x3516d000;
>> - cpu->isar.dbgdevid = 0x00110f13;
>> - cpu->isar.dbgdevid1 = 0x2;
>> cpu->isar.reset_pmcr_el0 = 0x41013000;
>> cpu->clidr = 0x0a200023;
>> cpu->ccsidr[0] = 0x701fe00a; /* 32KB L1 dcache */
>> diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c
>> index 0899251eef..71e1bfcd4e 100644
>> --- a/target/arm/tcg/cpu64.c
>> +++ b/target/arm/tcg/cpu64.c
>> @@ -1167,7 +1167,7 @@ void aarch64_max_tcg_initfn(Object *obj)
>>
>> t = cpu->isar.id_aa64isar2;
>> t = FIELD_DP64(t, ID_AA64ISAR2, MOPS, 1); /* FEAT_MOPS */
>> - t = FIELD_DP64(t, ID_AA64ISAR2, BC, 1); /* FEAT_HBC */
>> + t = FIELD_DP64(t, ID_AA64ISAR2, BC, 1); /* FEAT_HBC */
>> t = FIELD_DP64(t, ID_AA64ISAR2, WFXT, 2); /* FEAT_WFxT */
>> cpu->isar.id_aa64isar2 = t;
>
> This indent fixup is unrelated so should really be its own patch.
Got it. Done in v3 so.
Cheers,
Gustavo
next prev parent reply other threads:[~2024-06-24 18:13 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-21 14:39 [PATCH v2 0/2] target/arm: Enable FEAT_Debugv8p8 for -cpu max Gustavo Romero
2024-06-21 14:39 ` [PATCH v2 1/2] target/arm: Move initialization of debug ID registers Gustavo Romero
2024-06-24 13:26 ` Peter Maydell
2024-06-24 18:13 ` Gustavo Romero [this message]
2024-06-21 14:39 ` [PATCH v2 2/2] target/arm: Enable FEAT_Debugv8p8 for -cpu max Gustavo Romero
2024-06-24 13:27 ` Peter Maydell
2024-06-24 18:14 ` Gustavo Romero
2024-06-21 16:50 ` [PATCH v2 0/2] " Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=72424620-6a2e-333d-75ae-3ae9dc0920ab@linaro.org \
--to=gustavo.romero@linaro.org \
--cc=alex.bennee@linaro.org \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).