[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 3/3] target/loongarch: Fix PGD CSR for LoongArch32
From: |
Jiaxun Yang |
Subject: |
Re: [PATCH 3/3] target/loongarch: Fix PGD CSR for LoongArch32 |
Date: |
Tue, 24 Dec 2024 01:19:05 +0000 |
在2024年12月23日十二月 下午12:52,Philippe Mathieu-Daudé写道:
> On 23/12/24 00:40, Jiaxun Yang wrote:
>> As per manual, the source of PGD CSR is relevant to highest bit of
>> BADV. In LoongArch32, all CSRs are 32 bits only, thus we should check
>> bit 31 of BADV to determine PGDH/PGDL for LoongArch32.
>>
>> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
>> ---
>> target/loongarch/tcg/csr_helper.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/target/loongarch/tcg/csr_helper.c
>> b/target/loongarch/tcg/csr_helper.c
>> index
>> 15f94caefabc7722263fa46e948e21de37b4203c..ca8100eedfb37fd3b45b3de0c0fc0fad599c4685
>> 100644
>> --- a/target/loongarch/tcg/csr_helper.c
>> +++ b/target/loongarch/tcg/csr_helper.c
>> @@ -26,7 +26,7 @@ target_ulong helper_csrrd_pgd(CPULoongArchState *env)
>> v = env->CSR_BADV;
>> }
>>
>> - if ((v >> 63) & 0x1) {
>> + if (v >> (is_la64(env) ? 63 : 31) & 0x1) {
>
> Alternatively:
>
> if (extract64(v, TARGET_LONG_BITS - 1, 1)) {
>
>> v = env->CSR_PGDH;
>> } else {
>> v = env->CSR_PGDL;
>>
To support 32bit CPU on 64bit builds we still need to check is_ia64 at runtime
:-(
Will use extract64 instead.
--
- Jiaxun
[PATCH 1/3] target/loongarch: Enable rotr.w/rotri.w for LoongArch32, Jiaxun Yang, 2024/12/22
[PATCH 3/3] target/loongarch: Fix PGD CSR for LoongArch32, Jiaxun Yang, 2024/12/22
- Message not available
- Re: [PATCH 3/3] target/loongarch: Fix PGD CSR for LoongArch32,
Jiaxun Yang <=