[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH 24/25] hw/virtio: Add methods for aligned pointer access
From: |
Philippe Mathieu-Daudé |
Subject: |
[RFC PATCH 24/25] hw/virtio: Add methods for aligned pointer access |
Date: |
Tue, 18 May 2021 20:36:54 +0200 |
Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
include/hw/virtio/virtio-access.h | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/include/hw/virtio/virtio-access.h
b/include/hw/virtio/virtio-access.h
index ae66bbd74f9..5b20f004e12 100644
--- a/include/hw/virtio/virtio-access.h
+++ b/include/hw/virtio/virtio-access.h
@@ -66,6 +66,16 @@ static inline rtype virtio_ld ## size ##
_phys_cached(VirtIODevice *vdev,\
return ld ## size ## _be_phys_cached(cache, pa);\
}\
return ld ## size ## _le_phys_cached(cache, pa);\
+}\
+static inline rtype virtio_ld ## size ## _phys_cached_aligned(\
+ VirtIODevice *vdev,\
+ MemoryRegionCache
*cache,\
+ hwaddr pa)\
+{\
+ if (virtio_access_is_big_endian(vdev)) {\
+ return ld ## size ## _be_phys_cached_aligned(cache, pa);\
+ }\
+ return ld ## size ## _le_phys_cached_aligned(cache, pa);\
}
#define VIRTIO_ST_CONVERT(size, vtype)\
@@ -98,6 +108,17 @@ static inline void virtio_st ## size ##
_phys_cached(VirtIODevice *vdev,\
} else {\
st ## size ## _le_phys_cached(cache, pa, value);\
}\
+}\
+static inline void virtio_st ## size ## _phys_cached_aligned(\
+ VirtIODevice *vdev,\
+ MemoryRegionCache *cache,\
+ hwaddr pa, vtype value)\
+{\
+ if (virtio_access_is_big_endian(vdev)) {\
+ st ## size ## _be_phys_cached_aligned(cache, pa, value);\
+ } else {\
+ st ## size ## _le_phys_cached_aligned(cache, pa, value);\
+ }\
}
#define VIRTIO_LDST_CONVERT(size, rtype, vtype)\
--
2.26.3
- Re: [RFC PATCH 14/25] qemu/bswap: Introduce load/store for aligned pointer, (continued)
- [RFC PATCH 16/25] exec/memory: Add methods for aligned pointer access (physical memory), Philippe Mathieu-Daudé, 2021/05/18
- [RFC PATCH 15/25] exec/memory: Add methods for aligned pointer access (address space), Philippe Mathieu-Daudé, 2021/05/18
- [RFC PATCH 17/25] hw/virtio: Use correct type sizes, Philippe Mathieu-Daudé, 2021/05/18
- [RFC PATCH 18/25] hw/virtio: Introduce VIRTIO_LD_CONVERT() macro, Philippe Mathieu-Daudé, 2021/05/18
- [RFC PATCH 19/25] hw/virtio: Use LD_CONVERT macro to emit 16-bit unsigned load/store code, Philippe Mathieu-Daudé, 2021/05/18
- [RFC PATCH 20/25] hw/virtio: Introduce VIRTIO_ST_CONVERT() macro, Philippe Mathieu-Daudé, 2021/05/18
- [RFC PATCH 21/25] hw/virtio: Use ST_CONVERT() macro to emit 16-bit load/store functions, Philippe Mathieu-Daudé, 2021/05/18
- [RFC PATCH 22/25] hw/virtio: Use LDST_CONVERT macro to emit 32-bit load/store functions, Philippe Mathieu-Daudé, 2021/05/18
- [RFC PATCH 24/25] hw/virtio: Add methods for aligned pointer access,
Philippe Mathieu-Daudé <=
- [RFC PATCH 23/25] hw/virtio: Use LDST_CONVERT macro to emit 64-bit load/store functions, Philippe Mathieu-Daudé, 2021/05/18
- [RFC PATCH 25/25] hw/virtio: Optimize accesses on vring aligned pointers, Philippe Mathieu-Daudé, 2021/05/18
- Re: [RFC PATCH 00/25] exec: Add load/store API for aligned pointers, no-reply, 2021/05/18
- Re: [RFC PATCH 00/25] exec: Add load/store API for aligned pointers, Richard Henderson, 2021/05/19