root / hw / hw.h @ 818220f5
History | View | Annotate | Download (5.1 kB)
1 | 87ecb68b | pbrook | /* Declarations for use by hardware emulation. */
|
---|---|---|---|
2 | 87ecb68b | pbrook | #ifndef QEMU_HW_H
|
3 | 87ecb68b | pbrook | #define QEMU_HW_H
|
4 | 87ecb68b | pbrook | |
5 | 87ecb68b | pbrook | #include "qemu-common.h" |
6 | 87ecb68b | pbrook | #include "irq.h" |
7 | 87ecb68b | pbrook | |
8 | 87ecb68b | pbrook | /* VM Load/Save */
|
9 | 87ecb68b | pbrook | |
10 | 87ecb68b | pbrook | QEMUFile *qemu_fopen(const char *filename, const char *mode); |
11 | 87ecb68b | pbrook | void qemu_fflush(QEMUFile *f);
|
12 | 87ecb68b | pbrook | void qemu_fclose(QEMUFile *f);
|
13 | 67d8cec3 | blueswir1 | void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, size_t size); |
14 | 67d8cec3 | blueswir1 | void qemu_put_byte(QEMUFile *f, int8_t v);
|
15 | 67d8cec3 | blueswir1 | |
16 | 67d8cec3 | blueswir1 | static inline void qemu_put_ubyte(QEMUFile *f, uint8_t v) |
17 | 67d8cec3 | blueswir1 | { |
18 | 67d8cec3 | blueswir1 | qemu_put_byte(f, (int8_t)v); |
19 | 67d8cec3 | blueswir1 | } |
20 | 67d8cec3 | blueswir1 | |
21 | 67d8cec3 | blueswir1 | #define qemu_put_sbyte qemu_put_byte
|
22 | 67d8cec3 | blueswir1 | |
23 | 67d8cec3 | blueswir1 | void qemu_put_be16(QEMUFile *f, uint16_t v);
|
24 | 67d8cec3 | blueswir1 | void qemu_put_be32(QEMUFile *f, uint32_t v);
|
25 | 87ecb68b | pbrook | void qemu_put_be64(QEMUFile *f, uint64_t v);
|
26 | 67d8cec3 | blueswir1 | size_t qemu_get_buffer(QEMUFile *f, uint8_t *buf, size_t size); |
27 | 67d8cec3 | blueswir1 | int8_t qemu_get_byte(QEMUFile *f); |
28 | 67d8cec3 | blueswir1 | |
29 | 67d8cec3 | blueswir1 | static inline uint8_t qemu_get_ubyte(QEMUFile *f) |
30 | 67d8cec3 | blueswir1 | { |
31 | 67d8cec3 | blueswir1 | return (uint8_t)qemu_get_byte(f);
|
32 | 67d8cec3 | blueswir1 | } |
33 | 67d8cec3 | blueswir1 | |
34 | 67d8cec3 | blueswir1 | #define qemu_get_sbyte qemu_get_byte
|
35 | 67d8cec3 | blueswir1 | |
36 | 67d8cec3 | blueswir1 | uint16_t qemu_get_be16(QEMUFile *f); |
37 | 67d8cec3 | blueswir1 | uint32_t qemu_get_be32(QEMUFile *f); |
38 | 87ecb68b | pbrook | uint64_t qemu_get_be64(QEMUFile *f); |
39 | 87ecb68b | pbrook | |
40 | 87ecb68b | pbrook | static inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv) |
41 | 87ecb68b | pbrook | { |
42 | 87ecb68b | pbrook | qemu_put_be64(f, *pv); |
43 | 87ecb68b | pbrook | } |
44 | 87ecb68b | pbrook | |
45 | 87ecb68b | pbrook | static inline void qemu_put_be32s(QEMUFile *f, const uint32_t *pv) |
46 | 87ecb68b | pbrook | { |
47 | 87ecb68b | pbrook | qemu_put_be32(f, *pv); |
48 | 87ecb68b | pbrook | } |
49 | 87ecb68b | pbrook | |
50 | 87ecb68b | pbrook | static inline void qemu_put_be16s(QEMUFile *f, const uint16_t *pv) |
51 | 87ecb68b | pbrook | { |
52 | 87ecb68b | pbrook | qemu_put_be16(f, *pv); |
53 | 87ecb68b | pbrook | } |
54 | 87ecb68b | pbrook | |
55 | 87ecb68b | pbrook | static inline void qemu_put_8s(QEMUFile *f, const uint8_t *pv) |
56 | 87ecb68b | pbrook | { |
57 | 87ecb68b | pbrook | qemu_put_byte(f, *pv); |
58 | 87ecb68b | pbrook | } |
59 | 87ecb68b | pbrook | |
60 | 87ecb68b | pbrook | static inline void qemu_get_be64s(QEMUFile *f, uint64_t *pv) |
61 | 87ecb68b | pbrook | { |
62 | 87ecb68b | pbrook | *pv = qemu_get_be64(f); |
63 | 87ecb68b | pbrook | } |
64 | 87ecb68b | pbrook | |
65 | 87ecb68b | pbrook | static inline void qemu_get_be32s(QEMUFile *f, uint32_t *pv) |
66 | 87ecb68b | pbrook | { |
67 | 87ecb68b | pbrook | *pv = qemu_get_be32(f); |
68 | 87ecb68b | pbrook | } |
69 | 87ecb68b | pbrook | |
70 | 87ecb68b | pbrook | static inline void qemu_get_be16s(QEMUFile *f, uint16_t *pv) |
71 | 87ecb68b | pbrook | { |
72 | 87ecb68b | pbrook | *pv = qemu_get_be16(f); |
73 | 87ecb68b | pbrook | } |
74 | 87ecb68b | pbrook | |
75 | 87ecb68b | pbrook | static inline void qemu_get_8s(QEMUFile *f, uint8_t *pv) |
76 | 87ecb68b | pbrook | { |
77 | 87ecb68b | pbrook | *pv = qemu_get_byte(f); |
78 | 87ecb68b | pbrook | } |
79 | 87ecb68b | pbrook | |
80 | 67d8cec3 | blueswir1 | // Signed versions for type safety
|
81 | 67d8cec3 | blueswir1 | static inline void qemu_put_sbuffer(QEMUFile *f, const int8_t *buf, size_t size) |
82 | 67d8cec3 | blueswir1 | { |
83 | 67d8cec3 | blueswir1 | qemu_put_buffer(f, (const uint8_t *)buf, size);
|
84 | 67d8cec3 | blueswir1 | } |
85 | 67d8cec3 | blueswir1 | |
86 | 67d8cec3 | blueswir1 | static inline void qemu_put_sbe16(QEMUFile *f, int16_t v) |
87 | 67d8cec3 | blueswir1 | { |
88 | 67d8cec3 | blueswir1 | qemu_put_be16(f, (uint16_t)v); |
89 | 67d8cec3 | blueswir1 | } |
90 | 67d8cec3 | blueswir1 | |
91 | 67d8cec3 | blueswir1 | static inline void qemu_put_sbe32(QEMUFile *f, int32_t v) |
92 | 67d8cec3 | blueswir1 | { |
93 | 67d8cec3 | blueswir1 | qemu_put_be32(f, (uint32_t)v); |
94 | 67d8cec3 | blueswir1 | } |
95 | 67d8cec3 | blueswir1 | |
96 | 67d8cec3 | blueswir1 | static inline void qemu_put_sbe64(QEMUFile *f, int64_t v) |
97 | 67d8cec3 | blueswir1 | { |
98 | 67d8cec3 | blueswir1 | qemu_put_be64(f, (uint64_t)v); |
99 | 67d8cec3 | blueswir1 | } |
100 | 67d8cec3 | blueswir1 | |
101 | 67d8cec3 | blueswir1 | static inline size_t qemu_get_sbuffer(QEMUFile *f, int8_t *buf, size_t size) |
102 | 67d8cec3 | blueswir1 | { |
103 | 67d8cec3 | blueswir1 | return qemu_get_buffer(f, (uint8_t *)buf, size);
|
104 | 67d8cec3 | blueswir1 | } |
105 | 67d8cec3 | blueswir1 | |
106 | 67d8cec3 | blueswir1 | static inline int16_t qemu_get_sbe16(QEMUFile *f) |
107 | 67d8cec3 | blueswir1 | { |
108 | 67d8cec3 | blueswir1 | return (int16_t)qemu_get_be16(f);
|
109 | 67d8cec3 | blueswir1 | } |
110 | 67d8cec3 | blueswir1 | |
111 | 67d8cec3 | blueswir1 | static inline int32_t qemu_get_sbe32(QEMUFile *f) |
112 | 67d8cec3 | blueswir1 | { |
113 | 67d8cec3 | blueswir1 | return (int32_t)qemu_get_be32(f);
|
114 | 67d8cec3 | blueswir1 | } |
115 | 67d8cec3 | blueswir1 | |
116 | 67d8cec3 | blueswir1 | static inline int64_t qemu_get_sbe64(QEMUFile *f) |
117 | 67d8cec3 | blueswir1 | { |
118 | 67d8cec3 | blueswir1 | return (int64_t)qemu_get_be64(f);
|
119 | 67d8cec3 | blueswir1 | } |
120 | 67d8cec3 | blueswir1 | |
121 | 67d8cec3 | blueswir1 | static inline void qemu_put_s8s(QEMUFile *f, const int8_t *pv) |
122 | 67d8cec3 | blueswir1 | { |
123 | 67d8cec3 | blueswir1 | qemu_put_8s(f, (const uint8_t *)pv);
|
124 | 67d8cec3 | blueswir1 | } |
125 | 67d8cec3 | blueswir1 | |
126 | 67d8cec3 | blueswir1 | static inline void qemu_put_sbe16s(QEMUFile *f, const int16_t *pv) |
127 | 67d8cec3 | blueswir1 | { |
128 | 67d8cec3 | blueswir1 | qemu_put_be16s(f, (const uint16_t *)pv);
|
129 | 67d8cec3 | blueswir1 | } |
130 | 67d8cec3 | blueswir1 | |
131 | 67d8cec3 | blueswir1 | static inline void qemu_put_sbe32s(QEMUFile *f, const int32_t *pv) |
132 | 67d8cec3 | blueswir1 | { |
133 | 67d8cec3 | blueswir1 | qemu_put_be32s(f, (const uint32_t *)pv);
|
134 | 67d8cec3 | blueswir1 | } |
135 | 67d8cec3 | blueswir1 | |
136 | 67d8cec3 | blueswir1 | static inline void qemu_put_sbe64s(QEMUFile *f, const int64_t *pv) |
137 | 67d8cec3 | blueswir1 | { |
138 | 67d8cec3 | blueswir1 | qemu_put_be64s(f, (const uint64_t *)pv);
|
139 | 67d8cec3 | blueswir1 | } |
140 | 67d8cec3 | blueswir1 | |
141 | 67d8cec3 | blueswir1 | static inline void qemu_get_s8s(QEMUFile *f, int8_t *pv) |
142 | 67d8cec3 | blueswir1 | { |
143 | 67d8cec3 | blueswir1 | qemu_get_8s(f, (uint8_t *)pv); |
144 | 67d8cec3 | blueswir1 | } |
145 | 67d8cec3 | blueswir1 | |
146 | 67d8cec3 | blueswir1 | static inline void qemu_get_sbe16s(QEMUFile *f, int16_t *pv) |
147 | 67d8cec3 | blueswir1 | { |
148 | 67d8cec3 | blueswir1 | qemu_get_be16s(f, (uint16_t *)pv); |
149 | 67d8cec3 | blueswir1 | } |
150 | 67d8cec3 | blueswir1 | |
151 | 67d8cec3 | blueswir1 | static inline void qemu_get_sbe32s(QEMUFile *f, int32_t *pv) |
152 | 67d8cec3 | blueswir1 | { |
153 | 67d8cec3 | blueswir1 | qemu_get_be32s(f, (uint32_t *)pv); |
154 | 67d8cec3 | blueswir1 | } |
155 | 67d8cec3 | blueswir1 | |
156 | 67d8cec3 | blueswir1 | static inline void qemu_get_sbe64s(QEMUFile *f, int64_t *pv) |
157 | 67d8cec3 | blueswir1 | { |
158 | 67d8cec3 | blueswir1 | qemu_get_be64s(f, (uint64_t *)pv); |
159 | 67d8cec3 | blueswir1 | } |
160 | 67d8cec3 | blueswir1 | |
161 | 87ecb68b | pbrook | #ifdef NEED_CPU_H
|
162 | 87ecb68b | pbrook | #if TARGET_LONG_BITS == 64 |
163 | 87ecb68b | pbrook | #define qemu_put_betl qemu_put_be64
|
164 | 87ecb68b | pbrook | #define qemu_get_betl qemu_get_be64
|
165 | 87ecb68b | pbrook | #define qemu_put_betls qemu_put_be64s
|
166 | 87ecb68b | pbrook | #define qemu_get_betls qemu_get_be64s
|
167 | 67d8cec3 | blueswir1 | #define qemu_put_sbetl qemu_put_sbe64
|
168 | 67d8cec3 | blueswir1 | #define qemu_get_sbetl qemu_get_sbe64
|
169 | 67d8cec3 | blueswir1 | #define qemu_put_sbetls qemu_put_sbe64s
|
170 | 67d8cec3 | blueswir1 | #define qemu_get_sbetls qemu_get_sbe64s
|
171 | 87ecb68b | pbrook | #else
|
172 | 87ecb68b | pbrook | #define qemu_put_betl qemu_put_be32
|
173 | 87ecb68b | pbrook | #define qemu_get_betl qemu_get_be32
|
174 | 87ecb68b | pbrook | #define qemu_put_betls qemu_put_be32s
|
175 | 87ecb68b | pbrook | #define qemu_get_betls qemu_get_be32s
|
176 | 67d8cec3 | blueswir1 | #define qemu_put_sbetl qemu_put_sbe32
|
177 | 67d8cec3 | blueswir1 | #define qemu_get_sbetl qemu_get_sbe32
|
178 | 67d8cec3 | blueswir1 | #define qemu_put_sbetls qemu_put_sbe32s
|
179 | 67d8cec3 | blueswir1 | #define qemu_get_sbetls qemu_get_sbe32s
|
180 | 87ecb68b | pbrook | #endif
|
181 | 87ecb68b | pbrook | #endif
|
182 | 87ecb68b | pbrook | |
183 | 87ecb68b | pbrook | int64_t qemu_ftell(QEMUFile *f); |
184 | 87ecb68b | pbrook | int64_t qemu_fseek(QEMUFile *f, int64_t pos, int whence);
|
185 | 87ecb68b | pbrook | |
186 | 87ecb68b | pbrook | typedef void SaveStateHandler(QEMUFile *f, void *opaque); |
187 | 87ecb68b | pbrook | typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id); |
188 | 87ecb68b | pbrook | |
189 | 87ecb68b | pbrook | int register_savevm(const char *idstr, |
190 | 87ecb68b | pbrook | int instance_id,
|
191 | 87ecb68b | pbrook | int version_id,
|
192 | 87ecb68b | pbrook | SaveStateHandler *save_state, |
193 | 87ecb68b | pbrook | LoadStateHandler *load_state, |
194 | 87ecb68b | pbrook | void *opaque);
|
195 | 87ecb68b | pbrook | |
196 | 87ecb68b | pbrook | typedef void QEMUResetHandler(void *opaque); |
197 | 87ecb68b | pbrook | |
198 | 87ecb68b | pbrook | void qemu_register_reset(QEMUResetHandler *func, void *opaque); |
199 | 87ecb68b | pbrook | |
200 | 0ecdffbb | aurel32 | /* handler to set the boot_device for a specific type of QEMUMachine */
|
201 | 0ecdffbb | aurel32 | /* return 0 if success */
|
202 | 3b4366de | blueswir1 | typedef int QEMUBootSetHandler(void *opaque, const char *boot_device); |
203 | 3b4366de | blueswir1 | void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque); |
204 | 0ecdffbb | aurel32 | |
205 | 87ecb68b | pbrook | /* These should really be in isa.h, but are here to make pc.h happy. */
|
206 | 87ecb68b | pbrook | typedef void (IOPortWriteFunc)(void *opaque, uint32_t address, uint32_t data); |
207 | 87ecb68b | pbrook | typedef uint32_t (IOPortReadFunc)(void *opaque, uint32_t address); |
208 | 87ecb68b | pbrook | |
209 | 87ecb68b | pbrook | #endif |