Statistics
| Branch: | Revision:

root / rwhandler.h @ a74cdab4

History | View | Annotate | Download (981 Bytes)

1 049f7adb Michael S. Tsirkin
#ifndef READ_WRITE_HANDLER_H
2 049f7adb Michael S. Tsirkin
#define READ_WRITE_HANDLER_H
3 049f7adb Michael S. Tsirkin
4 049f7adb Michael S. Tsirkin
#include "qemu-common.h"
5 049f7adb Michael S. Tsirkin
#include "ioport.h"
6 049f7adb Michael S. Tsirkin
7 049f7adb Michael S. Tsirkin
typedef struct ReadWriteHandler ReadWriteHandler;
8 049f7adb Michael S. Tsirkin
9 049f7adb Michael S. Tsirkin
/* len is guaranteed to be one of 1, 2 or 4, addr is guaranteed to fit in an
10 049f7adb Michael S. Tsirkin
 * appropriate type (io/memory/etc). They do not need to be range checked. */
11 049f7adb Michael S. Tsirkin
typedef void WriteHandlerFunc(ReadWriteHandler *, pcibus_t addr,
12 049f7adb Michael S. Tsirkin
                              uint32_t value, int len);
13 049f7adb Michael S. Tsirkin
typedef uint32_t ReadHandlerFunc(ReadWriteHandler *, pcibus_t addr, int len);
14 049f7adb Michael S. Tsirkin
15 049f7adb Michael S. Tsirkin
struct ReadWriteHandler {
16 049f7adb Michael S. Tsirkin
    WriteHandlerFunc *write;
17 049f7adb Michael S. Tsirkin
    ReadHandlerFunc *read;
18 049f7adb Michael S. Tsirkin
};
19 049f7adb Michael S. Tsirkin
20 049f7adb Michael S. Tsirkin
/* Helpers for when we want to use a single routine with length. */
21 049f7adb Michael S. Tsirkin
/* CPU memory handler: both read and write must be present. */
22 6bef0436 Alexander Graf
int cpu_register_io_memory_simple(ReadWriteHandler *, int endian);
23 049f7adb Michael S. Tsirkin
/* io port handler: can supply only read or write handlers. */
24 049f7adb Michael S. Tsirkin
int register_ioport_simple(ReadWriteHandler *,
25 049f7adb Michael S. Tsirkin
                           pio_addr_t start, int length, int size);
26 049f7adb Michael S. Tsirkin
27 049f7adb Michael S. Tsirkin
#endif