[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 1/9] exec: Map device_endian onto MemOp
From: |
Tony Nguyen |
Subject: |
[Qemu-devel] [PATCH 1/9] exec: Map device_endian onto MemOp |
Date: |
Sat, 24 Aug 2019 05:42:40 +1000 |
Preparation to replace device_endian with MemOp.
Mapping device_endian onto MemOp limits behaviour changes to this
relatively smaller patch.
The next patch will replace all device_endian usages with the
equivalent MemOp. That patch will be large but have no behaviour
changes.
A subsequent patch will then delete unused device_endian.
Signed-off-by: Tony Nguyen <address@hidden>
Reviewed-by: Richard Henderson <address@hidden>
---
hw/char/serial.c | 18 ++++++------------
include/exec/cpu-common.h | 10 +++++++---
memory.c | 1 -
3 files changed, 13 insertions(+), 16 deletions(-)
diff --git a/hw/char/serial.c b/hw/char/serial.c
index b4aa250950..6328476f52 100644
--- a/hw/char/serial.c
+++ b/hw/char/serial.c
@@ -1016,22 +1016,15 @@ static void serial_mm_write(void *opaque, hwaddr addr,
serial_ioport_write(s, addr >> s->it_shift, value, 1);
}
-static const MemoryRegionOps serial_mm_ops[3] = {
- [DEVICE_NATIVE_ENDIAN] = {
- .read = serial_mm_read,
- .write = serial_mm_write,
- .endianness = DEVICE_NATIVE_ENDIAN,
- .valid.max_access_size = 8,
- .impl.max_access_size = 8,
- },
- [DEVICE_LITTLE_ENDIAN] = {
+static const MemoryRegionOps serial_mm_ops[2] = {
+ [0] = {
.read = serial_mm_read,
.write = serial_mm_write,
.endianness = DEVICE_LITTLE_ENDIAN,
.valid.max_access_size = 8,
.impl.max_access_size = 8,
},
- [DEVICE_BIG_ENDIAN] = {
+ [1] = {
.read = serial_mm_read,
.write = serial_mm_write,
.endianness = DEVICE_BIG_ENDIAN,
@@ -1057,8 +1050,9 @@ SerialState *serial_mm_init(MemoryRegion *address_space,
serial_realize_core(s, &error_fatal);
vmstate_register(NULL, base, &vmstate_serial, s);
- memory_region_init_io(&s->io, NULL, &serial_mm_ops[end], s,
- "serial", 8 << it_shift);
+ memory_region_init_io(&s->io, NULL,
+ &serial_mm_ops[end == DEVICE_BIG_ENDIAN],
+ s, "serial", 8 << it_shift);
memory_region_add_subregion(address_space, base, &s->io);
return s;
}
diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
index f7dbe75fbc..c388453ed7 100644
--- a/include/exec/cpu-common.h
+++ b/include/exec/cpu-common.h
@@ -16,10 +16,14 @@ void tcg_flush_softmmu_tlb(CPUState *cs);
#if !defined(CONFIG_USER_ONLY)
+#include "exec/memop.h"
+
enum device_endian {
- DEVICE_NATIVE_ENDIAN,
- DEVICE_BIG_ENDIAN,
- DEVICE_LITTLE_ENDIAN,
+#ifdef NEED_CPU_H
+ DEVICE_NATIVE_ENDIAN = MO_TE,
+#endif
+ DEVICE_BIG_ENDIAN = MO_BE,
+ DEVICE_LITTLE_ENDIAN = MO_LE,
};
#if defined(HOST_WORDS_BIGENDIAN)
diff --git a/memory.c b/memory.c
index 11a9b08060..f30ce520c9 100644
--- a/memory.c
+++ b/memory.c
@@ -3283,7 +3283,6 @@ MemOp devend_memop(enum device_endian end)
switch (end) {
case DEVICE_LITTLE_ENDIAN:
case DEVICE_BIG_ENDIAN:
- case DEVICE_NATIVE_ENDIAN:
return conv[end];
default:
g_assert_not_reached();
--
2.23.0
- [Qemu-devel] [PATCH 0/9] Delete enum device_endian, Tony Nguyen, 2019/08/23
- [Qemu-devel] [PATCH 1/9] exec: Map device_endian onto MemOp,
Tony Nguyen <=
- [Qemu-devel] [PATCH 2/9] exec: Replace DEVICE_NATIVE_ENDIAN with MO_TE, Tony Nguyen, 2019/08/23
- [Qemu-devel] [PATCH 4/9] exec: Replace DEVICE_BIG_ENDIAN with MO_BE, Tony Nguyen, 2019/08/23
- [Qemu-devel] [PATCH 5/9] exec: Replace enum device_endian with MemOp, Tony Nguyen, 2019/08/23
- [Qemu-devel] [PATCH 6/9] memory: Delete devend_memop, Tony Nguyen, 2019/08/23
- [Qemu-devel] [PATCH 7/9] exec: Delete device_endian, Tony Nguyen, 2019/08/23
- [Qemu-devel] [PATCH 8/9] exec: Delete DEVICE_HOST_ENDIAN, Tony Nguyen, 2019/08/23
- [Qemu-devel] [PATCH 3/9] exec: Replace DEVICE_LITTLE_ENDIAN with MO_LE, Tony Nguyen, 2019/08/23
- [Qemu-devel] [PATCH 9/9] memory: Delete memory_region_big_endian, Tony Nguyen, 2019/08/23