Avi Kivity | acd1c81 | 2010-11-17 11:50:09 +0200 | [diff] [blame] | 1 | #ifndef IORANGE_H |
| 2 | #define IORANGE_H |
| 3 | |
| 4 | #include <stdint.h> |
| 5 | |
| 6 | typedef struct IORange IORange; |
| 7 | typedef struct IORangeOps IORangeOps; |
| 8 | |
| 9 | struct IORangeOps { |
| 10 | void (*read)(IORange *iorange, uint64_t offset, unsigned width, |
| 11 | uint64_t *data); |
| 12 | void (*write)(IORange *iorange, uint64_t offset, unsigned width, |
| 13 | uint64_t data); |
| 14 | }; |
| 15 | |
| 16 | struct IORange { |
| 17 | const IORangeOps *ops; |
| 18 | uint64_t base; |
| 19 | uint64_t len; |
| 20 | }; |
| 21 | |
| 22 | static inline void iorange_init(IORange *iorange, const IORangeOps *ops, |
| 23 | uint64_t base, uint64_t len) |
| 24 | { |
| 25 | iorange->ops = ops; |
| 26 | iorange->base = base; |
| 27 | iorange->len = len; |
| 28 | } |
| 29 | |
| 30 | #endif |