qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 2/3] edu: mmio: allow mmio read dispatch acce


From: Philippe Mathieu-Daudé
Subject: Re: [Qemu-devel] [PATCH v2 2/3] edu: mmio: allow mmio read dispatch accept 8 bytes
Date: Sun, 21 Apr 2019 12:44:21 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1

Hi Li,

On 4/20/19 6:14 PM, Li Qiang wrote:
> The edu spec said when address >= 0x80, the MMIO area can

"says"

> be accessed by 8 bytes.
> 
> Signed-off-by: Li Qiang <address@hidden>
> ---
>  hw/misc/edu.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/hw/misc/edu.c b/hw/misc/edu.c
> index 65fc32b928..4018dddcb8 100644
> --- a/hw/misc/edu.c
> +++ b/hw/misc/edu.c
> @@ -189,6 +189,10 @@ static uint64_t edu_mmio_read(void *opaque, hwaddr addr, 
> unsigned size)

Completing the diff ...:

       if (size != 4) {

>          return val;
>      }
>  
> +    if (addr >= 0x80 && size != 4 && size != 8) {

... to show this code is unreachable for size == 8.

> +        return val;
> +    }
> +
>      switch (addr) {
>      case 0x00:
>          val = 0x010000edu;
> 

I think the change you wanted is:

-- >8 --
@@ -185,7 +185,11 @@ static uint64_t edu_mmio_read(void *opaque, hwaddr
addr, unsigned size)
     EduState *edu = opaque;
     uint64_t val = ~0ULL;

-    if (size != 4) {
+    if (addr < 0x80 && size != 4) {
+        return val;
+    }
+
+    if (addr >= 0x80 && size != 4 && size != 8) {
         return val;
     }

---

Another cleaner way to solve this is use 2 MemoryRegionOps, one for the
first 0x80 addresses and another for the rest.

Regards,

Phil.



reply via email to

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