[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 1/2] target/riscv: separate priv from mmu_idx
From: |
Wu, Fei |
Subject: |
Re: [PATCH v4 1/2] target/riscv: separate priv from mmu_idx |
Date: |
Fri, 24 Mar 2023 09:20:31 +0800 |
User-agent: |
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 |
On 3/24/2023 12:07 AM, Richard Henderson wrote:
> On 3/22/23 23:00, Wu, Fei wrote:
>>>> + ctx->priv = env->priv;
>>>
>>> This is not right. You should put env->priv into tb flags before you use
>>> it in translation.
>>>
>> I see some other env usages in this function, when will env->priv and
>> tb_flags.priv mismatch (assume we have recorded priv in tb_flags)?
>
> You are correct that they should match, because of tb_flags, but it is
> bad form to read from env, as that leads to errors. Since you *can*
> read the same data from tb_flags, you should.
>
I lack some background here, why should tb_flags be preferred if env has
the same info? Then for reading from tb_flags, we need to add it to
tb_flags first.
Correct me if I'm wrong. The only strong reason we add some flag to
tb_flags is that it causes codegen generate different code because of
this flag change, and it looks like priv is not one of them, neither is
mmu_idx, the generated code does use mmu_idx, but no different code
generated for it.
I think here we have some other reasons to include more, e.g. reference
env can be error-prone in some way. So there are minimal flags must be
in tb_flags, but we think it's better to add more?
Thanks,
Fei.
> The read of misa_ext and misa_mxl_max are correct, because they are
> constant set at cpu init/realize.
>
> The read of vstart is incorrect. The TB_FLAGS field is VL_EQ_VLMAX,
> which includes a test for vstart == 0, but the smaller vstart == 0 test
> is not extractable from that. Thus the usage in e.g.
> vext_check_reduction is incorrect. One would require a new TB_FLAGS bit
> to encode vstart ==/!= 0 alone.
>
>
> r~
- [PATCH v4 0/2] target/riscv: reduce MSTATUS_SUM overhead, Fei Wu, 2023/03/22
- [PATCH v4 1/2] target/riscv: separate priv from mmu_idx, Fei Wu, 2023/03/22
- Re: [PATCH v4 1/2] target/riscv: separate priv from mmu_idx, LIU Zhiwei, 2023/03/23
- Re: [PATCH v4 1/2] target/riscv: separate priv from mmu_idx, Wu, Fei, 2023/03/23
- Re: [PATCH v4 1/2] target/riscv: separate priv from mmu_idx, Wu, Fei, 2023/03/23
- Re: [PATCH v4 1/2] target/riscv: separate priv from mmu_idx, LIU Zhiwei, 2023/03/23
- Re: [PATCH v4 1/2] target/riscv: separate priv from mmu_idx, Wu, Fei, 2023/03/23
- Re: [PATCH v4 1/2] target/riscv: separate priv from mmu_idx, Richard Henderson, 2023/03/23
- Re: [PATCH v4 1/2] target/riscv: separate priv from mmu_idx,
Wu, Fei <=
- Re: [PATCH v4 1/2] target/riscv: separate priv from mmu_idx, Richard Henderson, 2023/03/23
- Re: [PATCH v4 1/2] target/riscv: separate priv from mmu_idx, Wu, Fei, 2023/03/23
Re: [PATCH v4 1/2] target/riscv: separate priv from mmu_idx, Richard Henderson, 2023/03/23
[PATCH v4 2/2] target/riscv: reduce overhead of MSTATUS_SUM change, Fei Wu, 2023/03/22