]> Git Repo - qemu.git/blame - vl.h
Implement iwMMXt instruction set for the PXA270 cpu.
[qemu.git] / vl.h
CommitLineData
fc01f7e7
FB
1/*
2 * QEMU System Emulator header
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights
9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 * copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 * THE SOFTWARE.
23 */
24#ifndef VL_H
25#define VL_H
26
67b915a5
FB
27/* we put basic includes here to avoid repeating them in device drivers */
28#include <stdlib.h>
29#include <stdio.h>
30#include <stdarg.h>
31#include <string.h>
32#include <inttypes.h>
85571bc7 33#include <limits.h>
8a7ddc38 34#include <time.h>
67b915a5
FB
35#include <ctype.h>
36#include <errno.h>
37#include <unistd.h>
38#include <fcntl.h>
7d3505c5 39#include <sys/stat.h>
67b915a5
FB
40
41#ifndef O_LARGEFILE
42#define O_LARGEFILE 0
43#endif
40c3bac3
FB
44#ifndef O_BINARY
45#define O_BINARY 0
46#endif
67b915a5 47
71c2fd5c
TS
48#ifndef ENOMEDIUM
49#define ENOMEDIUM ENODEV
50#endif
2e9671da 51
67b915a5 52#ifdef _WIN32
a18e524a 53#include <windows.h>
ac62f715 54#define fsync _commit
57d1a2b6
FB
55#define lseek _lseeki64
56#define ENOTSUP 4096
beac80cd
FB
57extern int qemu_ftruncate64(int, int64_t);
58#define ftruncate qemu_ftruncate64
59
57d1a2b6
FB
60
61static inline char *realpath(const char *path, char *resolved_path)
62{
63 _fullpath(resolved_path, path, _MAX_PATH);
64 return resolved_path;
65}
ec3757de
FB
66
67#define PRId64 "I64d"
26a76461
FB
68#define PRIx64 "I64x"
69#define PRIu64 "I64u"
70#define PRIo64 "I64o"
67b915a5 71#endif
8a7ddc38 72
ea2384d3
FB
73#ifdef QEMU_TOOL
74
75/* we use QEMU_TOOL in the command line tools which do not depend on
76 the target CPU type */
77#include "config-host.h"
78#include <setjmp.h>
79#include "osdep.h"
80#include "bswap.h"
81
82#else
83
4f209290 84#include "audio/audio.h"
16f62432
FB
85#include "cpu.h"
86
ea2384d3
FB
87#endif /* !defined(QEMU_TOOL) */
88
67b915a5
FB
89#ifndef glue
90#define xglue(x, y) x ## y
91#define glue(x, y) xglue(x, y)
92#define stringify(s) tostring(s)
93#define tostring(s) #s
94#endif
95
24236869
FB
96#ifndef MIN
97#define MIN(a, b) (((a) < (b)) ? (a) : (b))
98#endif
99#ifndef MAX
100#define MAX(a, b) (((a) > (b)) ? (a) : (b))
101#endif
102
18607dcb
FB
103/* cutils.c */
104void pstrcpy(char *buf, int buf_size, const char *str);
105char *pstrcat(char *buf, int buf_size, const char *s);
106int strstart(const char *str, const char *val, const char **ptr);
107int stristart(const char *str, const char *val, const char **ptr);
108
33e3963e 109/* vl.c */
80cabfad 110uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c);
313aa567 111
80cabfad
FB
112void hw_error(const char *fmt, ...);
113
80cabfad
FB
114extern const char *bios_dir;
115
8a7ddc38 116extern int vm_running;
c35734b2 117extern const char *qemu_name;
8a7ddc38 118
0bd48850
FB
119typedef struct vm_change_state_entry VMChangeStateEntry;
120typedef void VMChangeStateHandler(void *opaque, int running);
8a7ddc38
FB
121typedef void VMStopHandler(void *opaque, int reason);
122
0bd48850
FB
123VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler *cb,
124 void *opaque);
125void qemu_del_vm_change_state_handler(VMChangeStateEntry *e);
126
8a7ddc38
FB
127int qemu_add_vm_stop_handler(VMStopHandler *cb, void *opaque);
128void qemu_del_vm_stop_handler(VMStopHandler *cb, void *opaque);
129
130void vm_start(void);
131void vm_stop(int reason);
132
bb0c6722
FB
133typedef void QEMUResetHandler(void *opaque);
134
135void qemu_register_reset(QEMUResetHandler *func, void *opaque);
136void qemu_system_reset_request(void);
137void qemu_system_shutdown_request(void);
3475187d
FB
138void qemu_system_powerdown_request(void);
139#if !defined(TARGET_SPARC)
140// Please implement a power failure function to signal the OS
141#define qemu_system_powerdown() do{}while(0)
142#else
143void qemu_system_powerdown(void);
144#endif
bb0c6722 145
ea2384d3
FB
146void main_loop_wait(int timeout);
147
0ced6589
FB
148extern int ram_size;
149extern int bios_size;
ee22c2f7 150extern int rtc_utc;
1f04275e 151extern int cirrus_vga_enabled;
d34cab9f 152extern int vmsvga_enabled;
28b9b5af
FB
153extern int graphic_width;
154extern int graphic_height;
155extern int graphic_depth;
3d11d0eb 156extern const char *keyboard_layout;
d993e026 157extern int kqemu_allowed;
a09db21f 158extern int win2k_install_hack;
bb36d470 159extern int usb_enabled;
6a00d601 160extern int smp_cpus;
a171fe39 161extern int graphic_rotate;
667accab 162extern int no_quit;
8e71621f 163extern int semihosting_enabled;
3c07f8e8 164extern int autostart;
47d5d01a 165extern const char *bootp_filename;
0ced6589 166
9ae02555
TS
167#define MAX_OPTION_ROMS 16
168extern const char *option_rom[MAX_OPTION_ROMS];
169extern int nb_option_roms;
170
0ced6589 171/* XXX: make it dynamic */
970ac5a3 172#define MAX_BIOS_SIZE (4 * 1024 * 1024)
75956cf0 173#if defined (TARGET_PPC) || defined (TARGET_SPARC64)
d5295253 174#define BIOS_SIZE ((512 + 32) * 1024)
6af0bf9c 175#elif defined(TARGET_MIPS)
567daa49 176#define BIOS_SIZE (4 * 1024 * 1024)
0ced6589 177#endif
aaaa7df6 178
63066f4f
FB
179/* keyboard/mouse support */
180
181#define MOUSE_EVENT_LBUTTON 0x01
182#define MOUSE_EVENT_RBUTTON 0x02
183#define MOUSE_EVENT_MBUTTON 0x04
184
185typedef void QEMUPutKBDEvent(void *opaque, int keycode);
186typedef void QEMUPutMouseEvent(void *opaque, int dx, int dy, int dz, int buttons_state);
187
455204eb
TS
188typedef struct QEMUPutMouseEntry {
189 QEMUPutMouseEvent *qemu_put_mouse_event;
190 void *qemu_put_mouse_event_opaque;
191 int qemu_put_mouse_event_absolute;
192 char *qemu_put_mouse_event_name;
193
194 /* used internally by qemu for handling mice */
195 struct QEMUPutMouseEntry *next;
196} QEMUPutMouseEntry;
197
63066f4f 198void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque);
455204eb
TS
199QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
200 void *opaque, int absolute,
201 const char *name);
202void qemu_remove_mouse_event_handler(QEMUPutMouseEntry *entry);
63066f4f
FB
203
204void kbd_put_keycode(int keycode);
205void kbd_mouse_event(int dx, int dy, int dz, int buttons_state);
09b26c5e 206int kbd_mouse_is_absolute(void);
63066f4f 207
455204eb
TS
208void do_info_mice(void);
209void do_mouse_set(int index);
210
82c643ff
FB
211/* keysym is a unicode code except for special keys (see QEMU_KEY_xxx
212 constants) */
213#define QEMU_KEY_ESC1(c) ((c) | 0xe100)
214#define QEMU_KEY_BACKSPACE 0x007f
215#define QEMU_KEY_UP QEMU_KEY_ESC1('A')
216#define QEMU_KEY_DOWN QEMU_KEY_ESC1('B')
217#define QEMU_KEY_RIGHT QEMU_KEY_ESC1('C')
218#define QEMU_KEY_LEFT QEMU_KEY_ESC1('D')
219#define QEMU_KEY_HOME QEMU_KEY_ESC1(1)
220#define QEMU_KEY_END QEMU_KEY_ESC1(4)
221#define QEMU_KEY_PAGEUP QEMU_KEY_ESC1(5)
222#define QEMU_KEY_PAGEDOWN QEMU_KEY_ESC1(6)
223#define QEMU_KEY_DELETE QEMU_KEY_ESC1(3)
224
225#define QEMU_KEY_CTRL_UP 0xe400
226#define QEMU_KEY_CTRL_DOWN 0xe401
227#define QEMU_KEY_CTRL_LEFT 0xe402
228#define QEMU_KEY_CTRL_RIGHT 0xe403
229#define QEMU_KEY_CTRL_HOME 0xe404
230#define QEMU_KEY_CTRL_END 0xe405
231#define QEMU_KEY_CTRL_PAGEUP 0xe406
232#define QEMU_KEY_CTRL_PAGEDOWN 0xe407
233
234void kbd_put_keysym(int keysym);
235
c20709aa
FB
236/* async I/O support */
237
238typedef void IOReadHandler(void *opaque, const uint8_t *buf, int size);
239typedef int IOCanRWHandler(void *opaque);
7c9d8e07 240typedef void IOHandler(void *opaque);
c20709aa 241
7c9d8e07
FB
242int qemu_set_fd_handler2(int fd,
243 IOCanRWHandler *fd_read_poll,
244 IOHandler *fd_read,
245 IOHandler *fd_write,
246 void *opaque);
247int qemu_set_fd_handler(int fd,
248 IOHandler *fd_read,
249 IOHandler *fd_write,
250 void *opaque);
c20709aa 251
f331110f
FB
252/* Polling handling */
253
254/* return TRUE if no sleep should be done afterwards */
255typedef int PollingFunc(void *opaque);
256
257int qemu_add_polling_cb(PollingFunc *func, void *opaque);
258void qemu_del_polling_cb(PollingFunc *func, void *opaque);
259
a18e524a
FB
260#ifdef _WIN32
261/* Wait objects handling */
262typedef void WaitObjectFunc(void *opaque);
263
264int qemu_add_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque);
265void qemu_del_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque);
266#endif
267
86e94dea
TS
268typedef struct QEMUBH QEMUBH;
269
82c643ff
FB
270/* character device */
271
272#define CHR_EVENT_BREAK 0 /* serial break char */
ea2384d3 273#define CHR_EVENT_FOCUS 1 /* focus to this terminal (modal input needed) */
86e94dea 274#define CHR_EVENT_RESET 2 /* new connection established */
2122c51a
FB
275
276
277#define CHR_IOCTL_SERIAL_SET_PARAMS 1
278typedef struct {
279 int speed;
280 int parity;
281 int data_bits;
282 int stop_bits;
283} QEMUSerialSetParams;
284
285#define CHR_IOCTL_SERIAL_SET_BREAK 2
286
287#define CHR_IOCTL_PP_READ_DATA 3
288#define CHR_IOCTL_PP_WRITE_DATA 4
289#define CHR_IOCTL_PP_READ_CONTROL 5
290#define CHR_IOCTL_PP_WRITE_CONTROL 6
291#define CHR_IOCTL_PP_READ_STATUS 7
5867c88a
TS
292#define CHR_IOCTL_PP_EPP_READ_ADDR 8
293#define CHR_IOCTL_PP_EPP_READ 9
294#define CHR_IOCTL_PP_EPP_WRITE_ADDR 10
295#define CHR_IOCTL_PP_EPP_WRITE 11
2122c51a 296
82c643ff
FB
297typedef void IOEventHandler(void *opaque, int event);
298
299typedef struct CharDriverState {
300 int (*chr_write)(struct CharDriverState *s, const uint8_t *buf, int len);
e5b0bc44 301 void (*chr_update_read_handler)(struct CharDriverState *s);
2122c51a 302 int (*chr_ioctl)(struct CharDriverState *s, int cmd, void *arg);
82c643ff 303 IOEventHandler *chr_event;
e5b0bc44
PB
304 IOCanRWHandler *chr_can_read;
305 IOReadHandler *chr_read;
306 void *handler_opaque;
eb45f5fe 307 void (*chr_send_event)(struct CharDriverState *chr, int event);
f331110f 308 void (*chr_close)(struct CharDriverState *chr);
82c643ff 309 void *opaque;
20d8a3ed 310 int focus;
86e94dea 311 QEMUBH *bh;
82c643ff
FB
312} CharDriverState;
313
5856de80 314CharDriverState *qemu_chr_open(const char *filename);
82c643ff
FB
315void qemu_chr_printf(CharDriverState *s, const char *fmt, ...);
316int qemu_chr_write(CharDriverState *s, const uint8_t *buf, int len);
ea2384d3 317void qemu_chr_send_event(CharDriverState *s, int event);
e5b0bc44
PB
318void qemu_chr_add_handlers(CharDriverState *s,
319 IOCanRWHandler *fd_can_read,
320 IOReadHandler *fd_read,
321 IOEventHandler *fd_event,
322 void *opaque);
2122c51a 323int qemu_chr_ioctl(CharDriverState *s, int cmd, void *arg);
86e94dea 324void qemu_chr_reset(CharDriverState *s);
e5b0bc44
PB
325int qemu_chr_can_read(CharDriverState *s);
326void qemu_chr_read(CharDriverState *s, uint8_t *buf, int len);
f8d179e3 327
82c643ff
FB
328/* consoles */
329
330typedef struct DisplayState DisplayState;
331typedef struct TextConsole TextConsole;
332
95219897
PB
333typedef void (*vga_hw_update_ptr)(void *);
334typedef void (*vga_hw_invalidate_ptr)(void *);
335typedef void (*vga_hw_screen_dump_ptr)(void *, const char *);
336
337TextConsole *graphic_console_init(DisplayState *ds, vga_hw_update_ptr update,
338 vga_hw_invalidate_ptr invalidate,
339 vga_hw_screen_dump_ptr screen_dump,
340 void *opaque);
341void vga_hw_update(void);
342void vga_hw_invalidate(void);
343void vga_hw_screen_dump(const char *filename);
344
345int is_graphic_console(void);
82c643ff
FB
346CharDriverState *text_console_init(DisplayState *ds);
347void console_select(unsigned int index);
348
8d11df9e
FB
349/* serial ports */
350
351#define MAX_SERIAL_PORTS 4
352
353extern CharDriverState *serial_hds[MAX_SERIAL_PORTS];
354
6508fe59
FB
355/* parallel ports */
356
357#define MAX_PARALLEL_PORTS 3
358
359extern CharDriverState *parallel_hds[MAX_PARALLEL_PORTS];
360
5867c88a
TS
361struct ParallelIOArg {
362 void *buffer;
363 int count;
364};
365
7c9d8e07
FB
366/* VLANs support */
367
368typedef struct VLANClientState VLANClientState;
369
370struct VLANClientState {
371 IOReadHandler *fd_read;
d861b05e
PB
372 /* Packets may still be sent if this returns zero. It's used to
373 rate-limit the slirp code. */
374 IOCanRWHandler *fd_can_read;
7c9d8e07
FB
375 void *opaque;
376 struct VLANClientState *next;
377 struct VLANState *vlan;
378 char info_str[256];
379};
380
381typedef struct VLANState {
382 int id;
383 VLANClientState *first_client;
384 struct VLANState *next;
385} VLANState;
386
387VLANState *qemu_find_vlan(int id);
388VLANClientState *qemu_new_vlan_client(VLANState *vlan,
d861b05e
PB
389 IOReadHandler *fd_read,
390 IOCanRWHandler *fd_can_read,
391 void *opaque);
392int qemu_can_send_packet(VLANClientState *vc);
7c9d8e07 393void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size);
d861b05e 394void qemu_handler_true(void *opaque);
7c9d8e07
FB
395
396void do_info_network(void);
397
7fb843f8
FB
398/* TAP win32 */
399int tap_win32_init(VLANState *vlan, const char *ifname);
7fb843f8 400
7c9d8e07 401/* NIC info */
c4b1fcc0
FB
402
403#define MAX_NICS 8
404
7c9d8e07 405typedef struct NICInfo {
c4b1fcc0 406 uint8_t macaddr[6];
a41b2ff2 407 const char *model;
7c9d8e07
FB
408 VLANState *vlan;
409} NICInfo;
c4b1fcc0
FB
410
411extern int nb_nics;
7c9d8e07 412extern NICInfo nd_table[MAX_NICS];
8a7ddc38
FB
413
414/* timers */
415
416typedef struct QEMUClock QEMUClock;
417typedef struct QEMUTimer QEMUTimer;
418typedef void QEMUTimerCB(void *opaque);
419
420/* The real time clock should be used only for stuff which does not
421 change the virtual machine state, as it is run even if the virtual
69b91039 422 machine is stopped. The real time clock has a frequency of 1000
8a7ddc38
FB
423 Hz. */
424extern QEMUClock *rt_clock;
425
e80cfcfc 426/* The virtual clock is only run during the emulation. It is stopped
8a7ddc38
FB
427 when the virtual machine is stopped. Virtual timers use a high
428 precision clock, usually cpu cycles (use ticks_per_sec). */
429extern QEMUClock *vm_clock;
430
431int64_t qemu_get_clock(QEMUClock *clock);
432
433QEMUTimer *qemu_new_timer(QEMUClock *clock, QEMUTimerCB *cb, void *opaque);
434void qemu_free_timer(QEMUTimer *ts);
435void qemu_del_timer(QEMUTimer *ts);
436void qemu_mod_timer(QEMUTimer *ts, int64_t expire_time);
437int qemu_timer_pending(QEMUTimer *ts);
438
439extern int64_t ticks_per_sec;
440extern int pit_min_timer_count;
441
1dce7c3c 442int64_t cpu_get_ticks(void);
8a7ddc38
FB
443void cpu_enable_ticks(void);
444void cpu_disable_ticks(void);
445
446/* VM Load/Save */
447
faea38e7 448typedef struct QEMUFile QEMUFile;
8a7ddc38 449
faea38e7
FB
450QEMUFile *qemu_fopen(const char *filename, const char *mode);
451void qemu_fflush(QEMUFile *f);
452void qemu_fclose(QEMUFile *f);
8a7ddc38
FB
453void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, int size);
454void qemu_put_byte(QEMUFile *f, int v);
455void qemu_put_be16(QEMUFile *f, unsigned int v);
456void qemu_put_be32(QEMUFile *f, unsigned int v);
457void qemu_put_be64(QEMUFile *f, uint64_t v);
458int qemu_get_buffer(QEMUFile *f, uint8_t *buf, int size);
459int qemu_get_byte(QEMUFile *f);
460unsigned int qemu_get_be16(QEMUFile *f);
461unsigned int qemu_get_be32(QEMUFile *f);
462uint64_t qemu_get_be64(QEMUFile *f);
463
464static inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv)
465{
466 qemu_put_be64(f, *pv);
467}
468
469static inline void qemu_put_be32s(QEMUFile *f, const uint32_t *pv)
470{
471 qemu_put_be32(f, *pv);
472}
473
474static inline void qemu_put_be16s(QEMUFile *f, const uint16_t *pv)
475{
476 qemu_put_be16(f, *pv);
477}
478
479static inline void qemu_put_8s(QEMUFile *f, const uint8_t *pv)
480{
481 qemu_put_byte(f, *pv);
482}
483
484static inline void qemu_get_be64s(QEMUFile *f, uint64_t *pv)
485{
486 *pv = qemu_get_be64(f);
487}
488
489static inline void qemu_get_be32s(QEMUFile *f, uint32_t *pv)
490{
491 *pv = qemu_get_be32(f);
492}
493
494static inline void qemu_get_be16s(QEMUFile *f, uint16_t *pv)
495{
496 *pv = qemu_get_be16(f);
497}
498
499static inline void qemu_get_8s(QEMUFile *f, uint8_t *pv)
500{
501 *pv = qemu_get_byte(f);
502}
503
c27004ec
FB
504#if TARGET_LONG_BITS == 64
505#define qemu_put_betl qemu_put_be64
506#define qemu_get_betl qemu_get_be64
507#define qemu_put_betls qemu_put_be64s
508#define qemu_get_betls qemu_get_be64s
509#else
510#define qemu_put_betl qemu_put_be32
511#define qemu_get_betl qemu_get_be32
512#define qemu_put_betls qemu_put_be32s
513#define qemu_get_betls qemu_get_be32s
514#endif
515
8a7ddc38
FB
516int64_t qemu_ftell(QEMUFile *f);
517int64_t qemu_fseek(QEMUFile *f, int64_t pos, int whence);
518
519typedef void SaveStateHandler(QEMUFile *f, void *opaque);
520typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
521
8a7ddc38
FB
522int register_savevm(const char *idstr,
523 int instance_id,
524 int version_id,
525 SaveStateHandler *save_state,
526 LoadStateHandler *load_state,
527 void *opaque);
528void qemu_get_timer(QEMUFile *f, QEMUTimer *ts);
529void qemu_put_timer(QEMUFile *f, QEMUTimer *ts);
c4b1fcc0 530
6a00d601
FB
531void cpu_save(QEMUFile *f, void *opaque);
532int cpu_load(QEMUFile *f, void *opaque, int version_id);
533
faea38e7
FB
534void do_savevm(const char *name);
535void do_loadvm(const char *name);
536void do_delvm(const char *name);
537void do_info_snapshots(void);
538
83f64091 539/* bottom halves */
83f64091
FB
540typedef void QEMUBHFunc(void *opaque);
541
542QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque);
543void qemu_bh_schedule(QEMUBH *bh);
544void qemu_bh_cancel(QEMUBH *bh);
545void qemu_bh_delete(QEMUBH *bh);
6eb5733a 546int qemu_bh_poll(void);
83f64091 547
fc01f7e7
FB
548/* block.c */
549typedef struct BlockDriverState BlockDriverState;
ea2384d3
FB
550typedef struct BlockDriver BlockDriver;
551
552extern BlockDriver bdrv_raw;
19cb3738 553extern BlockDriver bdrv_host_device;
ea2384d3
FB
554extern BlockDriver bdrv_cow;
555extern BlockDriver bdrv_qcow;
556extern BlockDriver bdrv_vmdk;
3c56521b 557extern BlockDriver bdrv_cloop;
585d0ed9 558extern BlockDriver bdrv_dmg;
a8753c34 559extern BlockDriver bdrv_bochs;
6a0f9e82 560extern BlockDriver bdrv_vpc;
de167e41 561extern BlockDriver bdrv_vvfat;
faea38e7
FB
562extern BlockDriver bdrv_qcow2;
563
564typedef struct BlockDriverInfo {
565 /* in bytes, 0 if irrelevant */
566 int cluster_size;
567 /* offset at which the VM state can be saved (0 if not possible) */
568 int64_t vm_state_offset;
569} BlockDriverInfo;
570
571typedef struct QEMUSnapshotInfo {
572 char id_str[128]; /* unique snapshot id */
573 /* the following fields are informative. They are not needed for
574 the consistency of the snapshot */
575 char name[256]; /* user choosen name */
576 uint32_t vm_state_size; /* VM state info size */
577 uint32_t date_sec; /* UTC date of the snapshot */
578 uint32_t date_nsec;
579 uint64_t vm_clock_nsec; /* VM clock relative to boot */
580} QEMUSnapshotInfo;
ea2384d3 581
83f64091
FB
582#define BDRV_O_RDONLY 0x0000
583#define BDRV_O_RDWR 0x0002
584#define BDRV_O_ACCESS 0x0003
585#define BDRV_O_CREAT 0x0004 /* create an empty file */
586#define BDRV_O_SNAPSHOT 0x0008 /* open the file read only and save writes in a snapshot */
587#define BDRV_O_FILE 0x0010 /* open as a raw file (do not try to
588 use a disk image format on top of
589 it (default for
590 bdrv_file_open()) */
591
ea2384d3
FB
592void bdrv_init(void);
593BlockDriver *bdrv_find_format(const char *format_name);
594int bdrv_create(BlockDriver *drv,
595 const char *filename, int64_t size_in_sectors,
596 const char *backing_file, int flags);
c4b1fcc0
FB
597BlockDriverState *bdrv_new(const char *device_name);
598void bdrv_delete(BlockDriverState *bs);
83f64091
FB
599int bdrv_file_open(BlockDriverState **pbs, const char *filename, int flags);
600int bdrv_open(BlockDriverState *bs, const char *filename, int flags);
601int bdrv_open2(BlockDriverState *bs, const char *filename, int flags,
ea2384d3 602 BlockDriver *drv);
fc01f7e7
FB
603void bdrv_close(BlockDriverState *bs);
604int bdrv_read(BlockDriverState *bs, int64_t sector_num,
605 uint8_t *buf, int nb_sectors);
606int bdrv_write(BlockDriverState *bs, int64_t sector_num,
607 const uint8_t *buf, int nb_sectors);
83f64091
FB
608int bdrv_pread(BlockDriverState *bs, int64_t offset,
609 void *buf, int count);
610int bdrv_pwrite(BlockDriverState *bs, int64_t offset,
611 const void *buf, int count);
612int bdrv_truncate(BlockDriverState *bs, int64_t offset);
613int64_t bdrv_getlength(BlockDriverState *bs);
fc01f7e7 614void bdrv_get_geometry(BlockDriverState *bs, int64_t *nb_sectors_ptr);
33e3963e 615int bdrv_commit(BlockDriverState *bs);
77fef8c1 616void bdrv_set_boot_sector(BlockDriverState *bs, const uint8_t *data, int size);
83f64091
FB
617/* async block I/O */
618typedef struct BlockDriverAIOCB BlockDriverAIOCB;
619typedef void BlockDriverCompletionFunc(void *opaque, int ret);
620
ce1a14dc
PB
621BlockDriverAIOCB *bdrv_aio_read(BlockDriverState *bs, int64_t sector_num,
622 uint8_t *buf, int nb_sectors,
623 BlockDriverCompletionFunc *cb, void *opaque);
624BlockDriverAIOCB *bdrv_aio_write(BlockDriverState *bs, int64_t sector_num,
625 const uint8_t *buf, int nb_sectors,
626 BlockDriverCompletionFunc *cb, void *opaque);
83f64091 627void bdrv_aio_cancel(BlockDriverAIOCB *acb);
83f64091
FB
628
629void qemu_aio_init(void);
630void qemu_aio_poll(void);
6192bc37 631void qemu_aio_flush(void);
83f64091
FB
632void qemu_aio_wait_start(void);
633void qemu_aio_wait(void);
634void qemu_aio_wait_end(void);
635
2bac6019
AZ
636int qemu_key_check(BlockDriverState *bs, const char *name);
637
7a6cba61
PB
638/* Ensure contents are flushed to disk. */
639void bdrv_flush(BlockDriverState *bs);
33e3963e 640
c4b1fcc0
FB
641#define BDRV_TYPE_HD 0
642#define BDRV_TYPE_CDROM 1
643#define BDRV_TYPE_FLOPPY 2
4dbb0f50
TS
644#define BIOS_ATA_TRANSLATION_AUTO 0
645#define BIOS_ATA_TRANSLATION_NONE 1
646#define BIOS_ATA_TRANSLATION_LBA 2
647#define BIOS_ATA_TRANSLATION_LARGE 3
648#define BIOS_ATA_TRANSLATION_RECHS 4
c4b1fcc0
FB
649
650void bdrv_set_geometry_hint(BlockDriverState *bs,
651 int cyls, int heads, int secs);
652void bdrv_set_type_hint(BlockDriverState *bs, int type);
46d4767d 653void bdrv_set_translation_hint(BlockDriverState *bs, int translation);
c4b1fcc0
FB
654void bdrv_get_geometry_hint(BlockDriverState *bs,
655 int *pcyls, int *pheads, int *psecs);
656int bdrv_get_type_hint(BlockDriverState *bs);
46d4767d 657int bdrv_get_translation_hint(BlockDriverState *bs);
c4b1fcc0
FB
658int bdrv_is_removable(BlockDriverState *bs);
659int bdrv_is_read_only(BlockDriverState *bs);
660int bdrv_is_inserted(BlockDriverState *bs);
19cb3738 661int bdrv_media_changed(BlockDriverState *bs);
c4b1fcc0
FB
662int bdrv_is_locked(BlockDriverState *bs);
663void bdrv_set_locked(BlockDriverState *bs, int locked);
19cb3738 664void bdrv_eject(BlockDriverState *bs, int eject_flag);
c4b1fcc0
FB
665void bdrv_set_change_cb(BlockDriverState *bs,
666 void (*change_cb)(void *opaque), void *opaque);
ea2384d3 667void bdrv_get_format(BlockDriverState *bs, char *buf, int buf_size);
c4b1fcc0
FB
668void bdrv_info(void);
669BlockDriverState *bdrv_find(const char *name);
82c643ff 670void bdrv_iterate(void (*it)(void *opaque, const char *name), void *opaque);
ea2384d3
FB
671int bdrv_is_encrypted(BlockDriverState *bs);
672int bdrv_set_key(BlockDriverState *bs, const char *key);
673void bdrv_iterate_format(void (*it)(void *opaque, const char *name),
674 void *opaque);
675const char *bdrv_get_device_name(BlockDriverState *bs);
faea38e7
FB
676int bdrv_write_compressed(BlockDriverState *bs, int64_t sector_num,
677 const uint8_t *buf, int nb_sectors);
678int bdrv_get_info(BlockDriverState *bs, BlockDriverInfo *bdi);
c4b1fcc0 679
83f64091
FB
680void bdrv_get_backing_filename(BlockDriverState *bs,
681 char *filename, int filename_size);
faea38e7
FB
682int bdrv_snapshot_create(BlockDriverState *bs,
683 QEMUSnapshotInfo *sn_info);
684int bdrv_snapshot_goto(BlockDriverState *bs,
685 const char *snapshot_id);
686int bdrv_snapshot_delete(BlockDriverState *bs, const char *snapshot_id);
687int bdrv_snapshot_list(BlockDriverState *bs,
688 QEMUSnapshotInfo **psn_info);
689char *bdrv_snapshot_dump(char *buf, int buf_size, QEMUSnapshotInfo *sn);
690
691char *get_human_readable_size(char *buf, int buf_size, int64_t size);
83f64091
FB
692int path_is_absolute(const char *path);
693void path_combine(char *dest, int dest_size,
694 const char *base_path,
695 const char *filename);
ea2384d3
FB
696
697#ifndef QEMU_TOOL
54fa5af5
FB
698
699typedef void QEMUMachineInitFunc(int ram_size, int vga_ram_size,
700 int boot_device,
701 DisplayState *ds, const char **fd_filename, int snapshot,
702 const char *kernel_filename, const char *kernel_cmdline,
94fc95cd 703 const char *initrd_filename, const char *cpu_model);
54fa5af5
FB
704
705typedef struct QEMUMachine {
706 const char *name;
707 const char *desc;
708 QEMUMachineInitFunc *init;
709 struct QEMUMachine *next;
710} QEMUMachine;
711
712int qemu_register_machine(QEMUMachine *m);
713
714typedef void SetIRQFunc(void *opaque, int irq_num, int level);
715
94fc95cd
JM
716#if defined(TARGET_PPC)
717void ppc_cpu_list (FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...));
718#endif
719
33d68b5f
TS
720#if defined(TARGET_MIPS)
721void mips_cpu_list (FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...));
722#endif
723
d537cf6c
PB
724#include "hw/irq.h"
725
26aa7d72
FB
726/* ISA bus */
727
728extern target_phys_addr_t isa_mem_base;
729
730typedef void (IOPortWriteFunc)(void *opaque, uint32_t address, uint32_t data);
731typedef uint32_t (IOPortReadFunc)(void *opaque, uint32_t address);
732
733int register_ioport_read(int start, int length, int size,
734 IOPortReadFunc *func, void *opaque);
735int register_ioport_write(int start, int length, int size,
736 IOPortWriteFunc *func, void *opaque);
69b91039
FB
737void isa_unassign_ioport(int start, int length);
738
aef445bd
PB
739void isa_mmio_init(target_phys_addr_t base, target_phys_addr_t size);
740
69b91039
FB
741/* PCI bus */
742
69b91039
FB
743extern target_phys_addr_t pci_mem_base;
744
46e50e9d 745typedef struct PCIBus PCIBus;
69b91039
FB
746typedef struct PCIDevice PCIDevice;
747
748typedef void PCIConfigWriteFunc(PCIDevice *pci_dev,
749 uint32_t address, uint32_t data, int len);
750typedef uint32_t PCIConfigReadFunc(PCIDevice *pci_dev,
751 uint32_t address, int len);
752typedef void PCIMapIORegionFunc(PCIDevice *pci_dev, int region_num,
753 uint32_t addr, uint32_t size, int type);
754
755#define PCI_ADDRESS_SPACE_MEM 0x00
756#define PCI_ADDRESS_SPACE_IO 0x01
757#define PCI_ADDRESS_SPACE_MEM_PREFETCH 0x08
758
759typedef struct PCIIORegion {
5768f5ac 760 uint32_t addr; /* current PCI mapping address. -1 means not mapped */
69b91039
FB
761 uint32_t size;
762 uint8_t type;
763 PCIMapIORegionFunc *map_func;
764} PCIIORegion;
765
8a8696a3
FB
766#define PCI_ROM_SLOT 6
767#define PCI_NUM_REGIONS 7
502a5395
PB
768
769#define PCI_DEVICES_MAX 64
770
771#define PCI_VENDOR_ID 0x00 /* 16 bits */
772#define PCI_DEVICE_ID 0x02 /* 16 bits */
773#define PCI_COMMAND 0x04 /* 16 bits */
774#define PCI_COMMAND_IO 0x1 /* Enable response in I/O space */
775#define PCI_COMMAND_MEMORY 0x2 /* Enable response in Memory space */
776#define PCI_CLASS_DEVICE 0x0a /* Device class */
777#define PCI_INTERRUPT_LINE 0x3c /* 8 bits */
778#define PCI_INTERRUPT_PIN 0x3d /* 8 bits */
779#define PCI_MIN_GNT 0x3e /* 8 bits */
780#define PCI_MAX_LAT 0x3f /* 8 bits */
781
69b91039
FB
782struct PCIDevice {
783 /* PCI config space */
784 uint8_t config[256];
785
786 /* the following fields are read only */
46e50e9d 787 PCIBus *bus;
69b91039
FB
788 int devfn;
789 char name[64];
8a8696a3 790 PCIIORegion io_regions[PCI_NUM_REGIONS];
69b91039
FB
791
792 /* do not access the following fields */
793 PCIConfigReadFunc *config_read;
794 PCIConfigWriteFunc *config_write;
502a5395 795 /* ??? This is a PC-specific hack, and should be removed. */
5768f5ac 796 int irq_index;
d2b59317 797
d537cf6c
PB
798 /* IRQ objects for the INTA-INTD pins. */
799 qemu_irq *irq;
800
d2b59317
PB
801 /* Current IRQ levels. Used internally by the generic PCI code. */
802 int irq_state[4];
69b91039
FB
803};
804
46e50e9d
FB
805PCIDevice *pci_register_device(PCIBus *bus, const char *name,
806 int instance_size, int devfn,
69b91039
FB
807 PCIConfigReadFunc *config_read,
808 PCIConfigWriteFunc *config_write);
809
810void pci_register_io_region(PCIDevice *pci_dev, int region_num,
811 uint32_t size, int type,
812 PCIMapIORegionFunc *map_func);
813
5768f5ac
FB
814uint32_t pci_default_read_config(PCIDevice *d,
815 uint32_t address, int len);
816void pci_default_write_config(PCIDevice *d,
817 uint32_t address, uint32_t val, int len);
89b6b508
FB
818void pci_device_save(PCIDevice *s, QEMUFile *f);
819int pci_device_load(PCIDevice *s, QEMUFile *f);
5768f5ac 820
d537cf6c 821typedef void (*pci_set_irq_fn)(qemu_irq *pic, int irq_num, int level);
d2b59317
PB
822typedef int (*pci_map_irq_fn)(PCIDevice *pci_dev, int irq_num);
823PCIBus *pci_register_bus(pci_set_irq_fn set_irq, pci_map_irq_fn map_irq,
d537cf6c 824 qemu_irq *pic, int devfn_min, int nirq);
502a5395 825
abcebc7e 826void pci_nic_init(PCIBus *bus, NICInfo *nd, int devfn);
502a5395
PB
827void pci_data_write(void *opaque, uint32_t addr, uint32_t val, int len);
828uint32_t pci_data_read(void *opaque, uint32_t addr, int len);
829int pci_bus_num(PCIBus *s);
80b3ada7 830void pci_for_each_device(int bus_num, void (*fn)(PCIDevice *d));
9995c51f 831
5768f5ac 832void pci_info(void);
80b3ada7
PB
833PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint32_t id,
834 pci_map_irq_fn map_irq, const char *name);
26aa7d72 835
502a5395 836/* prep_pci.c */
d537cf6c 837PCIBus *pci_prep_init(qemu_irq *pic);
77d4bc34 838
502a5395 839/* grackle_pci.c */
d537cf6c 840PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic);
502a5395
PB
841
842/* unin_pci.c */
d537cf6c 843PCIBus *pci_pmac_init(qemu_irq *pic);
502a5395
PB
844
845/* apb_pci.c */
846PCIBus *pci_apb_init(target_ulong special_base, target_ulong mem_base,
d537cf6c 847 qemu_irq *pic);
502a5395 848
d537cf6c 849PCIBus *pci_vpb_init(qemu_irq *pic, int irq, int realview);
502a5395
PB
850
851/* piix_pci.c */
d537cf6c 852PCIBus *i440fx_init(PCIDevice **pi440fx_state, qemu_irq *pic);
f00fc47c 853void i440fx_set_smm(PCIDevice *d, int val);
8f1c91d8 854int piix3_init(PCIBus *bus, int devfn);
f00fc47c 855void i440fx_init_memory_mappings(PCIDevice *d);
a41b2ff2 856
5856de80
TS
857int piix4_init(PCIBus *bus, int devfn);
858
28b9b5af 859/* openpic.c */
e9df014c 860/* OpenPIC have 5 outputs per CPU connected and one IRQ out single output */
47103572 861enum {
e9df014c
JM
862 OPENPIC_OUTPUT_INT = 0, /* IRQ */
863 OPENPIC_OUTPUT_CINT, /* critical IRQ */
864 OPENPIC_OUTPUT_MCK, /* Machine check event */
865 OPENPIC_OUTPUT_DEBUG, /* Inconditional debug event */
866 OPENPIC_OUTPUT_RESET, /* Core reset event */
867 OPENPIC_OUTPUT_NB,
47103572 868};
e9df014c
JM
869qemu_irq *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus,
870 qemu_irq **irqs, qemu_irq irq_out);
28b9b5af 871
54fa5af5 872/* heathrow_pic.c */
d537cf6c 873qemu_irq *heathrow_pic_init(int *pmem_index);
54fa5af5 874
fde7d5bd 875/* gt64xxx.c */
d537cf6c 876PCIBus *pci_gt64120_init(qemu_irq *pic);
fde7d5bd 877
6a36d84e
FB
878#ifdef HAS_AUDIO
879struct soundhw {
880 const char *name;
881 const char *descr;
882 int enabled;
883 int isa;
884 union {
d537cf6c 885 int (*init_isa) (AudioState *s, qemu_irq *pic);
6a36d84e
FB
886 int (*init_pci) (PCIBus *bus, AudioState *s);
887 } init;
888};
889
890extern struct soundhw soundhw[];
891#endif
892
313aa567
FB
893/* vga.c */
894
eee0b836 895#ifndef TARGET_SPARC
74a14f22 896#define VGA_RAM_SIZE (8192 * 1024)
eee0b836
BS
897#else
898#define VGA_RAM_SIZE (9 * 1024 * 1024)
899#endif
313aa567 900
82c643ff 901struct DisplayState {
313aa567
FB
902 uint8_t *data;
903 int linesize;
904 int depth;
d3079cd2 905 int bgr; /* BGR color order instead of RGB. Only valid for depth == 32 */
82c643ff
FB
906 int width;
907 int height;
24236869
FB
908 void *opaque;
909
313aa567
FB
910 void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h);
911 void (*dpy_resize)(struct DisplayState *s, int w, int h);
912 void (*dpy_refresh)(struct DisplayState *s);
d34cab9f
TS
913 void (*dpy_copy)(struct DisplayState *s, int src_x, int src_y,
914 int dst_x, int dst_y, int w, int h);
915 void (*dpy_fill)(struct DisplayState *s, int x, int y,
916 int w, int h, uint32_t c);
917 void (*mouse_set)(int x, int y, int on);
918 void (*cursor_define)(int width, int height, int bpp, int hot_x, int hot_y,
919 uint8_t *image, uint8_t *mask);
82c643ff 920};
313aa567
FB
921
922static inline void dpy_update(DisplayState *s, int x, int y, int w, int h)
923{
924 s->dpy_update(s, x, y, w, h);
925}
926
927static inline void dpy_resize(DisplayState *s, int w, int h)
928{
929 s->dpy_resize(s, w, h);
930}
931
89b6b508
FB
932int isa_vga_init(DisplayState *ds, uint8_t *vga_ram_base,
933 unsigned long vga_ram_offset, int vga_ram_size);
934int pci_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base,
935 unsigned long vga_ram_offset, int vga_ram_size,
936 unsigned long vga_bios_offset, int vga_bios_size);
2abec30b
TS
937int isa_vga_mm_init(DisplayState *ds, uint8_t *vga_ram_base,
938 unsigned long vga_ram_offset, int vga_ram_size,
939 target_phys_addr_t vram_base, target_phys_addr_t ctrl_base,
940 int it_shift);
313aa567 941
d6bfa22f 942/* cirrus_vga.c */
46e50e9d 943void pci_cirrus_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base,
d6bfa22f 944 unsigned long vga_ram_offset, int vga_ram_size);
d6bfa22f
FB
945void isa_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base,
946 unsigned long vga_ram_offset, int vga_ram_size);
947
d34cab9f
TS
948/* vmware_vga.c */
949void pci_vmsvga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base,
950 unsigned long vga_ram_offset, int vga_ram_size);
951
313aa567 952/* sdl.c */
43523e93 953void sdl_display_init(DisplayState *ds, int full_screen, int no_frame);
313aa567 954
da4dbf74
FB
955/* cocoa.m */
956void cocoa_display_init(DisplayState *ds, int full_screen);
957
24236869 958/* vnc.c */
73fc9742 959void vnc_display_init(DisplayState *ds, const char *display);
a9ce8590 960void do_info_vnc(void);
24236869 961
6070dd07
TS
962/* x_keymap.c */
963extern uint8_t _translate_keycode(const int key);
964
5391d806
FB
965/* ide.c */
966#define MAX_DISKS 4
967
faea38e7 968extern BlockDriverState *bs_table[MAX_DISKS + 1];
a1bb27b1 969extern BlockDriverState *sd_bdrv;
5391d806 970
d537cf6c 971void isa_ide_init(int iobase, int iobase2, qemu_irq irq,
69b91039 972 BlockDriverState *hd0, BlockDriverState *hd1);
54fa5af5
FB
973void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table,
974 int secondary_ide_enabled);
d537cf6c
PB
975void pci_piix3_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn,
976 qemu_irq *pic);
977int pmac_ide_init (BlockDriverState **hd_table, qemu_irq irq);
5391d806 978
2e5d83bb
PB
979/* cdrom.c */
980int cdrom_read_toc(int nb_sectors, uint8_t *buf, int msf, int start_track);
981int cdrom_read_toc_raw(int nb_sectors, uint8_t *buf, int msf, int session_num);
982
9542611a
TS
983/* ds1225y.c */
984typedef struct ds1225y_t ds1225y_t;
985ds1225y_t *ds1225y_init(target_ulong mem_base, const char *filename);
986
1d14ffa9 987/* es1370.c */
c0fe3827 988int es1370_init (PCIBus *bus, AudioState *s);
1d14ffa9 989
fb065187 990/* sb16.c */
d537cf6c 991int SB16_init (AudioState *s, qemu_irq *pic);
fb065187
FB
992
993/* adlib.c */
d537cf6c 994int Adlib_init (AudioState *s, qemu_irq *pic);
fb065187
FB
995
996/* gus.c */
d537cf6c 997int GUS_init (AudioState *s, qemu_irq *pic);
27503323
FB
998
999/* dma.c */
85571bc7 1000typedef int (*DMA_transfer_handler) (void *opaque, int nchan, int pos, int size);
27503323 1001int DMA_get_channel_mode (int nchan);
85571bc7
FB
1002int DMA_read_memory (int nchan, void *buf, int pos, int size);
1003int DMA_write_memory (int nchan, void *buf, int pos, int size);
27503323
FB
1004void DMA_hold_DREQ (int nchan);
1005void DMA_release_DREQ (int nchan);
16f62432 1006void DMA_schedule(int nchan);
27503323 1007void DMA_run (void);
28b9b5af 1008void DMA_init (int high_page_enable);
27503323 1009void DMA_register_channel (int nchan,
85571bc7
FB
1010 DMA_transfer_handler transfer_handler,
1011 void *opaque);
7138fcfb
FB
1012/* fdc.c */
1013#define MAX_FD 2
1014extern BlockDriverState *fd_table[MAX_FD];
1015
baca51fa
FB
1016typedef struct fdctrl_t fdctrl_t;
1017
d537cf6c 1018fdctrl_t *fdctrl_init (qemu_irq irq, int dma_chann, int mem_mapped,
baca51fa
FB
1019 uint32_t io_base,
1020 BlockDriverState **fds);
1021int fdctrl_get_drive_type(fdctrl_t *fdctrl, int drive_num);
7138fcfb 1022
663e8e51
TS
1023/* eepro100.c */
1024
1025void pci_i82551_init(PCIBus *bus, NICInfo *nd, int devfn);
1026void pci_i82557b_init(PCIBus *bus, NICInfo *nd, int devfn);
1027void pci_i82559er_init(PCIBus *bus, NICInfo *nd, int devfn);
1028
80cabfad
FB
1029/* ne2000.c */
1030
d537cf6c 1031void isa_ne2000_init(int base, qemu_irq irq, NICInfo *nd);
abcebc7e 1032void pci_ne2000_init(PCIBus *bus, NICInfo *nd, int devfn);
80cabfad 1033
a41b2ff2
PB
1034/* rtl8139.c */
1035
abcebc7e 1036void pci_rtl8139_init(PCIBus *bus, NICInfo *nd, int devfn);
a41b2ff2 1037
e3c2613f
FB
1038/* pcnet.c */
1039
abcebc7e 1040void pci_pcnet_init(PCIBus *bus, NICInfo *nd, int devfn);
67e999be 1041void pcnet_h_reset(void *opaque);
d537cf6c 1042void *lance_init(NICInfo *nd, uint32_t leaddr, void *dma_opaque, qemu_irq irq);
67e999be 1043
548df2ac
TS
1044/* vmmouse.c */
1045void *vmmouse_init(void *m);
e3c2613f 1046
80cabfad
FB
1047/* pckbd.c */
1048
b92bb99b
TS
1049void i8042_init(qemu_irq kbd_irq, qemu_irq mouse_irq, uint32_t io_base);
1050void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq, target_ulong base, int it_shift);
80cabfad
FB
1051
1052/* mc146818rtc.c */
1053
8a7ddc38 1054typedef struct RTCState RTCState;
80cabfad 1055
d537cf6c 1056RTCState *rtc_init(int base, qemu_irq irq);
18c6e2ff 1057RTCState *rtc_mm_init(target_phys_addr_t base, int it_shift, qemu_irq irq);
8a7ddc38
FB
1058void rtc_set_memory(RTCState *s, int addr, int val);
1059void rtc_set_date(RTCState *s, const struct tm *tm);
80cabfad
FB
1060
1061/* serial.c */
1062
c4b1fcc0 1063typedef struct SerialState SerialState;
d537cf6c
PB
1064SerialState *serial_init(int base, qemu_irq irq, CharDriverState *chr);
1065SerialState *serial_mm_init (target_ulong base, int it_shift,
1066 qemu_irq irq, CharDriverState *chr,
a4bc3afc
TS
1067 int ioregister);
1068uint32_t serial_mm_readb (void *opaque, target_phys_addr_t addr);
1069void serial_mm_writeb (void *opaque, target_phys_addr_t addr, uint32_t value);
1070uint32_t serial_mm_readw (void *opaque, target_phys_addr_t addr);
1071void serial_mm_writew (void *opaque, target_phys_addr_t addr, uint32_t value);
1072uint32_t serial_mm_readl (void *opaque, target_phys_addr_t addr);
1073void serial_mm_writel (void *opaque, target_phys_addr_t addr, uint32_t value);
80cabfad 1074
6508fe59
FB
1075/* parallel.c */
1076
1077typedef struct ParallelState ParallelState;
d537cf6c 1078ParallelState *parallel_init(int base, qemu_irq irq, CharDriverState *chr);
6508fe59 1079
80cabfad
FB
1080/* i8259.c */
1081
3de388f6
FB
1082typedef struct PicState2 PicState2;
1083extern PicState2 *isa_pic;
80cabfad 1084void pic_set_irq(int irq, int level);
54fa5af5 1085void pic_set_irq_new(void *opaque, int irq, int level);
d537cf6c 1086qemu_irq *i8259_init(qemu_irq parent_irq);
d592d303
FB
1087void pic_set_alt_irq_func(PicState2 *s, SetIRQFunc *alt_irq_func,
1088 void *alt_irq_opaque);
3de388f6
FB
1089int pic_read_irq(PicState2 *s);
1090void pic_update_irq(PicState2 *s);
1091uint32_t pic_intack_read(PicState2 *s);
c20709aa 1092void pic_info(void);
4a0fb71e 1093void irq_info(void);
80cabfad 1094
c27004ec 1095/* APIC */
d592d303
FB
1096typedef struct IOAPICState IOAPICState;
1097
c27004ec
FB
1098int apic_init(CPUState *env);
1099int apic_get_interrupt(CPUState *env);
d592d303
FB
1100IOAPICState *ioapic_init(void);
1101void ioapic_set_irq(void *opaque, int vector, int level);
c27004ec 1102
80cabfad
FB
1103/* i8254.c */
1104
1105#define PIT_FREQ 1193182
1106
ec844b96
FB
1107typedef struct PITState PITState;
1108
d537cf6c 1109PITState *pit_init(int base, qemu_irq irq);
ec844b96
FB
1110void pit_set_gate(PITState *pit, int channel, int val);
1111int pit_get_gate(PITState *pit, int channel);
fd06c375
FB
1112int pit_get_initial_count(PITState *pit, int channel);
1113int pit_get_mode(PITState *pit, int channel);
ec844b96 1114int pit_get_out(PITState *pit, int channel, int64_t current_time);
80cabfad 1115
fd06c375
FB
1116/* pcspk.c */
1117void pcspk_init(PITState *);
d537cf6c 1118int pcspk_audio_init(AudioState *, qemu_irq *pic);
fd06c375 1119
3fffc223
TS
1120#include "hw/smbus.h"
1121
6515b203
FB
1122/* acpi.c */
1123extern int acpi_enabled;
502a5395 1124void piix4_pm_init(PCIBus *bus, int devfn);
3fffc223 1125void piix4_smbus_register_device(SMBusDevice *dev, uint8_t addr);
6515b203
FB
1126void acpi_bios_init(void);
1127
3fffc223
TS
1128/* smbus_eeprom.c */
1129SMBusDevice *smbus_eeprom_device_init(uint8_t addr, uint8_t *buf);
1130
80cabfad 1131/* pc.c */
54fa5af5 1132extern QEMUMachine pc_machine;
3dbbdc25 1133extern QEMUMachine isapc_machine;
52ca8d6a 1134extern int fd_bootchk;
80cabfad 1135
6a00d601
FB
1136void ioport_set_a20(int enable);
1137int ioport_get_a20(void);
1138
26aa7d72 1139/* ppc.c */
54fa5af5
FB
1140extern QEMUMachine prep_machine;
1141extern QEMUMachine core99_machine;
1142extern QEMUMachine heathrow_machine;
1a6c0886
JM
1143extern QEMUMachine ref405ep_machine;
1144extern QEMUMachine taihu_machine;
54fa5af5 1145
6af0bf9c
FB
1146/* mips_r4k.c */
1147extern QEMUMachine mips_machine;
1148
5856de80
TS
1149/* mips_malta.c */
1150extern QEMUMachine mips_malta_machine;
1151
ad6fe1d2 1152/* mips_int.c */
d537cf6c 1153extern void cpu_mips_irq_init_cpu(CPUState *env);
4de9b249 1154
ad6fe1d2
TS
1155/* mips_pica61.c */
1156extern QEMUMachine mips_pica61_machine;
1157
e16fe40c
TS
1158/* mips_timer.c */
1159extern void cpu_mips_clock_init(CPUState *);
1160extern void cpu_mips_irqctrl_init (void);
1161
27c7ca7e
FB
1162/* shix.c */
1163extern QEMUMachine shix_machine;
1164
8cc43fef 1165#ifdef TARGET_PPC
47103572 1166/* PowerPC hardware exceptions management helpers */
8ecc7913
JM
1167typedef void (*clk_setup_cb)(void *opaque, uint32_t freq);
1168typedef struct clk_setup_t clk_setup_t;
1169struct clk_setup_t {
1170 clk_setup_cb cb;
1171 void *opaque;
1172};
1173static inline void clk_setup (clk_setup_t *clk, uint32_t freq)
1174{
1175 if (clk->cb != NULL)
1176 (*clk->cb)(clk->opaque, freq);
1177}
1178
1179clk_setup_cb cpu_ppc_tb_init (CPUState *env, uint32_t freq);
2e719ba3
JM
1180/* Embedded PowerPC DCR management */
1181typedef target_ulong (*dcr_read_cb)(void *opaque, int dcrn);
1182typedef void (*dcr_write_cb)(void *opaque, int dcrn, target_ulong val);
1183int ppc_dcr_init (CPUState *env, int (*dcr_read_error)(int dcrn),
1184 int (*dcr_write_error)(int dcrn));
1185int ppc_dcr_register (CPUState *env, int dcrn, void *opaque,
1186 dcr_read_cb drc_read, dcr_write_cb dcr_write);
8ecc7913 1187clk_setup_cb ppc_emb_timers_init (CPUState *env, uint32_t freq);
4a057712
JM
1188/* Embedded PowerPC reset */
1189void ppc40x_core_reset (CPUState *env);
1190void ppc40x_chip_reset (CPUState *env);
1191void ppc40x_system_reset (CPUState *env);
8cc43fef 1192#endif
64201201 1193void PREP_debug_write (void *opaque, uint32_t addr, uint32_t val);
77d4bc34
FB
1194
1195extern CPUWriteMemoryFunc *PPC_io_write[];
1196extern CPUReadMemoryFunc *PPC_io_read[];
54fa5af5 1197void PPC_debug_write (void *opaque, uint32_t addr, uint32_t val);
26aa7d72 1198
e95c8d51 1199/* sun4m.c */
e0353fe2 1200extern QEMUMachine ss5_machine, ss10_machine;
e95c8d51
FB
1201
1202/* iommu.c */
e80cfcfc 1203void *iommu_init(uint32_t addr);
67e999be 1204void sparc_iommu_memory_rw(void *opaque, target_phys_addr_t addr,
a917d384 1205 uint8_t *buf, int len, int is_write);
67e999be
FB
1206static inline void sparc_iommu_memory_read(void *opaque,
1207 target_phys_addr_t addr,
1208 uint8_t *buf, int len)
1209{
1210 sparc_iommu_memory_rw(opaque, addr, buf, len, 0);
1211}
e95c8d51 1212
67e999be
FB
1213static inline void sparc_iommu_memory_write(void *opaque,
1214 target_phys_addr_t addr,
1215 uint8_t *buf, int len)
1216{
1217 sparc_iommu_memory_rw(opaque, addr, buf, len, 1);
1218}
e95c8d51
FB
1219
1220/* tcx.c */
95219897 1221void tcx_init(DisplayState *ds, uint32_t addr, uint8_t *vram_base,
eee0b836
BS
1222 unsigned long vram_offset, int vram_size, int width, int height,
1223 int depth);
e80cfcfc
FB
1224
1225/* slavio_intctl.c */
52cc07d0 1226void pic_set_irq_cpu(void *opaque, int irq, int level, unsigned int cpu);
e0353fe2 1227void *slavio_intctl_init(uint32_t addr, uint32_t addrg,
d537cf6c
PB
1228 const uint32_t *intbit_to_level,
1229 qemu_irq **irq);
ba3c64fb 1230void slavio_intctl_set_cpu(void *opaque, unsigned int cpu, CPUState *env);
e80cfcfc
FB
1231void slavio_pic_info(void *opaque);
1232void slavio_irq_info(void *opaque);
e95c8d51 1233
5fe141fd
FB
1234/* loader.c */
1235int get_image_size(const char *filename);
1236int load_image(const char *filename, uint8_t *addr);
74287114
TS
1237int load_elf(const char *filename, int64_t virt_to_phys_addend,
1238 uint64_t *pentry, uint64_t *lowaddr, uint64_t *highaddr);
e80cfcfc 1239int load_aout(const char *filename, uint8_t *addr);
1c7b3754 1240int load_uboot(const char *filename, target_ulong *ep, int *is_linux);
e80cfcfc
FB
1241
1242/* slavio_timer.c */
52cc07d0
BS
1243void slavio_timer_init(uint32_t addr, int irq, int mode, unsigned int cpu,
1244 void *intctl);
8d5f07fa 1245
e80cfcfc 1246/* slavio_serial.c */
d537cf6c
PB
1247SerialState *slavio_serial_init(int base, qemu_irq irq, CharDriverState *chr1,
1248 CharDriverState *chr2);
1249void slavio_serial_ms_kbd_init(int base, qemu_irq);
e95c8d51 1250
3475187d 1251/* slavio_misc.c */
d537cf6c 1252void *slavio_misc_init(uint32_t base, qemu_irq irq);
3475187d
FB
1253void slavio_set_power_fail(void *opaque, int power_failing);
1254
6f7e9aec 1255/* esp.c */
fa1fb14c 1256void esp_scsi_attach(void *opaque, BlockDriverState *bd, int id);
67e999be
FB
1257void *esp_init(BlockDriverState **bd, uint32_t espaddr, void *dma_opaque);
1258void esp_reset(void *opaque);
1259
1260/* sparc32_dma.c */
d537cf6c
PB
1261void *sparc32_dma_init(uint32_t daddr, qemu_irq espirq, qemu_irq leirq,
1262 void *iommu);
67e999be 1263void ledma_set_irq(void *opaque, int isr);
9b94dc32
FB
1264void ledma_memory_read(void *opaque, target_phys_addr_t addr,
1265 uint8_t *buf, int len, int do_bswap);
1266void ledma_memory_write(void *opaque, target_phys_addr_t addr,
1267 uint8_t *buf, int len, int do_bswap);
67e999be
FB
1268void espdma_raise_irq(void *opaque);
1269void espdma_clear_irq(void *opaque);
1270void espdma_memory_read(void *opaque, uint8_t *buf, int len);
1271void espdma_memory_write(void *opaque, uint8_t *buf, int len);
1272void sparc32_dma_set_reset_data(void *opaque, void *esp_opaque,
1273 void *lance_opaque);
6f7e9aec 1274
b8174937
FB
1275/* cs4231.c */
1276void cs_init(target_phys_addr_t base, int irq, void *intctl);
1277
3475187d
FB
1278/* sun4u.c */
1279extern QEMUMachine sun4u_machine;
1280
64201201
FB
1281/* NVRAM helpers */
1282#include "hw/m48t59.h"
1283
1284void NVRAM_set_byte (m48t59_t *nvram, uint32_t addr, uint8_t value);
1285uint8_t NVRAM_get_byte (m48t59_t *nvram, uint32_t addr);
1286void NVRAM_set_word (m48t59_t *nvram, uint32_t addr, uint16_t value);
1287uint16_t NVRAM_get_word (m48t59_t *nvram, uint32_t addr);
1288void NVRAM_set_lword (m48t59_t *nvram, uint32_t addr, uint32_t value);
1289uint32_t NVRAM_get_lword (m48t59_t *nvram, uint32_t addr);
1290void NVRAM_set_string (m48t59_t *nvram, uint32_t addr,
1291 const unsigned char *str, uint32_t max);
1292int NVRAM_get_string (m48t59_t *nvram, uint8_t *dst, uint16_t addr, int max);
1293void NVRAM_set_crc (m48t59_t *nvram, uint32_t addr,
1294 uint32_t start, uint32_t count);
1295int PPC_NVRAM_set_params (m48t59_t *nvram, uint16_t NVRAM_size,
1296 const unsigned char *arch,
1297 uint32_t RAM_size, int boot_device,
1298 uint32_t kernel_image, uint32_t kernel_size,
28b9b5af 1299 const char *cmdline,
64201201 1300 uint32_t initrd_image, uint32_t initrd_size,
28b9b5af
FB
1301 uint32_t NVRAM_image,
1302 int width, int height, int depth);
64201201 1303
63066f4f
FB
1304/* adb.c */
1305
1306#define MAX_ADB_DEVICES 16
1307
e2733d20 1308#define ADB_MAX_OUT_LEN 16
63066f4f 1309
e2733d20 1310typedef struct ADBDevice ADBDevice;
63066f4f 1311
e2733d20
FB
1312/* buf = NULL means polling */
1313typedef int ADBDeviceRequest(ADBDevice *d, uint8_t *buf_out,
1314 const uint8_t *buf, int len);
12c28fed
FB
1315typedef int ADBDeviceReset(ADBDevice *d);
1316
63066f4f
FB
1317struct ADBDevice {
1318 struct ADBBusState *bus;
1319 int devaddr;
1320 int handler;
e2733d20 1321 ADBDeviceRequest *devreq;
12c28fed 1322 ADBDeviceReset *devreset;
63066f4f
FB
1323 void *opaque;
1324};
1325
1326typedef struct ADBBusState {
1327 ADBDevice devices[MAX_ADB_DEVICES];
1328 int nb_devices;
e2733d20 1329 int poll_index;
63066f4f
FB
1330} ADBBusState;
1331
e2733d20
FB
1332int adb_request(ADBBusState *s, uint8_t *buf_out,
1333 const uint8_t *buf, int len);
1334int adb_poll(ADBBusState *s, uint8_t *buf_out);
63066f4f
FB
1335
1336ADBDevice *adb_register_device(ADBBusState *s, int devaddr,
e2733d20 1337 ADBDeviceRequest *devreq,
12c28fed 1338 ADBDeviceReset *devreset,
63066f4f
FB
1339 void *opaque);
1340void adb_kbd_init(ADBBusState *bus);
1341void adb_mouse_init(ADBBusState *bus);
1342
1343/* cuda.c */
1344
1345extern ADBBusState adb_bus;
d537cf6c 1346int cuda_init(qemu_irq irq);
63066f4f 1347
bb36d470
FB
1348#include "hw/usb.h"
1349
a594cfbf
FB
1350/* usb ports of the VM */
1351
0d92ed30
PB
1352void qemu_register_usb_port(USBPort *port, void *opaque, int index,
1353 usb_attachfn attach);
a594cfbf 1354
0d92ed30 1355#define VM_USB_HUB_SIZE 8
a594cfbf
FB
1356
1357void do_usb_add(const char *devname);
1358void do_usb_del(const char *devname);
1359void usb_info(void);
1360
2e5d83bb 1361/* scsi-disk.c */
4d611c9a
PB
1362enum scsi_reason {
1363 SCSI_REASON_DONE, /* Command complete. */
1364 SCSI_REASON_DATA /* Transfer complete, more data required. */
1365};
1366
2e5d83bb 1367typedef struct SCSIDevice SCSIDevice;
a917d384
PB
1368typedef void (*scsi_completionfn)(void *opaque, int reason, uint32_t tag,
1369 uint32_t arg);
2e5d83bb
PB
1370
1371SCSIDevice *scsi_disk_init(BlockDriverState *bdrv,
a917d384 1372 int tcq,
2e5d83bb
PB
1373 scsi_completionfn completion,
1374 void *opaque);
1375void scsi_disk_destroy(SCSIDevice *s);
1376
0fc5c15a 1377int32_t scsi_send_command(SCSIDevice *s, uint32_t tag, uint8_t *buf, int lun);
4d611c9a
PB
1378/* SCSI data transfers are asynchrnonous. However, unlike the block IO
1379 layer the completion routine may be called directly by
1380 scsi_{read,write}_data. */
a917d384
PB
1381void scsi_read_data(SCSIDevice *s, uint32_t tag);
1382int scsi_write_data(SCSIDevice *s, uint32_t tag);
1383void scsi_cancel_io(SCSIDevice *s, uint32_t tag);
1384uint8_t *scsi_get_buf(SCSIDevice *s, uint32_t tag);
2e5d83bb 1385
7d8406be
PB
1386/* lsi53c895a.c */
1387void lsi_scsi_attach(void *opaque, BlockDriverState *bd, int id);
1388void *lsi_scsi_init(PCIBus *bus, int devfn);
1389
b5ff1b31 1390/* integratorcp.c */
3371d272 1391extern QEMUMachine integratorcp_machine;
b5ff1b31 1392
cdbdb648
PB
1393/* versatilepb.c */
1394extern QEMUMachine versatilepb_machine;
16406950 1395extern QEMUMachine versatileab_machine;
cdbdb648 1396
e69954b9
PB
1397/* realview.c */
1398extern QEMUMachine realview_machine;
1399
daa57963
FB
1400/* ps2.c */
1401void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg);
1402void *ps2_mouse_init(void (*update_irq)(void *, int), void *update_arg);
1403void ps2_write_mouse(void *, int val);
1404void ps2_write_keyboard(void *, int val);
1405uint32_t ps2_read_data(void *);
1406void ps2_queue(void *, int b);
f94f5d71 1407void ps2_keyboard_set_translation(void *opaque, int mode);
548df2ac 1408void ps2_mouse_fake_event(void *opaque);
daa57963 1409
80337b66 1410/* smc91c111.c */
d537cf6c 1411void smc91c111_init(NICInfo *, uint32_t, qemu_irq);
80337b66 1412
bdd5003a 1413/* pl110.c */
d537cf6c 1414void *pl110_init(DisplayState *ds, uint32_t base, qemu_irq irq, int);
bdd5003a 1415
cdbdb648 1416/* pl011.c */
d537cf6c 1417void pl011_init(uint32_t base, qemu_irq irq, CharDriverState *chr);
cdbdb648
PB
1418
1419/* pl050.c */
d537cf6c 1420void pl050_init(uint32_t base, qemu_irq irq, int is_mouse);
cdbdb648
PB
1421
1422/* pl080.c */
d537cf6c 1423void *pl080_init(uint32_t base, qemu_irq irq, int nchannels);
cdbdb648 1424
a1bb27b1
PB
1425/* pl181.c */
1426void pl181_init(uint32_t base, BlockDriverState *bd,
d537cf6c 1427 qemu_irq irq0, qemu_irq irq1);
a1bb27b1 1428
cdbdb648 1429/* pl190.c */
d537cf6c 1430qemu_irq *pl190_init(uint32_t base, qemu_irq irq, qemu_irq fiq);
cdbdb648
PB
1431
1432/* arm-timer.c */
d537cf6c
PB
1433void sp804_init(uint32_t base, qemu_irq irq);
1434void icp_pit_init(uint32_t base, qemu_irq *pic, int irq);
cdbdb648 1435
e69954b9
PB
1436/* arm_sysctl.c */
1437void arm_sysctl_init(uint32_t base, uint32_t sys_id);
1438
1439/* arm_gic.c */
d537cf6c 1440qemu_irq *arm_gic_init(uint32_t base, qemu_irq parent_irq);
e69954b9 1441
16406950
PB
1442/* arm_boot.c */
1443
daf90626 1444void arm_load_kernel(CPUState *env, int ram_size, const char *kernel_filename,
16406950
PB
1445 const char *kernel_cmdline, const char *initrd_filename,
1446 int board_id);
1447
27c7ca7e
FB
1448/* sh7750.c */
1449struct SH7750State;
1450
008a8818 1451struct SH7750State *sh7750_init(CPUState * cpu);
27c7ca7e
FB
1452
1453typedef struct {
1454 /* The callback will be triggered if any of the designated lines change */
1455 uint16_t portamask_trigger;
1456 uint16_t portbmask_trigger;
1457 /* Return 0 if no action was taken */
1458 int (*port_change_cb) (uint16_t porta, uint16_t portb,
1459 uint16_t * periph_pdtra,
1460 uint16_t * periph_portdira,
1461 uint16_t * periph_pdtrb,
1462 uint16_t * periph_portdirb);
1463} sh7750_io_device;
1464
1465int sh7750_register_io_device(struct SH7750State *s,
1466 sh7750_io_device * device);
1467/* tc58128.c */
1468int tc58128_init(struct SH7750State *s, char *zone1, char *zone2);
1469
29133e9a 1470/* NOR flash devices */
86f55663
JM
1471#define MAX_PFLASH 4
1472extern BlockDriverState *pflash_table[MAX_PFLASH];
29133e9a
FB
1473typedef struct pflash_t pflash_t;
1474
1475pflash_t *pflash_register (target_ulong base, ram_addr_t off,
1476 BlockDriverState *bs,
1477 target_ulong sector_len, int nb_blocs, int width,
1478 uint16_t id0, uint16_t id1,
1479 uint16_t id2, uint16_t id3);
1480
201a51fc
AZ
1481/* PCMCIA/Cardbus */
1482
1483struct pcmcia_socket_s {
1484 qemu_irq irq;
1485 int attached;
1486 const char *slot_string;
1487 const char *card_string;
1488};
1489
1490void pcmcia_socket_register(struct pcmcia_socket_s *socket);
1491void pcmcia_socket_unregister(struct pcmcia_socket_s *socket);
1492void pcmcia_info(void);
1493
1494struct pcmcia_card_s {
1495 void *state;
1496 struct pcmcia_socket_s *slot;
1497 int (*attach)(void *state);
1498 int (*detach)(void *state);
1499 const uint8_t *cis;
1500 int cis_len;
1501
1502 /* Only valid if attached */
1503 uint8_t (*attr_read)(void *state, uint16_t address);
1504 void (*attr_write)(void *state, uint16_t address, uint8_t value);
1505 uint16_t (*common_read)(void *state, uint16_t address);
1506 void (*common_write)(void *state, uint16_t address, uint16_t value);
1507 uint16_t (*io_read)(void *state, uint16_t address);
1508 void (*io_write)(void *state, uint16_t address, uint16_t value);
1509};
1510
1511#define CISTPL_DEVICE 0x01 /* 5V Device Information Tuple */
1512#define CISTPL_NO_LINK 0x14 /* No Link Tuple */
1513#define CISTPL_VERS_1 0x15 /* Level 1 Version Tuple */
1514#define CISTPL_JEDEC_C 0x18 /* JEDEC ID Tuple */
1515#define CISTPL_JEDEC_A 0x19 /* JEDEC ID Tuple */
1516#define CISTPL_CONFIG 0x1a /* Configuration Tuple */
1517#define CISTPL_CFTABLE_ENTRY 0x1b /* 16-bit PCCard Configuration */
1518#define CISTPL_DEVICE_OC 0x1c /* Additional Device Information */
1519#define CISTPL_DEVICE_OA 0x1d /* Additional Device Information */
1520#define CISTPL_DEVICE_GEO 0x1e /* Additional Device Information */
1521#define CISTPL_DEVICE_GEO_A 0x1f /* Additional Device Information */
1522#define CISTPL_MANFID 0x20 /* Manufacture ID Tuple */
1523#define CISTPL_FUNCID 0x21 /* Function ID Tuple */
1524#define CISTPL_FUNCE 0x22 /* Function Extension Tuple */
1525#define CISTPL_END 0xff /* Tuple End */
1526#define CISTPL_ENDMARK 0xff
1527
1528/* dscm1xxxx.c */
1529struct pcmcia_card_s *dscm1xxxx_init(BlockDriverState *bdrv);
1530
c1713132
AZ
1531#include "hw/pxa.h"
1532
4046d913
PB
1533#include "gdbstub.h"
1534
ea2384d3
FB
1535#endif /* defined(QEMU_TOOL) */
1536
c4b1fcc0 1537/* monitor.c */
82c643ff 1538void monitor_init(CharDriverState *hd, int show_banner);
ea2384d3
FB
1539void term_puts(const char *str);
1540void term_vprintf(const char *fmt, va_list ap);
40c3bac3 1541void term_printf(const char *fmt, ...) __attribute__ ((__format__ (__printf__, 1, 2)));
fef30743 1542void term_print_filename(const char *filename);
c4b1fcc0
FB
1543void term_flush(void);
1544void term_print_help(void);
ea2384d3
FB
1545void monitor_readline(const char *prompt, int is_password,
1546 char *buf, int buf_size);
1547
1548/* readline.c */
1549typedef void ReadLineFunc(void *opaque, const char *str);
1550
1551extern int completion_index;
1552void add_completion(const char *str);
1553void readline_handle_byte(int ch);
1554void readline_find_completion(const char *cmdline);
1555const char *readline_get_history(unsigned int index);
1556void readline_start(const char *prompt, int is_password,
1557 ReadLineFunc *readline_func, void *opaque);
c4b1fcc0 1558
5e6ad6f9
FB
1559void kqemu_record_dump(void);
1560
fc01f7e7 1561#endif /* VL_H */
This page took 0.372761 seconds and 4 git commands to generate.