[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH 22/25] hw/virtio: Use LDST_CONVERT macro to emit 32-bit load/
From: |
Philippe Mathieu-Daudé |
Subject: |
[RFC PATCH 22/25] hw/virtio: Use LDST_CONVERT macro to emit 32-bit load/store functions |
Date: |
Tue, 18 May 2021 20:36:52 +0200 |
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
include/hw/virtio/virtio-access.h | 66 +++----------------------------
1 file changed, 5 insertions(+), 61 deletions(-)
diff --git a/include/hw/virtio/virtio-access.h
b/include/hw/virtio/virtio-access.h
index 4341af9cb0f..0df52d190dc 100644
--- a/include/hw/virtio/virtio-access.h
+++ b/include/hw/virtio/virtio-access.h
@@ -100,18 +100,13 @@ static inline void virtio_st ## size ##
_phys_cached(VirtIODevice *vdev,\
}\
}
+#define VIRTIO_LDST_CONVERT(size, rtype, vtype)\
+ VIRTIO_LD_CONVERT(size, rtype)\
+ VIRTIO_ST_CONVERT(size, vtype)
+
VIRTIO_LD_CONVERT(uw, uint16_t)
VIRTIO_ST_CONVERT(w, uint16_t)
-
-static inline uint32_t virtio_ldl_phys(VirtIODevice *vdev, hwaddr pa)
-{
- AddressSpace *dma_as = vdev->dma_as;
-
- if (virtio_access_is_big_endian(vdev)) {
- return ldl_be_phys(dma_as, pa);
- }
- return ldl_le_phys(dma_as, pa);
-}
+VIRTIO_LDST_CONVERT(l, int, uint32_t)
static inline uint64_t virtio_ldq_phys(VirtIODevice *vdev, hwaddr pa)
{
@@ -123,27 +118,6 @@ static inline uint64_t virtio_ldq_phys(VirtIODevice *vdev,
hwaddr pa)
return ldq_le_phys(dma_as, pa);
}
-static inline void virtio_stl_phys(VirtIODevice *vdev, hwaddr pa,
- uint32_t value)
-{
- AddressSpace *dma_as = vdev->dma_as;
-
- if (virtio_access_is_big_endian(vdev)) {
- stl_be_phys(dma_as, pa, value);
- } else {
- stl_le_phys(dma_as, pa, value);
- }
-}
-
-static inline void virtio_stl_p(VirtIODevice *vdev, void *ptr, uint32_t v)
-{
- if (virtio_access_is_big_endian(vdev)) {
- stl_be_p(ptr, v);
- } else {
- stl_le_p(ptr, v);
- }
-}
-
static inline void virtio_stq_p(VirtIODevice *vdev, void *ptr, uint64_t v)
{
if (virtio_access_is_big_endian(vdev)) {
@@ -153,15 +127,6 @@ static inline void virtio_stq_p(VirtIODevice *vdev, void
*ptr, uint64_t v)
}
}
-static inline uint32_t virtio_ldl_p(VirtIODevice *vdev, const void *ptr)
-{
- if (virtio_access_is_big_endian(vdev)) {
- return ldl_be_p(ptr);
- } else {
- return ldl_le_p(ptr);
- }
-}
-
static inline uint64_t virtio_ldq_p(VirtIODevice *vdev, const void *ptr)
{
if (virtio_access_is_big_endian(vdev)) {
@@ -180,16 +145,6 @@ static inline uint16_t virtio_tswap16(VirtIODevice *vdev,
uint16_t s)
#endif
}
-static inline uint32_t virtio_ldl_phys_cached(VirtIODevice *vdev,
- MemoryRegionCache *cache,
- hwaddr pa)
-{
- if (virtio_access_is_big_endian(vdev)) {
- return ldl_be_phys_cached(cache, pa);
- }
- return ldl_le_phys_cached(cache, pa);
-}
-
static inline uint64_t virtio_ldq_phys_cached(VirtIODevice *vdev,
MemoryRegionCache *cache,
hwaddr pa)
@@ -200,17 +155,6 @@ static inline uint64_t virtio_ldq_phys_cached(VirtIODevice
*vdev,
return ldq_le_phys_cached(cache, pa);
}
-static inline void virtio_stl_phys_cached(VirtIODevice *vdev,
- MemoryRegionCache *cache,
- hwaddr pa, uint32_t value)
-{
- if (virtio_access_is_big_endian(vdev)) {
- stl_be_phys_cached(cache, pa, value);
- } else {
- stl_le_phys_cached(cache, pa, value);
- }
-}
-
static inline void virtio_tswap16s(VirtIODevice *vdev, uint16_t *s)
{
*s = virtio_tswap16(vdev, *s);
--
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é <=
[RFC PATCH 24/25] hw/virtio: Add methods for aligned pointer access, Philippe Mathieu-Daudé, 2021/05/18
[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