On Wed, Nov 15, 2023 at 2:30 AM Peter Maydell <peter.mayd...@linaro.org> wrote:
> On Tue, 14 Nov 2023 at 21:18, Richard Henderson > <richard.hender...@linaro.org> wrote: > > > > On 11/14/23 12:55, Patrick Venture wrote: > > > Avoids unaligned pointer issues. > > > > > > Reviewed-by: Chris Rauer <cra...@google.com> > > > Reviewed-by: Peter Foley <pefo...@google.com> > > > Signed-off-by: Patrick Venture <vent...@google.com> > > > --- > > > system/memory.c | 16 ++++++++-------- > > > 1 file changed, 8 insertions(+), 8 deletions(-) > > > > > > diff --git a/system/memory.c b/system/memory.c > > > index 304fa843ea..02c97d5187 100644 > > > --- a/system/memory.c > > > +++ b/system/memory.c > > > @@ -1343,16 +1343,16 @@ static uint64_t > memory_region_ram_device_read(void *opaque, > > > > > > switch (size) { > > > case 1: > > > - data = *(uint8_t *)(mr->ram_block->host + addr); > > > + memcpy(&data, mr->ram_block->host + addr, sizeof(uint8_t)); > > > > > > This is incorrect, especially for big-endian hosts. > > > > You want to use "qemu/bswap.h", ld*_he_p(), st*_he_p(). > > More specifically, we have a ldn_he_p() and stn_he_p() that > take the size in bytes of the data to read, so we should be > able to replace the switch-on-size in these functions with > a single call to the appropriate one of those. > Thanks! > > thanks > -- PMM >