root / iorange.h @ eabba580
History | View | Annotate | Download (663 Bytes)
1 | acd1c812 | Avi Kivity | #ifndef IORANGE_H
|
---|---|---|---|
2 | acd1c812 | Avi Kivity | #define IORANGE_H
|
3 | acd1c812 | Avi Kivity | |
4 | acd1c812 | Avi Kivity | #include <stdint.h> |
5 | acd1c812 | Avi Kivity | |
6 | acd1c812 | Avi Kivity | typedef struct IORange IORange; |
7 | acd1c812 | Avi Kivity | typedef struct IORangeOps IORangeOps; |
8 | acd1c812 | Avi Kivity | |
9 | acd1c812 | Avi Kivity | struct IORangeOps {
|
10 | acd1c812 | Avi Kivity | void (*read)(IORange *iorange, uint64_t offset, unsigned width, |
11 | acd1c812 | Avi Kivity | uint64_t *data); |
12 | acd1c812 | Avi Kivity | void (*write)(IORange *iorange, uint64_t offset, unsigned width, |
13 | acd1c812 | Avi Kivity | uint64_t data); |
14 | acd1c812 | Avi Kivity | }; |
15 | acd1c812 | Avi Kivity | |
16 | acd1c812 | Avi Kivity | struct IORange {
|
17 | acd1c812 | Avi Kivity | const IORangeOps *ops;
|
18 | acd1c812 | Avi Kivity | uint64_t base; |
19 | acd1c812 | Avi Kivity | uint64_t len; |
20 | acd1c812 | Avi Kivity | }; |
21 | acd1c812 | Avi Kivity | |
22 | acd1c812 | Avi Kivity | static inline void iorange_init(IORange *iorange, const IORangeOps *ops, |
23 | acd1c812 | Avi Kivity | uint64_t base, uint64_t len) |
24 | acd1c812 | Avi Kivity | { |
25 | acd1c812 | Avi Kivity | iorange->ops = ops; |
26 | acd1c812 | Avi Kivity | iorange->base = base; |
27 | acd1c812 | Avi Kivity | iorange->len = len; |
28 | acd1c812 | Avi Kivity | } |
29 | acd1c812 | Avi Kivity | |
30 | acd1c812 | Avi Kivity | #endif |