kvm: Simplify kvm_handle_io
Now that cpu_in/out is just a wrapper around address_space_rw, we can also call the latter directly. As host endianness == guest endianness, there is no need for the memory access helpers st*_p/ld*_p as well. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
df67696e97
commit
354678c5ce
28
kvm-all.c
28
kvm-all.c
@ -1508,32 +1508,8 @@ static void kvm_handle_io(uint16_t port, void *data, int direction, int size,
|
|||||||
uint8_t *ptr = data;
|
uint8_t *ptr = data;
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
if (direction == KVM_EXIT_IO_IN) {
|
address_space_rw(&address_space_io, port, ptr, size,
|
||||||
switch (size) {
|
direction == KVM_EXIT_IO_OUT);
|
||||||
case 1:
|
|
||||||
stb_p(ptr, cpu_inb(port));
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
stw_p(ptr, cpu_inw(port));
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
stl_p(ptr, cpu_inl(port));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
switch (size) {
|
|
||||||
case 1:
|
|
||||||
cpu_outb(port, ldub_p(ptr));
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
cpu_outw(port, lduw_p(ptr));
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
cpu_outl(port, ldl_p(ptr));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ptr += size;
|
ptr += size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user