root / iorange.h @ acd1c812
History | View | Annotate | Download (663 Bytes)
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
|