diff options
authorIsaku Yamahata <>2009-07-14 19:10:43 +0900
committerAnthony Liguori <>2009-07-16 17:28:50 -0500
commit07323531c196223293bf266bd4d3811bd24c6e34 (patch)
treea3db2b3e89b33e711b149afe123f6dc9c296081c /ioport.h
parentioport: remove some #ifdef DEBUG_UNUSED_IOPORT. (diff)
ioport: use uint{32, 16, 8}_t for ioport value and pio_addr_t for ioport address.
Using int for cpu_{in, out}[bwl] is inconsistent with other part because for address or value, uintN_t is used by other qemu part. At least, softmmu, CPU{Read, Write}MemoryFunc, pci, target_phys_addr_t and the callers of cpu_{in, out}[bwl](). This patch removes the inconsistency. IO port has its own address space so define pio_addr_t as uint32_t because PCI io space width is 32bit. And use uint{32, 16, 8}_t for ioport value. Changing signedness of value might cause subtle issue. However only a suspicious caller is kvm_handle_io() which is ok. And other callers pass unsigned value in the first place. Signed-off-by: Isaku Yamahata <> Cc: Stuart Brady <> Cc: Anthony Liguori <> Cc: Samuel Thibault <> Cc: Tristan Gingold <> Signed-off-by: Anthony Liguori <>
Diffstat (limited to 'ioport.h')
1 files changed, 12 insertions, 9 deletions
diff --git a/ioport.h b/ioport.h
index 80f67c306..f981e8c47 100644
--- a/ioport.h
+++ b/ioport.h
@@ -26,6 +26,9 @@
#include "qemu-common.h"
+typedef uint32_t pio_addr_t;
+#define FMT_pioaddr PRIx32
#define MAX_IOPORTS (64 * 1024)
@@ -33,22 +36,22 @@
typedef void (IOPortWriteFunc)(void *opaque, uint32_t address, uint32_t data);
typedef uint32_t (IOPortReadFunc)(void *opaque, uint32_t address);
-int register_ioport_read(int start, int length, int size,
+int register_ioport_read(pio_addr_t start, int length, int size,
IOPortReadFunc *func, void *opaque);
-int register_ioport_write(int start, int length, int size,
+int register_ioport_write(pio_addr_t start, int length, int size,
IOPortWriteFunc *func, void *opaque);
-void isa_unassign_ioport(int start, int length);
+void isa_unassign_ioport(pio_addr_t start, int length);
/* NOTE: as these functions may be even used when there is an isa
brige on non x86 targets, we always defined them */
#if !defined(NO_CPU_IO_DEFS) && defined(NEED_CPU_H)
-void cpu_outb(CPUState *env, int addr, int val);
-void cpu_outw(CPUState *env, int addr, int val);
-void cpu_outl(CPUState *env, int addr, int val);
-int cpu_inb(CPUState *env, int addr);
-int cpu_inw(CPUState *env, int addr);
-int cpu_inl(CPUState *env, int addr);
+void cpu_outb(CPUState *env, pio_addr_t addr, uint8_t val);
+void cpu_outw(CPUState *env, pio_addr_t addr, uint16_t val);
+void cpu_outl(CPUState *env, pio_addr_t addr, uint32_t val);
+uint8_t cpu_inb(CPUState *env, pio_addr_t addr);
+uint16_t cpu_inw(CPUState *env, pio_addr_t addr);
+uint32_t cpu_inl(CPUState *env, pio_addr_t addr);
#endif /* IOPORT_H */