Am 08.09.22 um 13:15 schrieb Michael S. Tsirkin:
On Thu, Sep 08, 2022 at 02:11:28PM +0400, Marc-André Lureau wrote:
Hi
On Wed, Sep 7, 2022 at 2:03 AM Arwed Meyer <arwed.me...@gmx.de> wrote:
Unaligned i/o access on serial UART works on real PCs.
This is used for example by FreeDOS CTMouse driver. Without this it
can't reset and detect serial mice.
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/77
Signed-off-by: Arwed Meyer <arwed.me...@gmx.de>
---
hw/char/serial.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/hw/char/serial.c b/hw/char/serial.c
index 7061aacbce..41b5e61977 100644
--- a/hw/char/serial.c
+++ b/hw/char/serial.c
@@ -961,6 +961,9 @@ void serial_set_frequency(SerialState *s, uint32_t
frequency)
const MemoryRegionOps serial_io_ops = {
.read = serial_ioport_read,
.write = serial_ioport_write,
+ .valid = {
+ .unaligned = 1,
+ },
I don't get how this can help if both min_access_size & max_access_size are 1.
.impl = {
.min_access_size = 1,
.max_access_size = 1,
--
2.34.1
Because that's .impl. If access is invalid we don't get as far
as breaking it up to chunks.
--
Marc-André Lureau
Exactly. Not really knowing the serial/chardev code much it took me a
while to figure out why calling FreeDOS CTMouse/protocol.com would never
execute the ioctl mouse reset code in msmouse.c.