Statistics
| Branch: | Revision:

root / vl.h @ 480c1cdb

History | View | Annotate | Download (35.5 kB)

1 fc01f7e7 bellard
/*
2 fc01f7e7 bellard
 * QEMU System Emulator header
3 fc01f7e7 bellard
 * 
4 fc01f7e7 bellard
 * Copyright (c) 2003 Fabrice Bellard
5 fc01f7e7 bellard
 * 
6 fc01f7e7 bellard
 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 fc01f7e7 bellard
 * of this software and associated documentation files (the "Software"), to deal
8 fc01f7e7 bellard
 * in the Software without restriction, including without limitation the rights
9 fc01f7e7 bellard
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 fc01f7e7 bellard
 * copies of the Software, and to permit persons to whom the Software is
11 fc01f7e7 bellard
 * furnished to do so, subject to the following conditions:
12 fc01f7e7 bellard
 *
13 fc01f7e7 bellard
 * The above copyright notice and this permission notice shall be included in
14 fc01f7e7 bellard
 * all copies or substantial portions of the Software.
15 fc01f7e7 bellard
 *
16 fc01f7e7 bellard
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 fc01f7e7 bellard
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 fc01f7e7 bellard
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 fc01f7e7 bellard
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 fc01f7e7 bellard
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 fc01f7e7 bellard
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 fc01f7e7 bellard
 * THE SOFTWARE.
23 fc01f7e7 bellard
 */
24 fc01f7e7 bellard
#ifndef VL_H
25 fc01f7e7 bellard
#define VL_H
26 fc01f7e7 bellard
27 67b915a5 bellard
/* we put basic includes here to avoid repeating them in device drivers */
28 67b915a5 bellard
#include <stdlib.h>
29 67b915a5 bellard
#include <stdio.h>
30 67b915a5 bellard
#include <stdarg.h>
31 67b915a5 bellard
#include <string.h>
32 67b915a5 bellard
#include <inttypes.h>
33 85571bc7 bellard
#include <limits.h>
34 8a7ddc38 bellard
#include <time.h>
35 67b915a5 bellard
#include <ctype.h>
36 67b915a5 bellard
#include <errno.h>
37 67b915a5 bellard
#include <unistd.h>
38 67b915a5 bellard
#include <fcntl.h>
39 7d3505c5 bellard
#include <sys/stat.h>
40 fb065187 bellard
#include "audio/audio.h"
41 67b915a5 bellard
42 67b915a5 bellard
#ifndef O_LARGEFILE
43 67b915a5 bellard
#define O_LARGEFILE 0
44 67b915a5 bellard
#endif
45 40c3bac3 bellard
#ifndef O_BINARY
46 40c3bac3 bellard
#define O_BINARY 0
47 40c3bac3 bellard
#endif
48 67b915a5 bellard
49 67b915a5 bellard
#ifdef _WIN32
50 ac62f715 pbrook
#define fsync _commit
51 57d1a2b6 bellard
#define lseek _lseeki64
52 57d1a2b6 bellard
#define ENOTSUP 4096
53 57d1a2b6 bellard
/* XXX: find 64 bit version */
54 57d1a2b6 bellard
#define ftruncate chsize
55 57d1a2b6 bellard
56 57d1a2b6 bellard
static inline char *realpath(const char *path, char *resolved_path)
57 57d1a2b6 bellard
{
58 57d1a2b6 bellard
    _fullpath(resolved_path, path, _MAX_PATH);
59 57d1a2b6 bellard
    return resolved_path;
60 57d1a2b6 bellard
}
61 ec3757de bellard
62 ec3757de bellard
#define PRId64 "I64d"
63 67b915a5 bellard
#endif
64 8a7ddc38 bellard
65 ea2384d3 bellard
#ifdef QEMU_TOOL
66 ea2384d3 bellard
67 ea2384d3 bellard
/* we use QEMU_TOOL in the command line tools which do not depend on
68 ea2384d3 bellard
   the target CPU type */
69 ea2384d3 bellard
#include "config-host.h"
70 ea2384d3 bellard
#include <setjmp.h>
71 ea2384d3 bellard
#include "osdep.h"
72 ea2384d3 bellard
#include "bswap.h"
73 ea2384d3 bellard
74 ea2384d3 bellard
#else
75 ea2384d3 bellard
76 16f62432 bellard
#include "cpu.h"
77 1fddef4b bellard
#include "gdbstub.h"
78 16f62432 bellard
79 ea2384d3 bellard
#endif /* !defined(QEMU_TOOL) */
80 ea2384d3 bellard
81 67b915a5 bellard
#ifndef glue
82 67b915a5 bellard
#define xglue(x, y) x ## y
83 67b915a5 bellard
#define glue(x, y) xglue(x, y)
84 67b915a5 bellard
#define stringify(s)        tostring(s)
85 67b915a5 bellard
#define tostring(s)        #s
86 67b915a5 bellard
#endif
87 67b915a5 bellard
88 24236869 bellard
#ifndef MIN
89 24236869 bellard
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
90 24236869 bellard
#endif
91 24236869 bellard
#ifndef MAX
92 24236869 bellard
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
93 24236869 bellard
#endif
94 24236869 bellard
95 33e3963e bellard
/* vl.c */
96 80cabfad bellard
uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c);
97 313aa567 bellard
98 80cabfad bellard
void hw_error(const char *fmt, ...);
99 80cabfad bellard
100 80cabfad bellard
extern const char *bios_dir;
101 80cabfad bellard
102 80cabfad bellard
void pstrcpy(char *buf, int buf_size, const char *str);
103 80cabfad bellard
char *pstrcat(char *buf, int buf_size, const char *s);
104 82c643ff bellard
int strstart(const char *str, const char *val, const char **ptr);
105 c4b1fcc0 bellard
106 8a7ddc38 bellard
extern int vm_running;
107 8a7ddc38 bellard
108 0bd48850 bellard
typedef struct vm_change_state_entry VMChangeStateEntry;
109 0bd48850 bellard
typedef void VMChangeStateHandler(void *opaque, int running);
110 8a7ddc38 bellard
typedef void VMStopHandler(void *opaque, int reason);
111 8a7ddc38 bellard
112 0bd48850 bellard
VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler *cb,
113 0bd48850 bellard
                                                     void *opaque);
114 0bd48850 bellard
void qemu_del_vm_change_state_handler(VMChangeStateEntry *e);
115 0bd48850 bellard
116 8a7ddc38 bellard
int qemu_add_vm_stop_handler(VMStopHandler *cb, void *opaque);
117 8a7ddc38 bellard
void qemu_del_vm_stop_handler(VMStopHandler *cb, void *opaque);
118 8a7ddc38 bellard
119 8a7ddc38 bellard
void vm_start(void);
120 8a7ddc38 bellard
void vm_stop(int reason);
121 8a7ddc38 bellard
122 bb0c6722 bellard
typedef void QEMUResetHandler(void *opaque);
123 bb0c6722 bellard
124 bb0c6722 bellard
void qemu_register_reset(QEMUResetHandler *func, void *opaque);
125 bb0c6722 bellard
void qemu_system_reset_request(void);
126 bb0c6722 bellard
void qemu_system_shutdown_request(void);
127 3475187d bellard
void qemu_system_powerdown_request(void);
128 3475187d bellard
#if !defined(TARGET_SPARC)
129 3475187d bellard
// Please implement a power failure function to signal the OS
130 3475187d bellard
#define qemu_system_powerdown() do{}while(0)
131 3475187d bellard
#else
132 3475187d bellard
void qemu_system_powerdown(void);
133 3475187d bellard
#endif
134 bb0c6722 bellard
135 ea2384d3 bellard
void main_loop_wait(int timeout);
136 ea2384d3 bellard
137 0ced6589 bellard
extern int ram_size;
138 0ced6589 bellard
extern int bios_size;
139 ee22c2f7 bellard
extern int rtc_utc;
140 1f04275e bellard
extern int cirrus_vga_enabled;
141 28b9b5af bellard
extern int graphic_width;
142 28b9b5af bellard
extern int graphic_height;
143 28b9b5af bellard
extern int graphic_depth;
144 3d11d0eb bellard
extern const char *keyboard_layout;
145 d993e026 bellard
extern int kqemu_allowed;
146 a09db21f bellard
extern int win2k_install_hack;
147 bb36d470 bellard
extern int usb_enabled;
148 6a00d601 bellard
extern int smp_cpus;
149 0ced6589 bellard
150 0ced6589 bellard
/* XXX: make it dynamic */
151 75956cf0 pbrook
#if defined (TARGET_PPC) || defined (TARGET_SPARC64)
152 d5295253 bellard
#define BIOS_SIZE ((512 + 32) * 1024)
153 6af0bf9c bellard
#elif defined(TARGET_MIPS)
154 6af0bf9c bellard
#define BIOS_SIZE (128 * 1024)
155 0ced6589 bellard
#else
156 7587cf44 bellard
#define BIOS_SIZE ((256 + 64) * 1024)
157 0ced6589 bellard
#endif
158 aaaa7df6 bellard
159 63066f4f bellard
/* keyboard/mouse support */
160 63066f4f bellard
161 63066f4f bellard
#define MOUSE_EVENT_LBUTTON 0x01
162 63066f4f bellard
#define MOUSE_EVENT_RBUTTON 0x02
163 63066f4f bellard
#define MOUSE_EVENT_MBUTTON 0x04
164 63066f4f bellard
165 63066f4f bellard
typedef void QEMUPutKBDEvent(void *opaque, int keycode);
166 63066f4f bellard
typedef void QEMUPutMouseEvent(void *opaque, int dx, int dy, int dz, int buttons_state);
167 63066f4f bellard
168 63066f4f bellard
void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque);
169 09b26c5e bellard
void qemu_add_mouse_event_handler(QEMUPutMouseEvent *func, void *opaque, int absolute);
170 63066f4f bellard
171 63066f4f bellard
void kbd_put_keycode(int keycode);
172 63066f4f bellard
void kbd_mouse_event(int dx, int dy, int dz, int buttons_state);
173 09b26c5e bellard
int kbd_mouse_is_absolute(void);
174 63066f4f bellard
175 82c643ff bellard
/* keysym is a unicode code except for special keys (see QEMU_KEY_xxx
176 82c643ff bellard
   constants) */
177 82c643ff bellard
#define QEMU_KEY_ESC1(c) ((c) | 0xe100)
178 82c643ff bellard
#define QEMU_KEY_BACKSPACE  0x007f
179 82c643ff bellard
#define QEMU_KEY_UP         QEMU_KEY_ESC1('A')
180 82c643ff bellard
#define QEMU_KEY_DOWN       QEMU_KEY_ESC1('B')
181 82c643ff bellard
#define QEMU_KEY_RIGHT      QEMU_KEY_ESC1('C')
182 82c643ff bellard
#define QEMU_KEY_LEFT       QEMU_KEY_ESC1('D')
183 82c643ff bellard
#define QEMU_KEY_HOME       QEMU_KEY_ESC1(1)
184 82c643ff bellard
#define QEMU_KEY_END        QEMU_KEY_ESC1(4)
185 82c643ff bellard
#define QEMU_KEY_PAGEUP     QEMU_KEY_ESC1(5)
186 82c643ff bellard
#define QEMU_KEY_PAGEDOWN   QEMU_KEY_ESC1(6)
187 82c643ff bellard
#define QEMU_KEY_DELETE     QEMU_KEY_ESC1(3)
188 82c643ff bellard
189 82c643ff bellard
#define QEMU_KEY_CTRL_UP         0xe400
190 82c643ff bellard
#define QEMU_KEY_CTRL_DOWN       0xe401
191 82c643ff bellard
#define QEMU_KEY_CTRL_LEFT       0xe402
192 82c643ff bellard
#define QEMU_KEY_CTRL_RIGHT      0xe403
193 82c643ff bellard
#define QEMU_KEY_CTRL_HOME       0xe404
194 82c643ff bellard
#define QEMU_KEY_CTRL_END        0xe405
195 82c643ff bellard
#define QEMU_KEY_CTRL_PAGEUP     0xe406
196 82c643ff bellard
#define QEMU_KEY_CTRL_PAGEDOWN   0xe407
197 82c643ff bellard
198 82c643ff bellard
void kbd_put_keysym(int keysym);
199 82c643ff bellard
200 c20709aa bellard
/* async I/O support */
201 c20709aa bellard
202 c20709aa bellard
typedef void IOReadHandler(void *opaque, const uint8_t *buf, int size);
203 c20709aa bellard
typedef int IOCanRWHandler(void *opaque);
204 7c9d8e07 bellard
typedef void IOHandler(void *opaque);
205 c20709aa bellard
206 7c9d8e07 bellard
int qemu_set_fd_handler2(int fd, 
207 7c9d8e07 bellard
                         IOCanRWHandler *fd_read_poll, 
208 7c9d8e07 bellard
                         IOHandler *fd_read, 
209 7c9d8e07 bellard
                         IOHandler *fd_write, 
210 7c9d8e07 bellard
                         void *opaque);
211 7c9d8e07 bellard
int qemu_set_fd_handler(int fd,
212 7c9d8e07 bellard
                        IOHandler *fd_read, 
213 7c9d8e07 bellard
                        IOHandler *fd_write,
214 7c9d8e07 bellard
                        void *opaque);
215 c20709aa bellard
216 f331110f bellard
/* Polling handling */
217 f331110f bellard
218 f331110f bellard
/* return TRUE if no sleep should be done afterwards */
219 f331110f bellard
typedef int PollingFunc(void *opaque);
220 f331110f bellard
221 f331110f bellard
int qemu_add_polling_cb(PollingFunc *func, void *opaque);
222 f331110f bellard
void qemu_del_polling_cb(PollingFunc *func, void *opaque);
223 f331110f bellard
224 82c643ff bellard
/* character device */
225 82c643ff bellard
226 82c643ff bellard
#define CHR_EVENT_BREAK 0 /* serial break char */
227 ea2384d3 bellard
#define CHR_EVENT_FOCUS 1 /* focus to this terminal (modal input needed) */
228 82c643ff bellard
229 2122c51a bellard
230 2122c51a bellard
231 2122c51a bellard
#define CHR_IOCTL_SERIAL_SET_PARAMS   1
232 2122c51a bellard
typedef struct {
233 2122c51a bellard
    int speed;
234 2122c51a bellard
    int parity;
235 2122c51a bellard
    int data_bits;
236 2122c51a bellard
    int stop_bits;
237 2122c51a bellard
} QEMUSerialSetParams;
238 2122c51a bellard
239 2122c51a bellard
#define CHR_IOCTL_SERIAL_SET_BREAK    2
240 2122c51a bellard
241 2122c51a bellard
#define CHR_IOCTL_PP_READ_DATA        3
242 2122c51a bellard
#define CHR_IOCTL_PP_WRITE_DATA       4
243 2122c51a bellard
#define CHR_IOCTL_PP_READ_CONTROL     5
244 2122c51a bellard
#define CHR_IOCTL_PP_WRITE_CONTROL    6
245 2122c51a bellard
#define CHR_IOCTL_PP_READ_STATUS      7
246 2122c51a bellard
247 82c643ff bellard
typedef void IOEventHandler(void *opaque, int event);
248 82c643ff bellard
249 82c643ff bellard
typedef struct CharDriverState {
250 82c643ff bellard
    int (*chr_write)(struct CharDriverState *s, const uint8_t *buf, int len);
251 82c643ff bellard
    void (*chr_add_read_handler)(struct CharDriverState *s, 
252 82c643ff bellard
                                 IOCanRWHandler *fd_can_read, 
253 82c643ff bellard
                                 IOReadHandler *fd_read, void *opaque);
254 2122c51a bellard
    int (*chr_ioctl)(struct CharDriverState *s, int cmd, void *arg);
255 82c643ff bellard
    IOEventHandler *chr_event;
256 eb45f5fe bellard
    void (*chr_send_event)(struct CharDriverState *chr, int event);
257 f331110f bellard
    void (*chr_close)(struct CharDriverState *chr);
258 82c643ff bellard
    void *opaque;
259 82c643ff bellard
} CharDriverState;
260 82c643ff bellard
261 82c643ff bellard
void qemu_chr_printf(CharDriverState *s, const char *fmt, ...);
262 82c643ff bellard
int qemu_chr_write(CharDriverState *s, const uint8_t *buf, int len);
263 ea2384d3 bellard
void qemu_chr_send_event(CharDriverState *s, int event);
264 82c643ff bellard
void qemu_chr_add_read_handler(CharDriverState *s, 
265 82c643ff bellard
                               IOCanRWHandler *fd_can_read, 
266 82c643ff bellard
                               IOReadHandler *fd_read, void *opaque);
267 82c643ff bellard
void qemu_chr_add_event_handler(CharDriverState *s, IOEventHandler *chr_event);
268 2122c51a bellard
int qemu_chr_ioctl(CharDriverState *s, int cmd, void *arg);
269 f8d179e3 bellard
270 82c643ff bellard
/* consoles */
271 82c643ff bellard
272 82c643ff bellard
typedef struct DisplayState DisplayState;
273 82c643ff bellard
typedef struct TextConsole TextConsole;
274 82c643ff bellard
275 95219897 pbrook
typedef void (*vga_hw_update_ptr)(void *);
276 95219897 pbrook
typedef void (*vga_hw_invalidate_ptr)(void *);
277 95219897 pbrook
typedef void (*vga_hw_screen_dump_ptr)(void *, const char *);
278 95219897 pbrook
279 95219897 pbrook
TextConsole *graphic_console_init(DisplayState *ds, vga_hw_update_ptr update,
280 95219897 pbrook
                                  vga_hw_invalidate_ptr invalidate,
281 95219897 pbrook
                                  vga_hw_screen_dump_ptr screen_dump,
282 95219897 pbrook
                                  void *opaque);
283 95219897 pbrook
void vga_hw_update(void);
284 95219897 pbrook
void vga_hw_invalidate(void);
285 95219897 pbrook
void vga_hw_screen_dump(const char *filename);
286 95219897 pbrook
287 95219897 pbrook
int is_graphic_console(void);
288 82c643ff bellard
CharDriverState *text_console_init(DisplayState *ds);
289 82c643ff bellard
void console_select(unsigned int index);
290 82c643ff bellard
291 8d11df9e bellard
/* serial ports */
292 8d11df9e bellard
293 8d11df9e bellard
#define MAX_SERIAL_PORTS 4
294 8d11df9e bellard
295 8d11df9e bellard
extern CharDriverState *serial_hds[MAX_SERIAL_PORTS];
296 8d11df9e bellard
297 6508fe59 bellard
/* parallel ports */
298 6508fe59 bellard
299 6508fe59 bellard
#define MAX_PARALLEL_PORTS 3
300 6508fe59 bellard
301 6508fe59 bellard
extern CharDriverState *parallel_hds[MAX_PARALLEL_PORTS];
302 6508fe59 bellard
303 7c9d8e07 bellard
/* VLANs support */
304 7c9d8e07 bellard
305 7c9d8e07 bellard
typedef struct VLANClientState VLANClientState;
306 7c9d8e07 bellard
307 7c9d8e07 bellard
struct VLANClientState {
308 7c9d8e07 bellard
    IOReadHandler *fd_read;
309 d861b05e pbrook
    /* Packets may still be sent if this returns zero.  It's used to
310 d861b05e pbrook
       rate-limit the slirp code.  */
311 d861b05e pbrook
    IOCanRWHandler *fd_can_read;
312 7c9d8e07 bellard
    void *opaque;
313 7c9d8e07 bellard
    struct VLANClientState *next;
314 7c9d8e07 bellard
    struct VLANState *vlan;
315 7c9d8e07 bellard
    char info_str[256];
316 7c9d8e07 bellard
};
317 7c9d8e07 bellard
318 7c9d8e07 bellard
typedef struct VLANState {
319 7c9d8e07 bellard
    int id;
320 7c9d8e07 bellard
    VLANClientState *first_client;
321 7c9d8e07 bellard
    struct VLANState *next;
322 7c9d8e07 bellard
} VLANState;
323 7c9d8e07 bellard
324 7c9d8e07 bellard
VLANState *qemu_find_vlan(int id);
325 7c9d8e07 bellard
VLANClientState *qemu_new_vlan_client(VLANState *vlan,
326 d861b05e pbrook
                                      IOReadHandler *fd_read,
327 d861b05e pbrook
                                      IOCanRWHandler *fd_can_read,
328 d861b05e pbrook
                                      void *opaque);
329 d861b05e pbrook
int qemu_can_send_packet(VLANClientState *vc);
330 7c9d8e07 bellard
void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size);
331 d861b05e pbrook
void qemu_handler_true(void *opaque);
332 7c9d8e07 bellard
333 7c9d8e07 bellard
void do_info_network(void);
334 7c9d8e07 bellard
335 7fb843f8 bellard
/* TAP win32 */
336 7fb843f8 bellard
int tap_win32_init(VLANState *vlan, const char *ifname);
337 7fb843f8 bellard
void tap_win32_poll(void);
338 7fb843f8 bellard
339 7c9d8e07 bellard
/* NIC info */
340 c4b1fcc0 bellard
341 c4b1fcc0 bellard
#define MAX_NICS 8
342 c4b1fcc0 bellard
343 7c9d8e07 bellard
typedef struct NICInfo {
344 c4b1fcc0 bellard
    uint8_t macaddr[6];
345 a41b2ff2 pbrook
    const char *model;
346 7c9d8e07 bellard
    VLANState *vlan;
347 7c9d8e07 bellard
} NICInfo;
348 c4b1fcc0 bellard
349 c4b1fcc0 bellard
extern int nb_nics;
350 7c9d8e07 bellard
extern NICInfo nd_table[MAX_NICS];
351 8a7ddc38 bellard
352 8a7ddc38 bellard
/* timers */
353 8a7ddc38 bellard
354 8a7ddc38 bellard
typedef struct QEMUClock QEMUClock;
355 8a7ddc38 bellard
typedef struct QEMUTimer QEMUTimer;
356 8a7ddc38 bellard
typedef void QEMUTimerCB(void *opaque);
357 8a7ddc38 bellard
358 8a7ddc38 bellard
/* The real time clock should be used only for stuff which does not
359 8a7ddc38 bellard
   change the virtual machine state, as it is run even if the virtual
360 69b91039 bellard
   machine is stopped. The real time clock has a frequency of 1000
361 8a7ddc38 bellard
   Hz. */
362 8a7ddc38 bellard
extern QEMUClock *rt_clock;
363 8a7ddc38 bellard
364 e80cfcfc bellard
/* The virtual clock is only run during the emulation. It is stopped
365 8a7ddc38 bellard
   when the virtual machine is stopped. Virtual timers use a high
366 8a7ddc38 bellard
   precision clock, usually cpu cycles (use ticks_per_sec). */
367 8a7ddc38 bellard
extern QEMUClock *vm_clock;
368 8a7ddc38 bellard
369 8a7ddc38 bellard
int64_t qemu_get_clock(QEMUClock *clock);
370 8a7ddc38 bellard
371 8a7ddc38 bellard
QEMUTimer *qemu_new_timer(QEMUClock *clock, QEMUTimerCB *cb, void *opaque);
372 8a7ddc38 bellard
void qemu_free_timer(QEMUTimer *ts);
373 8a7ddc38 bellard
void qemu_del_timer(QEMUTimer *ts);
374 8a7ddc38 bellard
void qemu_mod_timer(QEMUTimer *ts, int64_t expire_time);
375 8a7ddc38 bellard
int qemu_timer_pending(QEMUTimer *ts);
376 8a7ddc38 bellard
377 8a7ddc38 bellard
extern int64_t ticks_per_sec;
378 8a7ddc38 bellard
extern int pit_min_timer_count;
379 8a7ddc38 bellard
380 8a7ddc38 bellard
void cpu_enable_ticks(void);
381 8a7ddc38 bellard
void cpu_disable_ticks(void);
382 8a7ddc38 bellard
383 8a7ddc38 bellard
/* VM Load/Save */
384 8a7ddc38 bellard
385 8a7ddc38 bellard
typedef FILE QEMUFile;
386 8a7ddc38 bellard
387 8a7ddc38 bellard
void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, int size);
388 8a7ddc38 bellard
void qemu_put_byte(QEMUFile *f, int v);
389 8a7ddc38 bellard
void qemu_put_be16(QEMUFile *f, unsigned int v);
390 8a7ddc38 bellard
void qemu_put_be32(QEMUFile *f, unsigned int v);
391 8a7ddc38 bellard
void qemu_put_be64(QEMUFile *f, uint64_t v);
392 8a7ddc38 bellard
int qemu_get_buffer(QEMUFile *f, uint8_t *buf, int size);
393 8a7ddc38 bellard
int qemu_get_byte(QEMUFile *f);
394 8a7ddc38 bellard
unsigned int qemu_get_be16(QEMUFile *f);
395 8a7ddc38 bellard
unsigned int qemu_get_be32(QEMUFile *f);
396 8a7ddc38 bellard
uint64_t qemu_get_be64(QEMUFile *f);
397 8a7ddc38 bellard
398 8a7ddc38 bellard
static inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv)
399 8a7ddc38 bellard
{
400 8a7ddc38 bellard
    qemu_put_be64(f, *pv);
401 8a7ddc38 bellard
}
402 8a7ddc38 bellard
403 8a7ddc38 bellard
static inline void qemu_put_be32s(QEMUFile *f, const uint32_t *pv)
404 8a7ddc38 bellard
{
405 8a7ddc38 bellard
    qemu_put_be32(f, *pv);
406 8a7ddc38 bellard
}
407 8a7ddc38 bellard
408 8a7ddc38 bellard
static inline void qemu_put_be16s(QEMUFile *f, const uint16_t *pv)
409 8a7ddc38 bellard
{
410 8a7ddc38 bellard
    qemu_put_be16(f, *pv);
411 8a7ddc38 bellard
}
412 8a7ddc38 bellard
413 8a7ddc38 bellard
static inline void qemu_put_8s(QEMUFile *f, const uint8_t *pv)
414 8a7ddc38 bellard
{
415 8a7ddc38 bellard
    qemu_put_byte(f, *pv);
416 8a7ddc38 bellard
}
417 8a7ddc38 bellard
418 8a7ddc38 bellard
static inline void qemu_get_be64s(QEMUFile *f, uint64_t *pv)
419 8a7ddc38 bellard
{
420 8a7ddc38 bellard
    *pv = qemu_get_be64(f);
421 8a7ddc38 bellard
}
422 8a7ddc38 bellard
423 8a7ddc38 bellard
static inline void qemu_get_be32s(QEMUFile *f, uint32_t *pv)
424 8a7ddc38 bellard
{
425 8a7ddc38 bellard
    *pv = qemu_get_be32(f);
426 8a7ddc38 bellard
}
427 8a7ddc38 bellard
428 8a7ddc38 bellard
static inline void qemu_get_be16s(QEMUFile *f, uint16_t *pv)
429 8a7ddc38 bellard
{
430 8a7ddc38 bellard
    *pv = qemu_get_be16(f);
431 8a7ddc38 bellard
}
432 8a7ddc38 bellard
433 8a7ddc38 bellard
static inline void qemu_get_8s(QEMUFile *f, uint8_t *pv)
434 8a7ddc38 bellard
{
435 8a7ddc38 bellard
    *pv = qemu_get_byte(f);
436 8a7ddc38 bellard
}
437 8a7ddc38 bellard
438 c27004ec bellard
#if TARGET_LONG_BITS == 64
439 c27004ec bellard
#define qemu_put_betl qemu_put_be64
440 c27004ec bellard
#define qemu_get_betl qemu_get_be64
441 c27004ec bellard
#define qemu_put_betls qemu_put_be64s
442 c27004ec bellard
#define qemu_get_betls qemu_get_be64s
443 c27004ec bellard
#else
444 c27004ec bellard
#define qemu_put_betl qemu_put_be32
445 c27004ec bellard
#define qemu_get_betl qemu_get_be32
446 c27004ec bellard
#define qemu_put_betls qemu_put_be32s
447 c27004ec bellard
#define qemu_get_betls qemu_get_be32s
448 c27004ec bellard
#endif
449 c27004ec bellard
450 8a7ddc38 bellard
int64_t qemu_ftell(QEMUFile *f);
451 8a7ddc38 bellard
int64_t qemu_fseek(QEMUFile *f, int64_t pos, int whence);
452 8a7ddc38 bellard
453 8a7ddc38 bellard
typedef void SaveStateHandler(QEMUFile *f, void *opaque);
454 8a7ddc38 bellard
typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
455 8a7ddc38 bellard
456 8a7ddc38 bellard
int qemu_loadvm(const char *filename);
457 8a7ddc38 bellard
int qemu_savevm(const char *filename);
458 8a7ddc38 bellard
int register_savevm(const char *idstr, 
459 8a7ddc38 bellard
                    int instance_id, 
460 8a7ddc38 bellard
                    int version_id,
461 8a7ddc38 bellard
                    SaveStateHandler *save_state,
462 8a7ddc38 bellard
                    LoadStateHandler *load_state,
463 8a7ddc38 bellard
                    void *opaque);
464 8a7ddc38 bellard
void qemu_get_timer(QEMUFile *f, QEMUTimer *ts);
465 8a7ddc38 bellard
void qemu_put_timer(QEMUFile *f, QEMUTimer *ts);
466 c4b1fcc0 bellard
467 6a00d601 bellard
void cpu_save(QEMUFile *f, void *opaque);
468 6a00d601 bellard
int cpu_load(QEMUFile *f, void *opaque, int version_id);
469 6a00d601 bellard
470 fc01f7e7 bellard
/* block.c */
471 fc01f7e7 bellard
typedef struct BlockDriverState BlockDriverState;
472 ea2384d3 bellard
typedef struct BlockDriver BlockDriver;
473 ea2384d3 bellard
474 ea2384d3 bellard
extern BlockDriver bdrv_raw;
475 ea2384d3 bellard
extern BlockDriver bdrv_cow;
476 ea2384d3 bellard
extern BlockDriver bdrv_qcow;
477 ea2384d3 bellard
extern BlockDriver bdrv_vmdk;
478 3c56521b bellard
extern BlockDriver bdrv_cloop;
479 585d0ed9 bellard
extern BlockDriver bdrv_dmg;
480 a8753c34 bellard
extern BlockDriver bdrv_bochs;
481 6a0f9e82 bellard
extern BlockDriver bdrv_vpc;
482 de167e41 bellard
extern BlockDriver bdrv_vvfat;
483 ea2384d3 bellard
484 ea2384d3 bellard
void bdrv_init(void);
485 ea2384d3 bellard
BlockDriver *bdrv_find_format(const char *format_name);
486 ea2384d3 bellard
int bdrv_create(BlockDriver *drv, 
487 ea2384d3 bellard
                const char *filename, int64_t size_in_sectors,
488 ea2384d3 bellard
                const char *backing_file, int flags);
489 c4b1fcc0 bellard
BlockDriverState *bdrv_new(const char *device_name);
490 c4b1fcc0 bellard
void bdrv_delete(BlockDriverState *bs);
491 c4b1fcc0 bellard
int bdrv_open(BlockDriverState *bs, const char *filename, int snapshot);
492 ea2384d3 bellard
int bdrv_open2(BlockDriverState *bs, const char *filename, int snapshot,
493 ea2384d3 bellard
               BlockDriver *drv);
494 fc01f7e7 bellard
void bdrv_close(BlockDriverState *bs);
495 fc01f7e7 bellard
int bdrv_read(BlockDriverState *bs, int64_t sector_num, 
496 fc01f7e7 bellard
              uint8_t *buf, int nb_sectors);
497 fc01f7e7 bellard
int bdrv_write(BlockDriverState *bs, int64_t sector_num, 
498 fc01f7e7 bellard
               const uint8_t *buf, int nb_sectors);
499 fc01f7e7 bellard
void bdrv_get_geometry(BlockDriverState *bs, int64_t *nb_sectors_ptr);
500 33e3963e bellard
int bdrv_commit(BlockDriverState *bs);
501 77fef8c1 bellard
void bdrv_set_boot_sector(BlockDriverState *bs, const uint8_t *data, int size);
502 7a6cba61 pbrook
/* Ensure contents are flushed to disk.  */
503 7a6cba61 pbrook
void bdrv_flush(BlockDriverState *bs);
504 33e3963e bellard
505 c4b1fcc0 bellard
#define BDRV_TYPE_HD     0
506 c4b1fcc0 bellard
#define BDRV_TYPE_CDROM  1
507 c4b1fcc0 bellard
#define BDRV_TYPE_FLOPPY 2
508 46d4767d bellard
#define BIOS_ATA_TRANSLATION_AUTO 0
509 46d4767d bellard
#define BIOS_ATA_TRANSLATION_NONE 1
510 46d4767d bellard
#define BIOS_ATA_TRANSLATION_LBA  2
511 c4b1fcc0 bellard
512 c4b1fcc0 bellard
void bdrv_set_geometry_hint(BlockDriverState *bs, 
513 c4b1fcc0 bellard
                            int cyls, int heads, int secs);
514 c4b1fcc0 bellard
void bdrv_set_type_hint(BlockDriverState *bs, int type);
515 46d4767d bellard
void bdrv_set_translation_hint(BlockDriverState *bs, int translation);
516 c4b1fcc0 bellard
void bdrv_get_geometry_hint(BlockDriverState *bs, 
517 c4b1fcc0 bellard
                            int *pcyls, int *pheads, int *psecs);
518 c4b1fcc0 bellard
int bdrv_get_type_hint(BlockDriverState *bs);
519 46d4767d bellard
int bdrv_get_translation_hint(BlockDriverState *bs);
520 c4b1fcc0 bellard
int bdrv_is_removable(BlockDriverState *bs);
521 c4b1fcc0 bellard
int bdrv_is_read_only(BlockDriverState *bs);
522 c4b1fcc0 bellard
int bdrv_is_inserted(BlockDriverState *bs);
523 c4b1fcc0 bellard
int bdrv_is_locked(BlockDriverState *bs);
524 c4b1fcc0 bellard
void bdrv_set_locked(BlockDriverState *bs, int locked);
525 c4b1fcc0 bellard
void bdrv_set_change_cb(BlockDriverState *bs, 
526 c4b1fcc0 bellard
                        void (*change_cb)(void *opaque), void *opaque);
527 ea2384d3 bellard
void bdrv_get_format(BlockDriverState *bs, char *buf, int buf_size);
528 c4b1fcc0 bellard
void bdrv_info(void);
529 c4b1fcc0 bellard
BlockDriverState *bdrv_find(const char *name);
530 82c643ff bellard
void bdrv_iterate(void (*it)(void *opaque, const char *name), void *opaque);
531 ea2384d3 bellard
int bdrv_is_encrypted(BlockDriverState *bs);
532 ea2384d3 bellard
int bdrv_set_key(BlockDriverState *bs, const char *key);
533 ea2384d3 bellard
void bdrv_iterate_format(void (*it)(void *opaque, const char *name), 
534 ea2384d3 bellard
                         void *opaque);
535 ea2384d3 bellard
const char *bdrv_get_device_name(BlockDriverState *bs);
536 c4b1fcc0 bellard
537 ea2384d3 bellard
int qcow_get_cluster_size(BlockDriverState *bs);
538 ea2384d3 bellard
int qcow_compress_cluster(BlockDriverState *bs, int64_t sector_num,
539 ea2384d3 bellard
                          const uint8_t *buf);
540 ea2384d3 bellard
541 ea2384d3 bellard
#ifndef QEMU_TOOL
542 54fa5af5 bellard
543 54fa5af5 bellard
typedef void QEMUMachineInitFunc(int ram_size, int vga_ram_size, 
544 54fa5af5 bellard
                                 int boot_device,
545 54fa5af5 bellard
             DisplayState *ds, const char **fd_filename, int snapshot,
546 54fa5af5 bellard
             const char *kernel_filename, const char *kernel_cmdline,
547 54fa5af5 bellard
             const char *initrd_filename);
548 54fa5af5 bellard
549 54fa5af5 bellard
typedef struct QEMUMachine {
550 54fa5af5 bellard
    const char *name;
551 54fa5af5 bellard
    const char *desc;
552 54fa5af5 bellard
    QEMUMachineInitFunc *init;
553 54fa5af5 bellard
    struct QEMUMachine *next;
554 54fa5af5 bellard
} QEMUMachine;
555 54fa5af5 bellard
556 54fa5af5 bellard
int qemu_register_machine(QEMUMachine *m);
557 54fa5af5 bellard
558 54fa5af5 bellard
typedef void SetIRQFunc(void *opaque, int irq_num, int level);
559 3de388f6 bellard
typedef void IRQRequestFunc(void *opaque, int level);
560 54fa5af5 bellard
561 26aa7d72 bellard
/* ISA bus */
562 26aa7d72 bellard
563 26aa7d72 bellard
extern target_phys_addr_t isa_mem_base;
564 26aa7d72 bellard
565 26aa7d72 bellard
typedef void (IOPortWriteFunc)(void *opaque, uint32_t address, uint32_t data);
566 26aa7d72 bellard
typedef uint32_t (IOPortReadFunc)(void *opaque, uint32_t address);
567 26aa7d72 bellard
568 26aa7d72 bellard
int register_ioport_read(int start, int length, int size, 
569 26aa7d72 bellard
                         IOPortReadFunc *func, void *opaque);
570 26aa7d72 bellard
int register_ioport_write(int start, int length, int size, 
571 26aa7d72 bellard
                          IOPortWriteFunc *func, void *opaque);
572 69b91039 bellard
void isa_unassign_ioport(int start, int length);
573 69b91039 bellard
574 69b91039 bellard
/* PCI bus */
575 69b91039 bellard
576 69b91039 bellard
extern target_phys_addr_t pci_mem_base;
577 69b91039 bellard
578 46e50e9d bellard
typedef struct PCIBus PCIBus;
579 69b91039 bellard
typedef struct PCIDevice PCIDevice;
580 69b91039 bellard
581 69b91039 bellard
typedef void PCIConfigWriteFunc(PCIDevice *pci_dev, 
582 69b91039 bellard
                                uint32_t address, uint32_t data, int len);
583 69b91039 bellard
typedef uint32_t PCIConfigReadFunc(PCIDevice *pci_dev, 
584 69b91039 bellard
                                   uint32_t address, int len);
585 69b91039 bellard
typedef void PCIMapIORegionFunc(PCIDevice *pci_dev, int region_num, 
586 69b91039 bellard
                                uint32_t addr, uint32_t size, int type);
587 69b91039 bellard
588 69b91039 bellard
#define PCI_ADDRESS_SPACE_MEM                0x00
589 69b91039 bellard
#define PCI_ADDRESS_SPACE_IO                0x01
590 69b91039 bellard
#define PCI_ADDRESS_SPACE_MEM_PREFETCH        0x08
591 69b91039 bellard
592 69b91039 bellard
typedef struct PCIIORegion {
593 5768f5ac bellard
    uint32_t addr; /* current PCI mapping address. -1 means not mapped */
594 69b91039 bellard
    uint32_t size;
595 69b91039 bellard
    uint8_t type;
596 69b91039 bellard
    PCIMapIORegionFunc *map_func;
597 69b91039 bellard
} PCIIORegion;
598 69b91039 bellard
599 8a8696a3 bellard
#define PCI_ROM_SLOT 6
600 8a8696a3 bellard
#define PCI_NUM_REGIONS 7
601 502a5395 pbrook
602 502a5395 pbrook
#define PCI_DEVICES_MAX 64
603 502a5395 pbrook
604 502a5395 pbrook
#define PCI_VENDOR_ID                0x00        /* 16 bits */
605 502a5395 pbrook
#define PCI_DEVICE_ID                0x02        /* 16 bits */
606 502a5395 pbrook
#define PCI_COMMAND                0x04        /* 16 bits */
607 502a5395 pbrook
#define  PCI_COMMAND_IO                0x1        /* Enable response in I/O space */
608 502a5395 pbrook
#define  PCI_COMMAND_MEMORY        0x2        /* Enable response in Memory space */
609 502a5395 pbrook
#define PCI_CLASS_DEVICE        0x0a    /* Device class */
610 502a5395 pbrook
#define PCI_INTERRUPT_LINE        0x3c        /* 8 bits */
611 502a5395 pbrook
#define PCI_INTERRUPT_PIN        0x3d        /* 8 bits */
612 502a5395 pbrook
#define PCI_MIN_GNT                0x3e        /* 8 bits */
613 502a5395 pbrook
#define PCI_MAX_LAT                0x3f        /* 8 bits */
614 502a5395 pbrook
615 69b91039 bellard
struct PCIDevice {
616 69b91039 bellard
    /* PCI config space */
617 69b91039 bellard
    uint8_t config[256];
618 69b91039 bellard
619 69b91039 bellard
    /* the following fields are read only */
620 46e50e9d bellard
    PCIBus *bus;
621 69b91039 bellard
    int devfn;
622 69b91039 bellard
    char name[64];
623 8a8696a3 bellard
    PCIIORegion io_regions[PCI_NUM_REGIONS];
624 69b91039 bellard
    
625 69b91039 bellard
    /* do not access the following fields */
626 69b91039 bellard
    PCIConfigReadFunc *config_read;
627 69b91039 bellard
    PCIConfigWriteFunc *config_write;
628 502a5395 pbrook
    /* ??? This is a PC-specific hack, and should be removed.  */
629 5768f5ac bellard
    int irq_index;
630 69b91039 bellard
};
631 69b91039 bellard
632 46e50e9d bellard
PCIDevice *pci_register_device(PCIBus *bus, const char *name,
633 46e50e9d bellard
                               int instance_size, int devfn,
634 69b91039 bellard
                               PCIConfigReadFunc *config_read, 
635 69b91039 bellard
                               PCIConfigWriteFunc *config_write);
636 69b91039 bellard
637 69b91039 bellard
void pci_register_io_region(PCIDevice *pci_dev, int region_num, 
638 69b91039 bellard
                            uint32_t size, int type, 
639 69b91039 bellard
                            PCIMapIORegionFunc *map_func);
640 69b91039 bellard
641 5768f5ac bellard
void pci_set_irq(PCIDevice *pci_dev, int irq_num, int level);
642 5768f5ac bellard
643 5768f5ac bellard
uint32_t pci_default_read_config(PCIDevice *d, 
644 5768f5ac bellard
                                 uint32_t address, int len);
645 5768f5ac bellard
void pci_default_write_config(PCIDevice *d, 
646 5768f5ac bellard
                              uint32_t address, uint32_t val, int len);
647 30ca2aab bellard
void generic_pci_save(QEMUFile* f, void *opaque);
648 30ca2aab bellard
int generic_pci_load(QEMUFile* f, void *opaque, int version_id);
649 5768f5ac bellard
650 502a5395 pbrook
typedef void (*pci_set_irq_fn)(PCIDevice *pci_dev, void *pic,
651 502a5395 pbrook
                               int irq_num, int level);
652 502a5395 pbrook
PCIBus *pci_register_bus(pci_set_irq_fn set_irq, void *pic, int devfn_min);
653 502a5395 pbrook
654 502a5395 pbrook
void pci_nic_init(PCIBus *bus, NICInfo *nd);
655 502a5395 pbrook
void pci_data_write(void *opaque, uint32_t addr, uint32_t val, int len);
656 502a5395 pbrook
uint32_t pci_data_read(void *opaque, uint32_t addr, int len);
657 502a5395 pbrook
int pci_bus_num(PCIBus *s);
658 502a5395 pbrook
void pci_for_each_device(void (*fn)(PCIDevice *d));
659 9995c51f bellard
660 5768f5ac bellard
void pci_info(void);
661 26aa7d72 bellard
662 502a5395 pbrook
/* prep_pci.c */
663 46e50e9d bellard
PCIBus *pci_prep_init(void);
664 77d4bc34 bellard
665 502a5395 pbrook
/* grackle_pci.c */
666 502a5395 pbrook
PCIBus *pci_grackle_init(uint32_t base, void *pic);
667 502a5395 pbrook
668 502a5395 pbrook
/* unin_pci.c */
669 502a5395 pbrook
PCIBus *pci_pmac_init(void *pic);
670 502a5395 pbrook
671 502a5395 pbrook
/* apb_pci.c */
672 502a5395 pbrook
PCIBus *pci_apb_init(target_ulong special_base, target_ulong mem_base,
673 502a5395 pbrook
                     void *pic);
674 502a5395 pbrook
675 502a5395 pbrook
PCIBus *pci_vpb_init(void *pic);
676 502a5395 pbrook
677 502a5395 pbrook
/* piix_pci.c */
678 502a5395 pbrook
PCIBus *i440fx_init(void);
679 502a5395 pbrook
int piix3_init(PCIBus *bus);
680 502a5395 pbrook
void pci_bios_init(void);
681 a41b2ff2 pbrook
682 28b9b5af bellard
/* openpic.c */
683 28b9b5af bellard
typedef struct openpic_t openpic_t;
684 54fa5af5 bellard
void openpic_set_irq(void *opaque, int n_IRQ, int level);
685 7668a27f bellard
openpic_t *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus,
686 7668a27f bellard
                         CPUState **envp);
687 28b9b5af bellard
688 54fa5af5 bellard
/* heathrow_pic.c */
689 54fa5af5 bellard
typedef struct HeathrowPICS HeathrowPICS;
690 54fa5af5 bellard
void heathrow_pic_set_irq(void *opaque, int num, int level);
691 54fa5af5 bellard
HeathrowPICS *heathrow_pic_init(int *pmem_index);
692 54fa5af5 bellard
693 6a36d84e bellard
#ifdef HAS_AUDIO
694 6a36d84e bellard
struct soundhw {
695 6a36d84e bellard
    const char *name;
696 6a36d84e bellard
    const char *descr;
697 6a36d84e bellard
    int enabled;
698 6a36d84e bellard
    int isa;
699 6a36d84e bellard
    union {
700 6a36d84e bellard
        int (*init_isa) (AudioState *s);
701 6a36d84e bellard
        int (*init_pci) (PCIBus *bus, AudioState *s);
702 6a36d84e bellard
    } init;
703 6a36d84e bellard
};
704 6a36d84e bellard
705 6a36d84e bellard
extern struct soundhw soundhw[];
706 6a36d84e bellard
#endif
707 6a36d84e bellard
708 313aa567 bellard
/* vga.c */
709 313aa567 bellard
710 74a14f22 bellard
#define VGA_RAM_SIZE (8192 * 1024)
711 313aa567 bellard
712 82c643ff bellard
struct DisplayState {
713 313aa567 bellard
    uint8_t *data;
714 313aa567 bellard
    int linesize;
715 313aa567 bellard
    int depth;
716 d3079cd2 bellard
    int bgr; /* BGR color order instead of RGB. Only valid for depth == 32 */
717 82c643ff bellard
    int width;
718 82c643ff bellard
    int height;
719 24236869 bellard
    void *opaque;
720 24236869 bellard
721 313aa567 bellard
    void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h);
722 313aa567 bellard
    void (*dpy_resize)(struct DisplayState *s, int w, int h);
723 313aa567 bellard
    void (*dpy_refresh)(struct DisplayState *s);
724 24236869 bellard
    void (*dpy_copy)(struct DisplayState *s, int src_x, int src_y, int dst_x, int dst_y, int w, int h);
725 82c643ff bellard
};
726 313aa567 bellard
727 313aa567 bellard
static inline void dpy_update(DisplayState *s, int x, int y, int w, int h)
728 313aa567 bellard
{
729 313aa567 bellard
    s->dpy_update(s, x, y, w, h);
730 313aa567 bellard
}
731 313aa567 bellard
732 313aa567 bellard
static inline void dpy_resize(DisplayState *s, int w, int h)
733 313aa567 bellard
{
734 313aa567 bellard
    s->dpy_resize(s, w, h);
735 313aa567 bellard
}
736 313aa567 bellard
737 46e50e9d bellard
int vga_initialize(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, 
738 d5295253 bellard
                   unsigned long vga_ram_offset, int vga_ram_size,
739 d5295253 bellard
                   unsigned long vga_bios_offset, int vga_bios_size);
740 313aa567 bellard
741 d6bfa22f bellard
/* cirrus_vga.c */
742 46e50e9d bellard
void pci_cirrus_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, 
743 d6bfa22f bellard
                         unsigned long vga_ram_offset, int vga_ram_size);
744 d6bfa22f bellard
void isa_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, 
745 d6bfa22f bellard
                         unsigned long vga_ram_offset, int vga_ram_size);
746 d6bfa22f bellard
747 313aa567 bellard
/* sdl.c */
748 d63d307f bellard
void sdl_display_init(DisplayState *ds, int full_screen);
749 313aa567 bellard
750 da4dbf74 bellard
/* cocoa.m */
751 da4dbf74 bellard
void cocoa_display_init(DisplayState *ds, int full_screen);
752 da4dbf74 bellard
753 24236869 bellard
/* vnc.c */
754 24236869 bellard
void vnc_display_init(DisplayState *ds, int display);
755 24236869 bellard
756 5391d806 bellard
/* ide.c */
757 5391d806 bellard
#define MAX_DISKS 4
758 5391d806 bellard
759 5391d806 bellard
extern BlockDriverState *bs_table[MAX_DISKS];
760 5391d806 bellard
761 69b91039 bellard
void isa_ide_init(int iobase, int iobase2, int irq,
762 69b91039 bellard
                  BlockDriverState *hd0, BlockDriverState *hd1);
763 54fa5af5 bellard
void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table,
764 54fa5af5 bellard
                         int secondary_ide_enabled);
765 502a5395 pbrook
void pci_piix3_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn);
766 28b9b5af bellard
int pmac_ide_init (BlockDriverState **hd_table,
767 54fa5af5 bellard
                   SetIRQFunc *set_irq, void *irq_opaque, int irq);
768 5391d806 bellard
769 2e5d83bb pbrook
/* cdrom.c */
770 2e5d83bb pbrook
int cdrom_read_toc(int nb_sectors, uint8_t *buf, int msf, int start_track);
771 2e5d83bb pbrook
int cdrom_read_toc_raw(int nb_sectors, uint8_t *buf, int msf, int session_num);
772 2e5d83bb pbrook
773 1d14ffa9 bellard
/* es1370.c */
774 c0fe3827 bellard
int es1370_init (PCIBus *bus, AudioState *s);
775 1d14ffa9 bellard
776 fb065187 bellard
/* sb16.c */
777 c0fe3827 bellard
int SB16_init (AudioState *s);
778 fb065187 bellard
779 fb065187 bellard
/* adlib.c */
780 c0fe3827 bellard
int Adlib_init (AudioState *s);
781 fb065187 bellard
782 fb065187 bellard
/* gus.c */
783 c0fe3827 bellard
int GUS_init (AudioState *s);
784 27503323 bellard
785 27503323 bellard
/* dma.c */
786 85571bc7 bellard
typedef int (*DMA_transfer_handler) (void *opaque, int nchan, int pos, int size);
787 27503323 bellard
int DMA_get_channel_mode (int nchan);
788 85571bc7 bellard
int DMA_read_memory (int nchan, void *buf, int pos, int size);
789 85571bc7 bellard
int DMA_write_memory (int nchan, void *buf, int pos, int size);
790 27503323 bellard
void DMA_hold_DREQ (int nchan);
791 27503323 bellard
void DMA_release_DREQ (int nchan);
792 16f62432 bellard
void DMA_schedule(int nchan);
793 27503323 bellard
void DMA_run (void);
794 28b9b5af bellard
void DMA_init (int high_page_enable);
795 27503323 bellard
void DMA_register_channel (int nchan,
796 85571bc7 bellard
                           DMA_transfer_handler transfer_handler,
797 85571bc7 bellard
                           void *opaque);
798 7138fcfb bellard
/* fdc.c */
799 7138fcfb bellard
#define MAX_FD 2
800 7138fcfb bellard
extern BlockDriverState *fd_table[MAX_FD];
801 7138fcfb bellard
802 baca51fa bellard
typedef struct fdctrl_t fdctrl_t;
803 baca51fa bellard
804 baca51fa bellard
fdctrl_t *fdctrl_init (int irq_lvl, int dma_chann, int mem_mapped, 
805 baca51fa bellard
                       uint32_t io_base,
806 baca51fa bellard
                       BlockDriverState **fds);
807 baca51fa bellard
int fdctrl_get_drive_type(fdctrl_t *fdctrl, int drive_num);
808 7138fcfb bellard
809 80cabfad bellard
/* ne2000.c */
810 80cabfad bellard
811 7c9d8e07 bellard
void isa_ne2000_init(int base, int irq, NICInfo *nd);
812 7c9d8e07 bellard
void pci_ne2000_init(PCIBus *bus, NICInfo *nd);
813 80cabfad bellard
814 a41b2ff2 pbrook
/* rtl8139.c */
815 a41b2ff2 pbrook
816 a41b2ff2 pbrook
void pci_rtl8139_init(PCIBus *bus, NICInfo *nd);
817 a41b2ff2 pbrook
818 80cabfad bellard
/* pckbd.c */
819 80cabfad bellard
820 80cabfad bellard
void kbd_init(void);
821 80cabfad bellard
822 80cabfad bellard
/* mc146818rtc.c */
823 80cabfad bellard
824 8a7ddc38 bellard
typedef struct RTCState RTCState;
825 80cabfad bellard
826 8a7ddc38 bellard
RTCState *rtc_init(int base, int irq);
827 8a7ddc38 bellard
void rtc_set_memory(RTCState *s, int addr, int val);
828 8a7ddc38 bellard
void rtc_set_date(RTCState *s, const struct tm *tm);
829 80cabfad bellard
830 80cabfad bellard
/* serial.c */
831 80cabfad bellard
832 c4b1fcc0 bellard
typedef struct SerialState SerialState;
833 e5d13e2f bellard
SerialState *serial_init(SetIRQFunc *set_irq, void *opaque,
834 e5d13e2f bellard
                         int base, int irq, CharDriverState *chr);
835 e5d13e2f bellard
SerialState *serial_mm_init (SetIRQFunc *set_irq, void *opaque,
836 e5d13e2f bellard
                             target_ulong base, int it_shift,
837 e5d13e2f bellard
                             int irq, CharDriverState *chr);
838 80cabfad bellard
839 6508fe59 bellard
/* parallel.c */
840 6508fe59 bellard
841 6508fe59 bellard
typedef struct ParallelState ParallelState;
842 6508fe59 bellard
ParallelState *parallel_init(int base, int irq, CharDriverState *chr);
843 6508fe59 bellard
844 80cabfad bellard
/* i8259.c */
845 80cabfad bellard
846 3de388f6 bellard
typedef struct PicState2 PicState2;
847 3de388f6 bellard
extern PicState2 *isa_pic;
848 80cabfad bellard
void pic_set_irq(int irq, int level);
849 54fa5af5 bellard
void pic_set_irq_new(void *opaque, int irq, int level);
850 3de388f6 bellard
PicState2 *pic_init(IRQRequestFunc *irq_request, void *irq_request_opaque);
851 d592d303 bellard
void pic_set_alt_irq_func(PicState2 *s, SetIRQFunc *alt_irq_func,
852 d592d303 bellard
                          void *alt_irq_opaque);
853 3de388f6 bellard
int pic_read_irq(PicState2 *s);
854 3de388f6 bellard
void pic_update_irq(PicState2 *s);
855 3de388f6 bellard
uint32_t pic_intack_read(PicState2 *s);
856 c20709aa bellard
void pic_info(void);
857 4a0fb71e bellard
void irq_info(void);
858 80cabfad bellard
859 c27004ec bellard
/* APIC */
860 d592d303 bellard
typedef struct IOAPICState IOAPICState;
861 d592d303 bellard
862 c27004ec bellard
int apic_init(CPUState *env);
863 c27004ec bellard
int apic_get_interrupt(CPUState *env);
864 d592d303 bellard
IOAPICState *ioapic_init(void);
865 d592d303 bellard
void ioapic_set_irq(void *opaque, int vector, int level);
866 c27004ec bellard
867 80cabfad bellard
/* i8254.c */
868 80cabfad bellard
869 80cabfad bellard
#define PIT_FREQ 1193182
870 80cabfad bellard
871 ec844b96 bellard
typedef struct PITState PITState;
872 ec844b96 bellard
873 ec844b96 bellard
PITState *pit_init(int base, int irq);
874 ec844b96 bellard
void pit_set_gate(PITState *pit, int channel, int val);
875 ec844b96 bellard
int pit_get_gate(PITState *pit, int channel);
876 fd06c375 bellard
int pit_get_initial_count(PITState *pit, int channel);
877 fd06c375 bellard
int pit_get_mode(PITState *pit, int channel);
878 ec844b96 bellard
int pit_get_out(PITState *pit, int channel, int64_t current_time);
879 80cabfad bellard
880 fd06c375 bellard
/* pcspk.c */
881 fd06c375 bellard
void pcspk_init(PITState *);
882 fd06c375 bellard
int pcspk_audio_init(AudioState *);
883 fd06c375 bellard
884 6515b203 bellard
/* acpi.c */
885 6515b203 bellard
extern int acpi_enabled;
886 502a5395 pbrook
void piix4_pm_init(PCIBus *bus, int devfn);
887 6515b203 bellard
void acpi_bios_init(void);
888 6515b203 bellard
889 80cabfad bellard
/* pc.c */
890 54fa5af5 bellard
extern QEMUMachine pc_machine;
891 3dbbdc25 bellard
extern QEMUMachine isapc_machine;
892 52ca8d6a bellard
extern int fd_bootchk;
893 80cabfad bellard
894 6a00d601 bellard
void ioport_set_a20(int enable);
895 6a00d601 bellard
int ioport_get_a20(void);
896 6a00d601 bellard
897 26aa7d72 bellard
/* ppc.c */
898 54fa5af5 bellard
extern QEMUMachine prep_machine;
899 54fa5af5 bellard
extern QEMUMachine core99_machine;
900 54fa5af5 bellard
extern QEMUMachine heathrow_machine;
901 54fa5af5 bellard
902 6af0bf9c bellard
/* mips_r4k.c */
903 6af0bf9c bellard
extern QEMUMachine mips_machine;
904 6af0bf9c bellard
905 27c7ca7e bellard
/* shix.c */
906 27c7ca7e bellard
extern QEMUMachine shix_machine;
907 27c7ca7e bellard
908 8cc43fef bellard
#ifdef TARGET_PPC
909 8cc43fef bellard
ppc_tb_t *cpu_ppc_tb_init (CPUState *env, uint32_t freq);
910 8cc43fef bellard
#endif
911 64201201 bellard
void PREP_debug_write (void *opaque, uint32_t addr, uint32_t val);
912 77d4bc34 bellard
913 77d4bc34 bellard
extern CPUWriteMemoryFunc *PPC_io_write[];
914 77d4bc34 bellard
extern CPUReadMemoryFunc *PPC_io_read[];
915 54fa5af5 bellard
void PPC_debug_write (void *opaque, uint32_t addr, uint32_t val);
916 26aa7d72 bellard
917 e95c8d51 bellard
/* sun4m.c */
918 54fa5af5 bellard
extern QEMUMachine sun4m_machine;
919 e80cfcfc bellard
uint32_t iommu_translate(uint32_t addr);
920 ba3c64fb bellard
void pic_set_irq_cpu(int irq, int level, unsigned int cpu);
921 e95c8d51 bellard
922 e95c8d51 bellard
/* iommu.c */
923 e80cfcfc bellard
void *iommu_init(uint32_t addr);
924 e80cfcfc bellard
uint32_t iommu_translate_local(void *opaque, uint32_t addr);
925 e95c8d51 bellard
926 e95c8d51 bellard
/* lance.c */
927 7c9d8e07 bellard
void lance_init(NICInfo *nd, int irq, uint32_t leaddr, uint32_t ledaddr);
928 e95c8d51 bellard
929 e95c8d51 bellard
/* tcx.c */
930 95219897 pbrook
void tcx_init(DisplayState *ds, uint32_t addr, uint8_t *vram_base,
931 6f7e9aec bellard
               unsigned long vram_offset, int vram_size, int width, int height);
932 e80cfcfc bellard
933 e80cfcfc bellard
/* slavio_intctl.c */
934 e80cfcfc bellard
void *slavio_intctl_init();
935 ba3c64fb bellard
void slavio_intctl_set_cpu(void *opaque, unsigned int cpu, CPUState *env);
936 e80cfcfc bellard
void slavio_pic_info(void *opaque);
937 e80cfcfc bellard
void slavio_irq_info(void *opaque);
938 e80cfcfc bellard
void slavio_pic_set_irq(void *opaque, int irq, int level);
939 ba3c64fb bellard
void slavio_pic_set_irq_cpu(void *opaque, int irq, int level, unsigned int cpu);
940 e95c8d51 bellard
941 5fe141fd bellard
/* loader.c */
942 5fe141fd bellard
int get_image_size(const char *filename);
943 5fe141fd bellard
int load_image(const char *filename, uint8_t *addr);
944 9ee3c029 bellard
int load_elf(const char *filename, int64_t virt_to_phys_addend, uint64_t *pentry);
945 e80cfcfc bellard
int load_aout(const char *filename, uint8_t *addr);
946 e80cfcfc bellard
947 e80cfcfc bellard
/* slavio_timer.c */
948 ba3c64fb bellard
void slavio_timer_init(uint32_t addr, int irq, int mode, unsigned int cpu);
949 8d5f07fa bellard
950 e80cfcfc bellard
/* slavio_serial.c */
951 e80cfcfc bellard
SerialState *slavio_serial_init(int base, int irq, CharDriverState *chr1, CharDriverState *chr2);
952 e80cfcfc bellard
void slavio_serial_ms_kbd_init(int base, int irq);
953 e95c8d51 bellard
954 3475187d bellard
/* slavio_misc.c */
955 3475187d bellard
void *slavio_misc_init(uint32_t base, int irq);
956 3475187d bellard
void slavio_set_power_fail(void *opaque, int power_failing);
957 3475187d bellard
958 6f7e9aec bellard
/* esp.c */
959 6f7e9aec bellard
void esp_init(BlockDriverState **bd, int irq, uint32_t espaddr, uint32_t espdaddr);
960 6f7e9aec bellard
961 3475187d bellard
/* sun4u.c */
962 3475187d bellard
extern QEMUMachine sun4u_machine;
963 3475187d bellard
964 64201201 bellard
/* NVRAM helpers */
965 64201201 bellard
#include "hw/m48t59.h"
966 64201201 bellard
967 64201201 bellard
void NVRAM_set_byte (m48t59_t *nvram, uint32_t addr, uint8_t value);
968 64201201 bellard
uint8_t NVRAM_get_byte (m48t59_t *nvram, uint32_t addr);
969 64201201 bellard
void NVRAM_set_word (m48t59_t *nvram, uint32_t addr, uint16_t value);
970 64201201 bellard
uint16_t NVRAM_get_word (m48t59_t *nvram, uint32_t addr);
971 64201201 bellard
void NVRAM_set_lword (m48t59_t *nvram, uint32_t addr, uint32_t value);
972 64201201 bellard
uint32_t NVRAM_get_lword (m48t59_t *nvram, uint32_t addr);
973 64201201 bellard
void NVRAM_set_string (m48t59_t *nvram, uint32_t addr,
974 64201201 bellard
                       const unsigned char *str, uint32_t max);
975 64201201 bellard
int NVRAM_get_string (m48t59_t *nvram, uint8_t *dst, uint16_t addr, int max);
976 64201201 bellard
void NVRAM_set_crc (m48t59_t *nvram, uint32_t addr,
977 64201201 bellard
                    uint32_t start, uint32_t count);
978 64201201 bellard
int PPC_NVRAM_set_params (m48t59_t *nvram, uint16_t NVRAM_size,
979 64201201 bellard
                          const unsigned char *arch,
980 64201201 bellard
                          uint32_t RAM_size, int boot_device,
981 64201201 bellard
                          uint32_t kernel_image, uint32_t kernel_size,
982 28b9b5af bellard
                          const char *cmdline,
983 64201201 bellard
                          uint32_t initrd_image, uint32_t initrd_size,
984 28b9b5af bellard
                          uint32_t NVRAM_image,
985 28b9b5af bellard
                          int width, int height, int depth);
986 64201201 bellard
987 63066f4f bellard
/* adb.c */
988 63066f4f bellard
989 63066f4f bellard
#define MAX_ADB_DEVICES 16
990 63066f4f bellard
991 e2733d20 bellard
#define ADB_MAX_OUT_LEN 16
992 63066f4f bellard
993 e2733d20 bellard
typedef struct ADBDevice ADBDevice;
994 63066f4f bellard
995 e2733d20 bellard
/* buf = NULL means polling */
996 e2733d20 bellard
typedef int ADBDeviceRequest(ADBDevice *d, uint8_t *buf_out,
997 e2733d20 bellard
                              const uint8_t *buf, int len);
998 12c28fed bellard
typedef int ADBDeviceReset(ADBDevice *d);
999 12c28fed bellard
1000 63066f4f bellard
struct ADBDevice {
1001 63066f4f bellard
    struct ADBBusState *bus;
1002 63066f4f bellard
    int devaddr;
1003 63066f4f bellard
    int handler;
1004 e2733d20 bellard
    ADBDeviceRequest *devreq;
1005 12c28fed bellard
    ADBDeviceReset *devreset;
1006 63066f4f bellard
    void *opaque;
1007 63066f4f bellard
};
1008 63066f4f bellard
1009 63066f4f bellard
typedef struct ADBBusState {
1010 63066f4f bellard
    ADBDevice devices[MAX_ADB_DEVICES];
1011 63066f4f bellard
    int nb_devices;
1012 e2733d20 bellard
    int poll_index;
1013 63066f4f bellard
} ADBBusState;
1014 63066f4f bellard
1015 e2733d20 bellard
int adb_request(ADBBusState *s, uint8_t *buf_out,
1016 e2733d20 bellard
                const uint8_t *buf, int len);
1017 e2733d20 bellard
int adb_poll(ADBBusState *s, uint8_t *buf_out);
1018 63066f4f bellard
1019 63066f4f bellard
ADBDevice *adb_register_device(ADBBusState *s, int devaddr, 
1020 e2733d20 bellard
                               ADBDeviceRequest *devreq, 
1021 12c28fed bellard
                               ADBDeviceReset *devreset, 
1022 63066f4f bellard
                               void *opaque);
1023 63066f4f bellard
void adb_kbd_init(ADBBusState *bus);
1024 63066f4f bellard
void adb_mouse_init(ADBBusState *bus);
1025 63066f4f bellard
1026 63066f4f bellard
/* cuda.c */
1027 63066f4f bellard
1028 63066f4f bellard
extern ADBBusState adb_bus;
1029 54fa5af5 bellard
int cuda_init(SetIRQFunc *set_irq, void *irq_opaque, int irq);
1030 63066f4f bellard
1031 bb36d470 bellard
#include "hw/usb.h"
1032 bb36d470 bellard
1033 a594cfbf bellard
/* usb ports of the VM */
1034 a594cfbf bellard
1035 0d92ed30 pbrook
void qemu_register_usb_port(USBPort *port, void *opaque, int index,
1036 0d92ed30 pbrook
                            usb_attachfn attach);
1037 a594cfbf bellard
1038 0d92ed30 pbrook
#define VM_USB_HUB_SIZE 8
1039 a594cfbf bellard
1040 a594cfbf bellard
void do_usb_add(const char *devname);
1041 a594cfbf bellard
void do_usb_del(const char *devname);
1042 a594cfbf bellard
void usb_info(void);
1043 a594cfbf bellard
1044 2e5d83bb pbrook
/* scsi-disk.c */
1045 2e5d83bb pbrook
typedef struct SCSIDevice SCSIDevice;
1046 2e5d83bb pbrook
typedef void (*scsi_completionfn)(void *, uint32_t, int);
1047 2e5d83bb pbrook
1048 2e5d83bb pbrook
SCSIDevice *scsi_disk_init(BlockDriverState *bdrv,
1049 2e5d83bb pbrook
                           scsi_completionfn completion,
1050 2e5d83bb pbrook
                           void *opaque);
1051 2e5d83bb pbrook
void scsi_disk_destroy(SCSIDevice *s);
1052 2e5d83bb pbrook
1053 0fc5c15a pbrook
int32_t scsi_send_command(SCSIDevice *s, uint32_t tag, uint8_t *buf, int lun);
1054 2e5d83bb pbrook
int scsi_read_data(SCSIDevice *s, uint8_t *data, uint32_t len);
1055 2e5d83bb pbrook
int scsi_write_data(SCSIDevice *s, uint8_t *data, uint32_t len);
1056 2e5d83bb pbrook
1057 7d8406be pbrook
/* lsi53c895a.c */
1058 7d8406be pbrook
void lsi_scsi_attach(void *opaque, BlockDriverState *bd, int id);
1059 7d8406be pbrook
void *lsi_scsi_init(PCIBus *bus, int devfn);
1060 7d8406be pbrook
1061 b5ff1b31 bellard
/* integratorcp.c */
1062 40f137e1 pbrook
extern QEMUMachine integratorcp926_machine;
1063 40f137e1 pbrook
extern QEMUMachine integratorcp1026_machine;
1064 b5ff1b31 bellard
1065 cdbdb648 pbrook
/* versatilepb.c */
1066 cdbdb648 pbrook
extern QEMUMachine versatilepb_machine;
1067 16406950 pbrook
extern QEMUMachine versatileab_machine;
1068 cdbdb648 pbrook
1069 daa57963 bellard
/* ps2.c */
1070 daa57963 bellard
void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg);
1071 daa57963 bellard
void *ps2_mouse_init(void (*update_irq)(void *, int), void *update_arg);
1072 daa57963 bellard
void ps2_write_mouse(void *, int val);
1073 daa57963 bellard
void ps2_write_keyboard(void *, int val);
1074 daa57963 bellard
uint32_t ps2_read_data(void *);
1075 daa57963 bellard
void ps2_queue(void *, int b);
1076 f94f5d71 pbrook
void ps2_keyboard_set_translation(void *opaque, int mode);
1077 daa57963 bellard
1078 80337b66 bellard
/* smc91c111.c */
1079 80337b66 bellard
void smc91c111_init(NICInfo *, uint32_t, void *, int);
1080 80337b66 bellard
1081 bdd5003a pbrook
/* pl110.c */
1082 95219897 pbrook
void *pl110_init(DisplayState *ds, uint32_t base, void *pic, int irq, int);
1083 bdd5003a pbrook
1084 cdbdb648 pbrook
/* pl011.c */
1085 cdbdb648 pbrook
void pl011_init(uint32_t base, void *pic, int irq, CharDriverState *chr);
1086 cdbdb648 pbrook
1087 cdbdb648 pbrook
/* pl050.c */
1088 cdbdb648 pbrook
void pl050_init(uint32_t base, void *pic, int irq, int is_mouse);
1089 cdbdb648 pbrook
1090 cdbdb648 pbrook
/* pl080.c */
1091 cdbdb648 pbrook
void *pl080_init(uint32_t base, void *pic, int irq);
1092 cdbdb648 pbrook
1093 cdbdb648 pbrook
/* pl190.c */
1094 cdbdb648 pbrook
void *pl190_init(uint32_t base, void *parent, int irq, int fiq);
1095 cdbdb648 pbrook
1096 cdbdb648 pbrook
/* arm-timer.c */
1097 cdbdb648 pbrook
void sp804_init(uint32_t base, void *pic, int irq);
1098 cdbdb648 pbrook
void icp_pit_init(uint32_t base, void *pic, int irq);
1099 cdbdb648 pbrook
1100 16406950 pbrook
/* arm_boot.c */
1101 16406950 pbrook
1102 16406950 pbrook
void arm_load_kernel(int ram_size, const char *kernel_filename,
1103 16406950 pbrook
                     const char *kernel_cmdline, const char *initrd_filename,
1104 16406950 pbrook
                     int board_id);
1105 16406950 pbrook
1106 27c7ca7e bellard
/* sh7750.c */
1107 27c7ca7e bellard
struct SH7750State;
1108 27c7ca7e bellard
1109 008a8818 pbrook
struct SH7750State *sh7750_init(CPUState * cpu);
1110 27c7ca7e bellard
1111 27c7ca7e bellard
typedef struct {
1112 27c7ca7e bellard
    /* The callback will be triggered if any of the designated lines change */
1113 27c7ca7e bellard
    uint16_t portamask_trigger;
1114 27c7ca7e bellard
    uint16_t portbmask_trigger;
1115 27c7ca7e bellard
    /* Return 0 if no action was taken */
1116 27c7ca7e bellard
    int (*port_change_cb) (uint16_t porta, uint16_t portb,
1117 27c7ca7e bellard
                           uint16_t * periph_pdtra,
1118 27c7ca7e bellard
                           uint16_t * periph_portdira,
1119 27c7ca7e bellard
                           uint16_t * periph_pdtrb,
1120 27c7ca7e bellard
                           uint16_t * periph_portdirb);
1121 27c7ca7e bellard
} sh7750_io_device;
1122 27c7ca7e bellard
1123 27c7ca7e bellard
int sh7750_register_io_device(struct SH7750State *s,
1124 27c7ca7e bellard
                              sh7750_io_device * device);
1125 27c7ca7e bellard
/* tc58128.c */
1126 27c7ca7e bellard
int tc58128_init(struct SH7750State *s, char *zone1, char *zone2);
1127 27c7ca7e bellard
1128 ea2384d3 bellard
#endif /* defined(QEMU_TOOL) */
1129 ea2384d3 bellard
1130 c4b1fcc0 bellard
/* monitor.c */
1131 82c643ff bellard
void monitor_init(CharDriverState *hd, int show_banner);
1132 ea2384d3 bellard
void term_puts(const char *str);
1133 ea2384d3 bellard
void term_vprintf(const char *fmt, va_list ap);
1134 40c3bac3 bellard
void term_printf(const char *fmt, ...) __attribute__ ((__format__ (__printf__, 1, 2)));
1135 c4b1fcc0 bellard
void term_flush(void);
1136 c4b1fcc0 bellard
void term_print_help(void);
1137 ea2384d3 bellard
void monitor_readline(const char *prompt, int is_password,
1138 ea2384d3 bellard
                      char *buf, int buf_size);
1139 ea2384d3 bellard
1140 ea2384d3 bellard
/* readline.c */
1141 ea2384d3 bellard
typedef void ReadLineFunc(void *opaque, const char *str);
1142 ea2384d3 bellard
1143 ea2384d3 bellard
extern int completion_index;
1144 ea2384d3 bellard
void add_completion(const char *str);
1145 ea2384d3 bellard
void readline_handle_byte(int ch);
1146 ea2384d3 bellard
void readline_find_completion(const char *cmdline);
1147 ea2384d3 bellard
const char *readline_get_history(unsigned int index);
1148 ea2384d3 bellard
void readline_start(const char *prompt, int is_password,
1149 ea2384d3 bellard
                    ReadLineFunc *readline_func, void *opaque);
1150 c4b1fcc0 bellard
1151 5e6ad6f9 bellard
void kqemu_record_dump(void);
1152 5e6ad6f9 bellard
1153 fc01f7e7 bellard
#endif /* VL_H */