[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/8] tcg: Avoid stores to unaligned addresses
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [PATCH 2/8] tcg: Avoid stores to unaligned addresses |
Date: |
Tue, 01 Apr 2014 13:12:32 +0100 |
User-agent: |
mu4e 0.9.9.6pre2; emacs 24.3.50.5 |
Richard Henderson <address@hidden> writes:
> From: Peter Maydell <address@hidden>
>
> Avoid stores to unaligned addresses in TCG code generation, by using the
> usual memcpy() approach. (Using bswap.h would drag a lot of QEMU baggage
> into TCG, so it's simpler just to do direct memcpy() here.)
I notice bswap.h has an interesting exultation to the efficiency of
inline memcpy's which I hope is justified.
Reviewed-by: Alex Bennée <address@hidden>
>
> Signed-off-by: Peter Maydell <address@hidden>
> Signed-off-by: Richard Henderson <address@hidden>
> ---
> tcg/tcg.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/tcg/tcg.c b/tcg/tcg.c
> index f1e0763..60f06c5 100644
> --- a/tcg/tcg.c
> +++ b/tcg/tcg.c
> @@ -125,21 +125,21 @@ static inline void tcg_out8(TCGContext *s, uint8_t v)
> static inline void tcg_out16(TCGContext *s, uint16_t v)
> {
> uint8_t *p = s->code_ptr;
> - *(uint16_t *)p = v;
> + memcpy(p, &v, sizeof(v));
> s->code_ptr = p + 2;
> }
>
> static inline void tcg_out32(TCGContext *s, uint32_t v)
> {
> uint8_t *p = s->code_ptr;
> - *(uint32_t *)p = v;
> + memcpy(p, &v, sizeof(v));
> s->code_ptr = p + 4;
> }
>
> static inline void tcg_out64(TCGContext *s, uint64_t v)
> {
> uint8_t *p = s->code_ptr;
> - *(uint64_t *)p = v;
> + memcpy(p, &v, sizeof(v));
> s->code_ptr = p + 8;
> }
--
Alex Bennée
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH 2/8] tcg: Avoid stores to unaligned addresses,
Alex Bennée <=