Statistics
| Branch: | Revision:

root / vl.h @ 16f62432

History | View | Annotate | Download (4.8 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 16f62432 bellard
#include "cpu.h"
28 16f62432 bellard
29 33e3963e bellard
/* vl.c */
30 313aa567 bellard
extern int reset_requested;
31 27503323 bellard
extern int64_t ticks_per_sec;
32 313aa567 bellard
33 7138fcfb bellard
typedef void (IOPortWriteFunc)(struct CPUState *env, uint32_t address, uint32_t data);
34 7138fcfb bellard
typedef uint32_t (IOPortReadFunc)(struct CPUState *env, uint32_t address);
35 313aa567 bellard
36 313aa567 bellard
int register_ioport_read(int start, int length, IOPortReadFunc *func, int size);
37 313aa567 bellard
int register_ioport_write(int start, int length, IOPortWriteFunc *func, int size);
38 5391d806 bellard
void pic_set_irq(int irq, int level);
39 27503323 bellard
int64_t cpu_get_ticks(void);
40 313aa567 bellard
41 313aa567 bellard
void kbd_put_keycode(int keycode);
42 313aa567 bellard
43 313aa567 bellard
#define MOUSE_EVENT_LBUTTON 0x01
44 313aa567 bellard
#define MOUSE_EVENT_RBUTTON 0x02
45 313aa567 bellard
#define MOUSE_EVENT_MBUTTON 0x04
46 313aa567 bellard
void kbd_mouse_event(int dx, int dy, int dz, int buttons_state);
47 33e3963e bellard
48 fc01f7e7 bellard
/* block.c */
49 fc01f7e7 bellard
typedef struct BlockDriverState BlockDriverState;
50 fc01f7e7 bellard
51 33e3963e bellard
BlockDriverState *bdrv_open(const char *filename, int snapshot);
52 fc01f7e7 bellard
void bdrv_close(BlockDriverState *bs);
53 fc01f7e7 bellard
int bdrv_read(BlockDriverState *bs, int64_t sector_num, 
54 fc01f7e7 bellard
              uint8_t *buf, int nb_sectors);
55 fc01f7e7 bellard
int bdrv_write(BlockDriverState *bs, int64_t sector_num, 
56 fc01f7e7 bellard
               const uint8_t *buf, int nb_sectors);
57 fc01f7e7 bellard
void bdrv_get_geometry(BlockDriverState *bs, int64_t *nb_sectors_ptr);
58 33e3963e bellard
int bdrv_commit(BlockDriverState *bs);
59 77fef8c1 bellard
void bdrv_set_boot_sector(BlockDriverState *bs, const uint8_t *data, int size);
60 33e3963e bellard
61 33e3963e bellard
/* user mode linux compatible COW file */
62 33e3963e bellard
#define COW_MAGIC 0x4f4f4f4d  /* MOOO */
63 33e3963e bellard
#define COW_VERSION 2
64 fc01f7e7 bellard
65 33e3963e bellard
struct cow_header_v2 {
66 33e3963e bellard
    uint32_t magic;
67 9dfa5b42 bellard
    uint32_t version;
68 33e3963e bellard
    char backing_file[1024];
69 33e3963e bellard
    int32_t mtime;
70 33e3963e bellard
    uint64_t size;
71 33e3963e bellard
    uint32_t sectorsize;
72 33e3963e bellard
};
73 fc01f7e7 bellard
74 313aa567 bellard
/* vga.c */
75 313aa567 bellard
76 4fa0f5d2 bellard
#define VGA_RAM_SIZE (4096 * 1024)
77 313aa567 bellard
78 313aa567 bellard
typedef struct DisplayState {
79 313aa567 bellard
    uint8_t *data;
80 313aa567 bellard
    int linesize;
81 313aa567 bellard
    int depth;
82 313aa567 bellard
    void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h);
83 313aa567 bellard
    void (*dpy_resize)(struct DisplayState *s, int w, int h);
84 313aa567 bellard
    void (*dpy_refresh)(struct DisplayState *s);
85 313aa567 bellard
} DisplayState;
86 313aa567 bellard
87 313aa567 bellard
static inline void dpy_update(DisplayState *s, int x, int y, int w, int h)
88 313aa567 bellard
{
89 313aa567 bellard
    s->dpy_update(s, x, y, w, h);
90 313aa567 bellard
}
91 313aa567 bellard
92 313aa567 bellard
static inline void dpy_resize(DisplayState *s, int w, int h)
93 313aa567 bellard
{
94 313aa567 bellard
    s->dpy_resize(s, w, h);
95 313aa567 bellard
}
96 313aa567 bellard
97 7138fcfb bellard
int vga_initialize(DisplayState *ds, uint8_t *vga_ram_base, 
98 7138fcfb bellard
                   unsigned long vga_ram_offset, int vga_ram_size);
99 313aa567 bellard
void vga_update_display(void);
100 313aa567 bellard
101 313aa567 bellard
/* sdl.c */
102 313aa567 bellard
void sdl_display_init(DisplayState *ds);
103 313aa567 bellard
104 5391d806 bellard
/* ide.c */
105 5391d806 bellard
#define MAX_DISKS 4
106 5391d806 bellard
107 5391d806 bellard
extern BlockDriverState *bs_table[MAX_DISKS];
108 5391d806 bellard
109 5391d806 bellard
void ide_init(void);
110 5391d806 bellard
void ide_set_geometry(int n, int cyls, int heads, int secs);
111 5391d806 bellard
void ide_set_cdrom(int n, int is_cdrom);
112 5391d806 bellard
113 27503323 bellard
/* oss.c */
114 27503323 bellard
typedef enum {
115 27503323 bellard
  AUD_FMT_U8,
116 27503323 bellard
  AUD_FMT_S8,
117 27503323 bellard
  AUD_FMT_U16,
118 27503323 bellard
  AUD_FMT_S16
119 27503323 bellard
} audfmt_e;
120 27503323 bellard
121 27503323 bellard
void AUD_open (int rfreq, int rnchannels, audfmt_e rfmt);
122 27503323 bellard
void AUD_reset (int rfreq, int rnchannels, audfmt_e rfmt);
123 27503323 bellard
int AUD_write (void *in_buf, int size);
124 27503323 bellard
void AUD_run (void);
125 27503323 bellard
void AUD_adjust_estimate (int _leftover);
126 27503323 bellard
int AUD_get_free (void);
127 27503323 bellard
int AUD_get_live (void);
128 27503323 bellard
int AUD_get_buffer_size (void);
129 27503323 bellard
void AUD_init (void);
130 27503323 bellard
131 27503323 bellard
/* dma.c */
132 16f62432 bellard
typedef int (*DMA_transfer_handler) (void *opaque, target_ulong addr, int size);
133 27503323 bellard
int DMA_get_channel_mode (int nchan);
134 27503323 bellard
void DMA_hold_DREQ (int nchan);
135 27503323 bellard
void DMA_release_DREQ (int nchan);
136 16f62432 bellard
void DMA_schedule(int nchan);
137 27503323 bellard
void DMA_run (void);
138 27503323 bellard
void DMA_init (void);
139 27503323 bellard
void DMA_register_channel (int nchan,
140 16f62432 bellard
                           DMA_transfer_handler transfer_handler, void *opaque);
141 27503323 bellard
142 27503323 bellard
/* sb16.c */
143 27503323 bellard
void SB16_run (void);
144 27503323 bellard
void SB16_init (void);
145 27503323 bellard
 
146 7138fcfb bellard
/* fdc.c */
147 7138fcfb bellard
#define MAX_FD 2
148 7138fcfb bellard
extern BlockDriverState *fd_table[MAX_FD];
149 7138fcfb bellard
150 7138fcfb bellard
void cmos_register_fd (uint8_t fd0, uint8_t fd1);
151 7138fcfb bellard
void fdctrl_init (int irq_lvl, int dma_chann, int mem_mapped, uint32_t base,
152 7138fcfb bellard
                  char boot_device);
153 7138fcfb bellard
int fdctrl_disk_change (int idx, const unsigned char *filename, int ro);
154 7138fcfb bellard
155 fc01f7e7 bellard
#endif /* VL_H */