qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] [PATCH] target/riscv/pmp.c: pmpcfg_csr_read ret


From: Philippe Mathieu-Daudé
Subject: Re: [Qemu-devel] [PATCH] [PATCH] target/riscv/pmp.c: pmpcfg_csr_read return type demotion
Date: Thu, 18 Oct 2018 19:55:23 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.0

On 18/10/2018 19:44, Peter Maydell wrote:
> On 18 October 2018 at 18:37, Philippe Mathieu-Daudé <address@hidden> wrote:
>> Hi Lee,
>>
>> On 18/10/2018 08:44, Dayeol Lee wrote:
>>> There is a data type demotion bug in target/riscv/pmp.c
>>> When the target_ulong is 8 bytes, pmpcfg_csr_read returns only lower 4
>>> bytes.
>>> ---
>>>  target/riscv/pmp.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c
>>> index c828950..4b6c20e 100644
>>> --- a/target/riscv/pmp.c
>>> +++ b/target/riscv/pmp.c
>>> @@ -337,7 +337,7 @@ target_ulong pmpcfg_csr_read(CPURISCVState *env, 
>>> uint32_t reg_index)
>>>
>>>      for (i = 0; i < sizeof(target_ulong); i++) {
>>>          val = pmp_read_cfg(env, (reg_index * sizeof(target_ulong)) + i);
>>> -        cfg_val |= (val << (i * 8));
>>> +        cfg_val |= ((target_ulong)val << ((target_ulong)i * 8));
>>
>> Casting 'val' seems correct, however you don't need to cast the 'i'.
> 
> You could just declare 'val' as a target_ulong to start with,
> and avoid the need for a cast at all, I think ?

I did not look at the whole code, just the patch context.
Now looking at the code this is obvious ;)
Thanks Peter!



reply via email to

[Prev in Thread] Current Thread [Next in Thread]