> +static uint64_t tr_ramsink_msgread(void *opaque, hwaddr addr, unsigned
> size)
> +{
> +    TraceRamSink *tram = TRACE_RAM_SINK(opaque);
> +
> +    switch (size) {
> +    case 1:
> +        return tram->msgs[addr];
> +    case 2:
> +        return (uint16_t)tram->msgs[addr];
> +    case 4:
> +        return (uint32_t)tram->msgs[addr];
> +    default:
> +        g_assert_not_reached();
> +    }
>


Could we use little-endian load helpers for the multi-byte accesses? As
written, both cases only read tram->msgs[addr]; the casts do not load the
following bytes. For example:

case 2:
    return lduw_le_p(&tram->msgs[addr]);
case 4:
    return ldl_le_p(&tram->msgs[addr]);

Thanks
Jay Chang

Reply via email to