[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.
[Qemu-devel] [PATCH v2 3/3] edu: uses uint64_t in dma operation, Li Qiang, 2019/04/20