Commit 87ecb68bdf8a3e40ef885ddbb7ca1797dca40ebf
1 parent
257514dd
Break up vl.h.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3674 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
223 changed files
with
2400 additions
and
1826 deletions
Makefile
| 1 | 1 | # Makefile for QEMU. |
| 2 | 2 | |
| 3 | +VPATH=$(SRC_PATH):$(SRC_PATH)/hw | |
| 4 | + | |
| 3 | 5 | include config-host.mak |
| 4 | 6 | |
| 5 | 7 | .PHONY: all clean distclean dvi info install install-doc tar tarbin \ |
| ... | ... | @@ -47,9 +49,15 @@ BLOCK_OBJS+=block-qcow2.o block-parallels.o |
| 47 | 49 | # CPUs and machines. |
| 48 | 50 | |
| 49 | 51 | OBJS=$(BLOCK_OBJS) |
| 50 | -OBJS+=readline.o console.o | |
| 52 | +OBJS+=readline.o console.o | |
| 51 | 53 | OBJS+=block.o |
| 52 | 54 | |
| 55 | +OBJS+=irq.o | |
| 56 | +OBJS+=i2c.o smbus.o smbus_eeprom.o max7310.o max111x.o wm8750.o | |
| 57 | +OBJS+=ssd0303.o ssd0323.o ads7846.o | |
| 58 | +OBJS+=scsi-disk.o cdrom.o | |
| 59 | +OBJS+=usb.o usb-hub.o usb-linux.o usb-hid.o usb-msd.o usb-wacom.o | |
| 60 | + | |
| 53 | 61 | ifdef CONFIG_WIN32 |
| 54 | 62 | OBJS+=tap-win32.o |
| 55 | 63 | endif | ... | ... |
Makefile.target
| ... | ... | @@ -399,7 +399,6 @@ endif |
| 399 | 399 | VL_OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o |
| 400 | 400 | # XXX: suppress QEMU_TOOL tests |
| 401 | 401 | VL_OBJS+=block-raw.o |
| 402 | -VL_OBJS+=irq.o | |
| 403 | 402 | |
| 404 | 403 | ifdef CONFIG_ALSA |
| 405 | 404 | LIBS += -lasound |
| ... | ... | @@ -421,14 +420,11 @@ CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS) |
| 421 | 420 | LIBS += $(CONFIG_VNC_TLS_LIBS) |
| 422 | 421 | endif |
| 423 | 422 | |
| 424 | -VL_OBJS += i2c.o smbus.o | |
| 425 | - | |
| 426 | 423 | # SCSI layer |
| 427 | -VL_OBJS+= scsi-disk.o cdrom.o lsi53c895a.o | |
| 424 | +VL_OBJS+= lsi53c895a.o | |
| 428 | 425 | |
| 429 | 426 | # USB layer |
| 430 | -VL_OBJS+= usb.o usb-hub.o usb-linux.o usb-hid.o usb-ohci.o usb-msd.o | |
| 431 | -VL_OBJS+= usb-wacom.o | |
| 427 | +VL_OBJS+= usb-ohci.o | |
| 432 | 428 | |
| 433 | 429 | # EEPROM emulation |
| 434 | 430 | VL_OBJS += eeprom93xx.o |
| ... | ... | @@ -444,7 +440,7 @@ ifeq ($(TARGET_BASE_ARCH), i386) |
| 444 | 440 | VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o |
| 445 | 441 | VL_OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o |
| 446 | 442 | VL_OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o |
| 447 | -VL_OBJS+= usb-uhci.o smbus_eeprom.o vmmouse.o vmport.o vmware_vga.o | |
| 443 | +VL_OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o | |
| 448 | 444 | CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE |
| 449 | 445 | endif |
| 450 | 446 | ifeq ($(TARGET_BASE_ARCH), ppc) |
| ... | ... | @@ -468,7 +464,7 @@ VL_OBJS+= mips_r4k.o mips_malta.o mips_pica61.o mips_mipssim.o |
| 468 | 464 | VL_OBJS+= mips_timer.o mips_int.o dma.o vga.o serial.o i8254.o i8259.o |
| 469 | 465 | VL_OBJS+= jazz_led.o |
| 470 | 466 | VL_OBJS+= ide.o gt64xxx.o pckbd.o ps2.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o |
| 471 | -VL_OBJS+= piix_pci.o smbus_eeprom.o parallel.o cirrus_vga.o $(SOUND_HW) | |
| 467 | +VL_OBJS+= piix_pci.o parallel.o cirrus_vga.o $(SOUND_HW) | |
| 472 | 468 | VL_OBJS+= mipsnet.o |
| 473 | 469 | CPPFLAGS += -DHAS_AUDIO |
| 474 | 470 | endif |
| ... | ... | @@ -494,13 +490,13 @@ VL_OBJS+= integratorcp.o versatilepb.o ps2.o smc91c111.o arm_pic.o arm_timer.o |
| 494 | 490 | VL_OBJS+= arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o |
| 495 | 491 | VL_OBJS+= versatile_pci.o sd.o ptimer.o |
| 496 | 492 | VL_OBJS+= realview_gic.o realview.o arm_sysctl.o mpcore.o |
| 497 | -VL_OBJS+= armv7m.o armv7m_nvic.o stellaris.o ssd0303.o pl022.o | |
| 498 | -VL_OBJS+= ssd0323.o pl061.o | |
| 493 | +VL_OBJS+= armv7m.o armv7m_nvic.o stellaris.o pl022.o | |
| 494 | +VL_OBJS+= pl061.o | |
| 499 | 495 | VL_OBJS+= arm-semi.o |
| 500 | 496 | VL_OBJS+= pxa2xx.o pxa2xx_pic.o pxa2xx_gpio.o pxa2xx_timer.o pxa2xx_dma.o |
| 501 | -VL_OBJS+= pxa2xx_lcd.o pxa2xx_mmci.o pxa2xx_pcmcia.o max111x.o max7310.o | |
| 497 | +VL_OBJS+= pxa2xx_lcd.o pxa2xx_mmci.o pxa2xx_pcmcia.o | |
| 502 | 498 | VL_OBJS+= pflash_cfi01.o gumstix.o |
| 503 | -VL_OBJS+= spitz.o ads7846.o ide.o serial.o nand.o ecc.o wm8750.o | |
| 499 | +VL_OBJS+= spitz.o ide.o serial.o nand.o ecc.o | |
| 504 | 500 | VL_OBJS+= omap.o omap_lcdc.o omap1_clk.o omap_mmc.o omap_i2c.o |
| 505 | 501 | VL_OBJS+= palm.o tsc210x.o |
| 506 | 502 | CPPFLAGS += -DHAS_AUDIO | ... | ... |
arm-semi.c
audio/audio.c
| ... | ... | @@ -21,7 +21,11 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw/hw.h" | |
| 25 | +#include "audio.h" | |
| 26 | +#include "console.h" | |
| 27 | +#include "qemu-timer.h" | |
| 28 | +#include "sysemu.h" | |
| 25 | 29 | |
| 26 | 30 | #define AUDIO_CAP "audio" |
| 27 | 31 | #include "audio_int.h" | ... | ... |
audio/audio.h
| ... | ... | @@ -73,7 +73,6 @@ typedef struct CaptureState { |
| 73 | 73 | LIST_ENTRY (CaptureState) entries; |
| 74 | 74 | } CaptureState; |
| 75 | 75 | |
| 76 | -typedef struct AudioState AudioState; | |
| 77 | 76 | typedef struct SWVoiceOut SWVoiceOut; |
| 78 | 77 | typedef struct CaptureVoiceOut CaptureVoiceOut; |
| 79 | 78 | typedef struct SWVoiceIn SWVoiceIn; | ... | ... |
audio/mixeng.c
audio/noaudio.c
| ... | ... | @@ -21,7 +21,9 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "qemu-common.h" | |
| 25 | +#include "audio.h" | |
| 26 | +#include "qemu-timer.h" | |
| 25 | 27 | |
| 26 | 28 | #define AUDIO_CAP "noaudio" |
| 27 | 29 | #include "audio_int.h" | ... | ... |
audio/ossaudio.c
audio/sdlaudio.c
audio/wavaudio.c
| ... | ... | @@ -21,7 +21,9 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw/hw.h" | |
| 25 | +#include "qemu-timer.h" | |
| 26 | +#include "audio.h" | |
| 25 | 27 | |
| 26 | 28 | #define AUDIO_CAP "wav" |
| 27 | 29 | #include "audio_int.h" | ... | ... |
audio/wavcapture.c
block-raw.c
| ... | ... | @@ -21,10 +21,9 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#ifdef QEMU_IMG | |
| 25 | 24 | #include "qemu-common.h" |
| 26 | -#else | |
| 27 | -#include "vl.h" | |
| 25 | +#ifndef QEMU_IMG | |
| 26 | +#include "qemu-timer.h" | |
| 28 | 27 | #include "exec-all.h" |
| 29 | 28 | #endif |
| 30 | 29 | #include "block_int.h" | ... | ... |
block.c
| ... | ... | @@ -21,10 +21,9 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#ifdef QEMU_IMG | |
| 25 | 24 | #include "qemu-common.h" |
| 26 | -#else | |
| 27 | -#include "vl.h" | |
| 25 | +#ifndef QEMU_IMG | |
| 26 | +#include "console.h" | |
| 28 | 27 | #endif |
| 29 | 28 | #include "block_int.h" |
| 30 | 29 | ... | ... |
block.h
cocoa.m
console.c
| ... | ... | @@ -21,7 +21,9 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "qemu-common.h" | |
| 25 | +#include "console.h" | |
| 26 | +#include "qemu-timer.h" | |
| 25 | 27 | |
| 26 | 28 | //#define DEBUG_CONSOLE |
| 27 | 29 | #define DEFAULT_BACKSCROLL 512 | ... | ... |
console.h
0 โ 100644
| 1 | +#ifndef CONSOLE_H | |
| 2 | +#define CONSOLE_H | |
| 3 | + | |
| 4 | +#include "qemu-char.h" | |
| 5 | + | |
| 6 | +/* keyboard/mouse support */ | |
| 7 | + | |
| 8 | +#define MOUSE_EVENT_LBUTTON 0x01 | |
| 9 | +#define MOUSE_EVENT_RBUTTON 0x02 | |
| 10 | +#define MOUSE_EVENT_MBUTTON 0x04 | |
| 11 | + | |
| 12 | +typedef void QEMUPutKBDEvent(void *opaque, int keycode); | |
| 13 | +typedef void QEMUPutMouseEvent(void *opaque, int dx, int dy, int dz, int buttons_state); | |
| 14 | + | |
| 15 | +typedef struct QEMUPutMouseEntry { | |
| 16 | + QEMUPutMouseEvent *qemu_put_mouse_event; | |
| 17 | + void *qemu_put_mouse_event_opaque; | |
| 18 | + int qemu_put_mouse_event_absolute; | |
| 19 | + char *qemu_put_mouse_event_name; | |
| 20 | + | |
| 21 | + /* used internally by qemu for handling mice */ | |
| 22 | + struct QEMUPutMouseEntry *next; | |
| 23 | +} QEMUPutMouseEntry; | |
| 24 | + | |
| 25 | +void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque); | |
| 26 | +QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func, | |
| 27 | + void *opaque, int absolute, | |
| 28 | + const char *name); | |
| 29 | +void qemu_remove_mouse_event_handler(QEMUPutMouseEntry *entry); | |
| 30 | + | |
| 31 | +void kbd_put_keycode(int keycode); | |
| 32 | +void kbd_mouse_event(int dx, int dy, int dz, int buttons_state); | |
| 33 | +int kbd_mouse_is_absolute(void); | |
| 34 | + | |
| 35 | +void do_info_mice(void); | |
| 36 | +void do_mouse_set(int index); | |
| 37 | + | |
| 38 | +/* keysym is a unicode code except for special keys (see QEMU_KEY_xxx | |
| 39 | + constants) */ | |
| 40 | +#define QEMU_KEY_ESC1(c) ((c) | 0xe100) | |
| 41 | +#define QEMU_KEY_BACKSPACE 0x007f | |
| 42 | +#define QEMU_KEY_UP QEMU_KEY_ESC1('A') | |
| 43 | +#define QEMU_KEY_DOWN QEMU_KEY_ESC1('B') | |
| 44 | +#define QEMU_KEY_RIGHT QEMU_KEY_ESC1('C') | |
| 45 | +#define QEMU_KEY_LEFT QEMU_KEY_ESC1('D') | |
| 46 | +#define QEMU_KEY_HOME QEMU_KEY_ESC1(1) | |
| 47 | +#define QEMU_KEY_END QEMU_KEY_ESC1(4) | |
| 48 | +#define QEMU_KEY_PAGEUP QEMU_KEY_ESC1(5) | |
| 49 | +#define QEMU_KEY_PAGEDOWN QEMU_KEY_ESC1(6) | |
| 50 | +#define QEMU_KEY_DELETE QEMU_KEY_ESC1(3) | |
| 51 | + | |
| 52 | +#define QEMU_KEY_CTRL_UP 0xe400 | |
| 53 | +#define QEMU_KEY_CTRL_DOWN 0xe401 | |
| 54 | +#define QEMU_KEY_CTRL_LEFT 0xe402 | |
| 55 | +#define QEMU_KEY_CTRL_RIGHT 0xe403 | |
| 56 | +#define QEMU_KEY_CTRL_HOME 0xe404 | |
| 57 | +#define QEMU_KEY_CTRL_END 0xe405 | |
| 58 | +#define QEMU_KEY_CTRL_PAGEUP 0xe406 | |
| 59 | +#define QEMU_KEY_CTRL_PAGEDOWN 0xe407 | |
| 60 | + | |
| 61 | +void kbd_put_keysym(int keysym); | |
| 62 | + | |
| 63 | +/* consoles */ | |
| 64 | + | |
| 65 | +struct DisplayState { | |
| 66 | + uint8_t *data; | |
| 67 | + int linesize; | |
| 68 | + int depth; | |
| 69 | + int bgr; /* BGR color order instead of RGB. Only valid for depth == 32 */ | |
| 70 | + int width; | |
| 71 | + int height; | |
| 72 | + void *opaque; | |
| 73 | + struct QEMUTimer *gui_timer; | |
| 74 | + | |
| 75 | + void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h); | |
| 76 | + void (*dpy_resize)(struct DisplayState *s, int w, int h); | |
| 77 | + void (*dpy_refresh)(struct DisplayState *s); | |
| 78 | + void (*dpy_copy)(struct DisplayState *s, int src_x, int src_y, | |
| 79 | + int dst_x, int dst_y, int w, int h); | |
| 80 | + void (*dpy_fill)(struct DisplayState *s, int x, int y, | |
| 81 | + int w, int h, uint32_t c); | |
| 82 | + void (*mouse_set)(int x, int y, int on); | |
| 83 | + void (*cursor_define)(int width, int height, int bpp, int hot_x, int hot_y, | |
| 84 | + uint8_t *image, uint8_t *mask); | |
| 85 | +}; | |
| 86 | + | |
| 87 | +static inline void dpy_update(DisplayState *s, int x, int y, int w, int h) | |
| 88 | +{ | |
| 89 | + s->dpy_update(s, x, y, w, h); | |
| 90 | +} | |
| 91 | + | |
| 92 | +static inline void dpy_resize(DisplayState *s, int w, int h) | |
| 93 | +{ | |
| 94 | + s->dpy_resize(s, w, h); | |
| 95 | +} | |
| 96 | + | |
| 97 | +typedef void (*vga_hw_update_ptr)(void *); | |
| 98 | +typedef void (*vga_hw_invalidate_ptr)(void *); | |
| 99 | +typedef void (*vga_hw_screen_dump_ptr)(void *, const char *); | |
| 100 | + | |
| 101 | +TextConsole *graphic_console_init(DisplayState *ds, vga_hw_update_ptr update, | |
| 102 | + vga_hw_invalidate_ptr invalidate, | |
| 103 | + vga_hw_screen_dump_ptr screen_dump, | |
| 104 | + void *opaque); | |
| 105 | +void vga_hw_update(void); | |
| 106 | +void vga_hw_invalidate(void); | |
| 107 | +void vga_hw_screen_dump(const char *filename); | |
| 108 | + | |
| 109 | +int is_graphic_console(void); | |
| 110 | +CharDriverState *text_console_init(DisplayState *ds, const char *p); | |
| 111 | +void console_select(unsigned int index); | |
| 112 | +void console_color_init(DisplayState *ds); | |
| 113 | + | |
| 114 | +/* sdl.c */ | |
| 115 | +void sdl_display_init(DisplayState *ds, int full_screen, int no_frame); | |
| 116 | + | |
| 117 | +/* cocoa.m */ | |
| 118 | +void cocoa_display_init(DisplayState *ds, int full_screen); | |
| 119 | + | |
| 120 | +/* vnc.c */ | |
| 121 | +void vnc_display_init(DisplayState *ds); | |
| 122 | +void vnc_display_close(DisplayState *ds); | |
| 123 | +int vnc_display_open(DisplayState *ds, const char *display); | |
| 124 | +int vnc_display_password(DisplayState *ds, const char *password); | |
| 125 | +void do_info_vnc(void); | |
| 126 | + | |
| 127 | +/* x_keymap.c */ | |
| 128 | +extern uint8_t _translate_keycode(const int key); | |
| 129 | + | |
| 130 | +/* FIXME: term_printf et al should probably go elsewhere so everything | |
| 131 | + does not need to include console.h */ | |
| 132 | +/* monitor.c */ | |
| 133 | +void monitor_init(CharDriverState *hd, int show_banner); | |
| 134 | +void term_puts(const char *str); | |
| 135 | +void term_vprintf(const char *fmt, va_list ap); | |
| 136 | +void term_printf(const char *fmt, ...) __attribute__ ((__format__ (__printf__, 1, 2))); | |
| 137 | +void term_print_filename(const char *filename); | |
| 138 | +void term_flush(void); | |
| 139 | +void term_print_help(void); | |
| 140 | +void monitor_readline(const char *prompt, int is_password, | |
| 141 | + char *buf, int buf_size); | |
| 142 | + | |
| 143 | +/* readline.c */ | |
| 144 | +typedef void ReadLineFunc(void *opaque, const char *str); | |
| 145 | + | |
| 146 | +extern int completion_index; | |
| 147 | +void add_completion(const char *str); | |
| 148 | +void readline_handle_byte(int ch); | |
| 149 | +void readline_find_completion(const char *cmdline); | |
| 150 | +const char *readline_get_history(unsigned int index); | |
| 151 | +void readline_start(const char *prompt, int is_password, | |
| 152 | + ReadLineFunc *readline_func, void *opaque); | |
| 153 | + | |
| 154 | +#endif | ... | ... |
cpu-defs.h
gdbstub.c
hw/acpi.c
| ... | ... | @@ -16,7 +16,13 @@ |
| 16 | 16 | * License along with this library; if not, write to the Free Software |
| 17 | 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 18 | 18 | */ |
| 19 | -#include "vl.h" | |
| 19 | +#include "hw.h" | |
| 20 | +#include "pc.h" | |
| 21 | +#include "pci.h" | |
| 22 | +#include "qemu-timer.h" | |
| 23 | +#include "sysemu.h" | |
| 24 | +#include "i2c.h" | |
| 25 | +#include "smbus.h" | |
| 20 | 26 | |
| 21 | 27 | //#define DEBUG |
| 22 | 28 | ... | ... |
hw/adb.c
hw/adlib.c
hw/ads7846.c
hw/an5206.c
hw/apb_pci.c
hw/apic.c
| ... | ... | @@ -17,7 +17,9 @@ |
| 17 | 17 | * License along with this library; if not, write to the Free Software |
| 18 | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 19 | 19 | */ |
| 20 | -#include "vl.h" | |
| 20 | +#include "hw.h" | |
| 21 | +#include "pc.h" | |
| 22 | +#include "qemu-timer.h" | |
| 21 | 23 | |
| 22 | 24 | //#define DEBUG_APIC |
| 23 | 25 | //#define DEBUG_IOAPIC | ... | ... |
hw/arm_pic.h renamed to hw/arm-misc.h
| 1 | 1 | /* |
| 2 | - * Generic ARM Programmable Interrupt Controller support. | |
| 2 | + * Misc ARM declarations | |
| 3 | 3 | * |
| 4 | 4 | * Copyright (c) 2006 CodeSourcery. |
| 5 | 5 | * Written by Paul Brook |
| 6 | 6 | * |
| 7 | 7 | * This code is licenced under the LGPL. |
| 8 | 8 | * |
| 9 | - * Arm hardware uses a wide variety of interrupt handling hardware. | |
| 10 | - * This provides a generic framework for connecting interrupt sources and | |
| 11 | - * inputs. | |
| 12 | 9 | */ |
| 13 | 10 | |
| 14 | -#ifndef ARM_INTERRUPT_H | |
| 15 | -#define ARM_INTERRUPT_H 1 | |
| 11 | +#ifndef ARM_MISC_H | |
| 12 | +#define ARM_MISC_H 1 | |
| 16 | 13 | |
| 17 | 14 | /* The CPU is also modeled as an interrupt controller. */ |
| 18 | 15 | #define ARM_PIC_CPU_IRQ 0 |
| 19 | 16 | #define ARM_PIC_CPU_FIQ 1 |
| 20 | 17 | qemu_irq *arm_pic_init_cpu(CPUState *env); |
| 21 | 18 | |
| 22 | -#endif /* !ARM_INTERRUPT_H */ | |
| 19 | +/* armv7m.c */ | |
| 20 | +qemu_irq *armv7m_init(int flash_size, int sram_size, | |
| 21 | + const char *kernel_filename, const char *cpu_model); | |
| 22 | + | |
| 23 | +/* arm_boot.c */ | |
| 24 | + | |
| 25 | +void arm_load_kernel(CPUState *env, int ram_size, const char *kernel_filename, | |
| 26 | + const char *kernel_cmdline, const char *initrd_filename, | |
| 27 | + int board_id, target_phys_addr_t loader_start); | |
| 28 | + | |
| 29 | +/* armv7m_nvic.c */ | |
| 30 | +qemu_irq *armv7m_nvic_init(CPUState *env); | |
| 31 | + | |
| 32 | +#endif /* !ARM_MISC_H */ | |
| 23 | 33 | ... | ... |
hw/arm_boot.c
hw/arm_pic.c
hw/arm_sysctl.c
hw/arm_timer.c
hw/armv7m.c
hw/armv7m_nvic.c
hw/audiodev.h
0 โ 100644
hw/boards.h
0 โ 100644
| 1 | +/* Declarations for use by board files for creating devices. */ | |
| 2 | + | |
| 3 | +#ifndef HW_BOARDS_H | |
| 4 | +#define HW_BOARDS_H | |
| 5 | + | |
| 6 | +typedef void QEMUMachineInitFunc(int ram_size, int vga_ram_size, | |
| 7 | + const char *boot_device, | |
| 8 | + DisplayState *ds, const char **fd_filename, int snapshot, | |
| 9 | + const char *kernel_filename, const char *kernel_cmdline, | |
| 10 | + const char *initrd_filename, const char *cpu_model); | |
| 11 | + | |
| 12 | +typedef struct QEMUMachine { | |
| 13 | + const char *name; | |
| 14 | + const char *desc; | |
| 15 | + QEMUMachineInitFunc *init; | |
| 16 | + struct QEMUMachine *next; | |
| 17 | +} QEMUMachine; | |
| 18 | + | |
| 19 | +int qemu_register_machine(QEMUMachine *m); | |
| 20 | + | |
| 21 | +/* Axis ETRAX. */ | |
| 22 | +extern QEMUMachine bareetraxfs_machine; | |
| 23 | + | |
| 24 | +/* pc.c */ | |
| 25 | +extern QEMUMachine pc_machine; | |
| 26 | +extern QEMUMachine isapc_machine; | |
| 27 | + | |
| 28 | +/* ppc.c */ | |
| 29 | +extern QEMUMachine prep_machine; | |
| 30 | +extern QEMUMachine core99_machine; | |
| 31 | +extern QEMUMachine heathrow_machine; | |
| 32 | +extern QEMUMachine ref405ep_machine; | |
| 33 | +extern QEMUMachine taihu_machine; | |
| 34 | + | |
| 35 | +/* mips_r4k.c */ | |
| 36 | +extern QEMUMachine mips_machine; | |
| 37 | + | |
| 38 | +/* mips_malta.c */ | |
| 39 | +extern QEMUMachine mips_malta_machine; | |
| 40 | + | |
| 41 | +/* mips_pica61.c */ | |
| 42 | +extern QEMUMachine mips_pica61_machine; | |
| 43 | + | |
| 44 | +/* mips_mipssim.c */ | |
| 45 | +extern QEMUMachine mips_mipssim_machine; | |
| 46 | + | |
| 47 | +/* shix.c */ | |
| 48 | +extern QEMUMachine shix_machine; | |
| 49 | + | |
| 50 | +/* r2d.c */ | |
| 51 | +extern QEMUMachine r2d_machine; | |
| 52 | + | |
| 53 | +/* sun4m.c */ | |
| 54 | +extern QEMUMachine ss5_machine, ss10_machine, ss600mp_machine; | |
| 55 | + | |
| 56 | +/* sun4u.c */ | |
| 57 | +extern QEMUMachine sun4u_machine; | |
| 58 | + | |
| 59 | +/* integratorcp.c */ | |
| 60 | +extern QEMUMachine integratorcp_machine; | |
| 61 | + | |
| 62 | +/* versatilepb.c */ | |
| 63 | +extern QEMUMachine versatilepb_machine; | |
| 64 | +extern QEMUMachine versatileab_machine; | |
| 65 | + | |
| 66 | +/* realview.c */ | |
| 67 | +extern QEMUMachine realview_machine; | |
| 68 | + | |
| 69 | +/* spitz.c */ | |
| 70 | +extern QEMUMachine akitapda_machine; | |
| 71 | +extern QEMUMachine spitzpda_machine; | |
| 72 | +extern QEMUMachine borzoipda_machine; | |
| 73 | +extern QEMUMachine terrierpda_machine; | |
| 74 | + | |
| 75 | +/* palm.c */ | |
| 76 | +extern QEMUMachine palmte_machine; | |
| 77 | + | |
| 78 | +/* gumstix.c */ | |
| 79 | +extern QEMUMachine connex_machine; | |
| 80 | + | |
| 81 | +/* stellaris.c */ | |
| 82 | +extern QEMUMachine lm3s811evb_machine; | |
| 83 | +extern QEMUMachine lm3s6965evb_machine; | |
| 84 | + | |
| 85 | +/* an5206.c */ | |
| 86 | +extern QEMUMachine an5206_machine; | |
| 87 | + | |
| 88 | +/* mcf5208.c */ | |
| 89 | +extern QEMUMachine mcf5208evb_machine; | |
| 90 | + | |
| 91 | +/* dummy_m68k.c */ | |
| 92 | +extern QEMUMachine dummy_m68k_machine; | |
| 93 | + | |
| 94 | +#endif | ... | ... |
hw/cdrom.c
hw/cirrus_vga.c
hw/cs4231.c
hw/cuda.c
| ... | ... | @@ -22,8 +22,10 @@ |
| 22 | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | 23 | * THE SOFTWARE. |
| 24 | 24 | */ |
| 25 | -#include "vl.h" | |
| 25 | +#include "hw.h" | |
| 26 | 26 | #include "ppc_mac.h" |
| 27 | +#include "qemu-timer.h" | |
| 28 | +#include "sysemu.h" | |
| 27 | 29 | |
| 28 | 30 | /* XXX: implement all timer modes */ |
| 29 | 31 | ... | ... |
hw/devices.h
0 โ 100644
| 1 | +#ifndef QEMU_DEVICES_H | |
| 2 | +#define QEMU_DEVICES_H | |
| 3 | + | |
| 4 | +/* Devices that have nowhere better to go. */ | |
| 5 | + | |
| 6 | +/* smc91c111.c */ | |
| 7 | +void smc91c111_init(NICInfo *, uint32_t, qemu_irq); | |
| 8 | + | |
| 9 | +/* ssd0323.c */ | |
| 10 | +int ssd0323_xfer_ssi(void *opaque, int data); | |
| 11 | +void *ssd0323_init(DisplayState *ds, qemu_irq *cmd_p); | |
| 12 | + | |
| 13 | +/* ads7846.c */ | |
| 14 | +struct ads7846_state_s; | |
| 15 | +uint32_t ads7846_read(void *opaque); | |
| 16 | +void ads7846_write(void *opaque, uint32_t value); | |
| 17 | +struct ads7846_state_s *ads7846_init(qemu_irq penirq); | |
| 18 | + | |
| 19 | +#endif | ... | ... |
hw/dma.c
hw/ds1225y.c
hw/dummy_m68k.c
hw/ecc.c
hw/eepro100.c
hw/eeprom93xx.c
hw/eeprom93xx.h
hw/es1370.c
hw/esp.c
| ... | ... | @@ -21,7 +21,12 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "block.h" | |
| 26 | +#include "scsi-disk.h" | |
| 27 | +#include "sun4m.h" | |
| 28 | +/* FIXME: Only needed for MAX_DISKS, which is probably wrong. */ | |
| 29 | +#include "sysemu.h" | |
| 25 | 30 | |
| 26 | 31 | /* debug ESP card */ |
| 27 | 32 | //#define DEBUG_ESP | ... | ... |
hw/etraxfs.c
hw/etraxfs_ser.c
hw/etraxfs_timer.c
hw/fdc.c
| ... | ... | @@ -25,7 +25,11 @@ |
| 25 | 25 | * The controller is used in Sun4m systems in a slightly different |
| 26 | 26 | * way. There are changes in DOR register and DMA is not available. |
| 27 | 27 | */ |
| 28 | -#include "vl.h" | |
| 28 | +#include "hw.h" | |
| 29 | +#include "fdc.h" | |
| 30 | +#include "block.h" | |
| 31 | +#include "qemu-timer.h" | |
| 32 | +#include "isa.h" | |
| 29 | 33 | |
| 30 | 34 | /********************************************************/ |
| 31 | 35 | /* debug Floppy devices */ | ... | ... |
hw/fdc.h
0 โ 100644
| 1 | +/* fdc.c */ | |
| 2 | +#define MAX_FD 2 | |
| 3 | +extern BlockDriverState *fd_table[MAX_FD]; | |
| 4 | + | |
| 5 | +typedef struct fdctrl_t fdctrl_t; | |
| 6 | + | |
| 7 | +fdctrl_t *fdctrl_init (qemu_irq irq, int dma_chann, int mem_mapped, | |
| 8 | + target_phys_addr_t io_base, | |
| 9 | + BlockDriverState **fds); | |
| 10 | +fdctrl_t *sun4m_fdctrl_init (qemu_irq irq, target_phys_addr_t io_base, | |
| 11 | + BlockDriverState **fds); | |
| 12 | +int fdctrl_get_drive_type(fdctrl_t *fdctrl, int drive_num); | ... | ... |
hw/flash.h
0 โ 100644
| 1 | +/* NOR flash devices */ | |
| 2 | +typedef struct pflash_t pflash_t; | |
| 3 | + | |
| 4 | +pflash_t *pflash_register (target_phys_addr_t base, ram_addr_t off, | |
| 5 | + BlockDriverState *bs, | |
| 6 | + uint32_t sector_len, int nb_blocs, int width, | |
| 7 | + uint16_t id0, uint16_t id1, | |
| 8 | + uint16_t id2, uint16_t id3); | |
| 9 | + | |
| 10 | +/* nand.c */ | |
| 11 | +struct nand_flash_s; | |
| 12 | +struct nand_flash_s *nand_init(int manf_id, int chip_id); | |
| 13 | +void nand_done(struct nand_flash_s *s); | |
| 14 | +void nand_setpins(struct nand_flash_s *s, | |
| 15 | + int cle, int ale, int ce, int wp, int gnd); | |
| 16 | +void nand_getpins(struct nand_flash_s *s, int *rb); | |
| 17 | +void nand_setio(struct nand_flash_s *s, uint8_t value); | |
| 18 | +uint8_t nand_getio(struct nand_flash_s *s); | |
| 19 | + | |
| 20 | +#define NAND_MFR_TOSHIBA 0x98 | |
| 21 | +#define NAND_MFR_SAMSUNG 0xec | |
| 22 | +#define NAND_MFR_FUJITSU 0x04 | |
| 23 | +#define NAND_MFR_NATIONAL 0x8f | |
| 24 | +#define NAND_MFR_RENESAS 0x07 | |
| 25 | +#define NAND_MFR_STMICRO 0x20 | |
| 26 | +#define NAND_MFR_HYNIX 0xad | |
| 27 | +#define NAND_MFR_MICRON 0x2c | |
| 28 | + | |
| 29 | +/* ecc.c */ | |
| 30 | +struct ecc_state_s { | |
| 31 | + uint8_t cp; /* Column parity */ | |
| 32 | + uint16_t lp[2]; /* Line parity */ | |
| 33 | + uint16_t count; | |
| 34 | +}; | |
| 35 | + | |
| 36 | +uint8_t ecc_digest(struct ecc_state_s *s, uint8_t sample); | |
| 37 | +void ecc_reset(struct ecc_state_s *s); | |
| 38 | +void ecc_put(QEMUFile *f, struct ecc_state_s *s); | |
| 39 | +void ecc_get(QEMUFile *f, struct ecc_state_s *s); | |
| 40 | + | ... | ... |
hw/grackle_pci.c
hw/gt64xxx.c
hw/gumstix.c
| ... | ... | @@ -8,7 +8,13 @@ |
| 8 | 8 | * This code is licensed under the GNU GPL v2. |
| 9 | 9 | */ |
| 10 | 10 | |
| 11 | -#include "vl.h" | |
| 11 | +#include "hw.h" | |
| 12 | +#include "pxa.h" | |
| 13 | +#include "net.h" | |
| 14 | +#include "flash.h" | |
| 15 | +#include "sysemu.h" | |
| 16 | +#include "devices.h" | |
| 17 | +#include "boards.h" | |
| 12 | 18 | |
| 13 | 19 | /* Board init. */ |
| 14 | 20 | enum gumstix_model_e { connex }; | ... | ... |
hw/heathrow_pic.c
hw/hw.h
0 โ 100644
| 1 | +/* Declarations for use by hardware emulation. */ | |
| 2 | +#ifndef QEMU_HW_H | |
| 3 | +#define QEMU_HW_H | |
| 4 | + | |
| 5 | +#include "qemu-common.h" | |
| 6 | +#include "irq.h" | |
| 7 | + | |
| 8 | +/* VM Load/Save */ | |
| 9 | + | |
| 10 | +QEMUFile *qemu_fopen(const char *filename, const char *mode); | |
| 11 | +void qemu_fflush(QEMUFile *f); | |
| 12 | +void qemu_fclose(QEMUFile *f); | |
| 13 | +void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, int size); | |
| 14 | +void qemu_put_byte(QEMUFile *f, int v); | |
| 15 | +void qemu_put_be16(QEMUFile *f, unsigned int v); | |
| 16 | +void qemu_put_be32(QEMUFile *f, unsigned int v); | |
| 17 | +void qemu_put_be64(QEMUFile *f, uint64_t v); | |
| 18 | +int qemu_get_buffer(QEMUFile *f, uint8_t *buf, int size); | |
| 19 | +int qemu_get_byte(QEMUFile *f); | |
| 20 | +unsigned int qemu_get_be16(QEMUFile *f); | |
| 21 | +unsigned int qemu_get_be32(QEMUFile *f); | |
| 22 | +uint64_t qemu_get_be64(QEMUFile *f); | |
| 23 | + | |
| 24 | +static inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv) | |
| 25 | +{ | |
| 26 | + qemu_put_be64(f, *pv); | |
| 27 | +} | |
| 28 | + | |
| 29 | +static inline void qemu_put_be32s(QEMUFile *f, const uint32_t *pv) | |
| 30 | +{ | |
| 31 | + qemu_put_be32(f, *pv); | |
| 32 | +} | |
| 33 | + | |
| 34 | +static inline void qemu_put_be16s(QEMUFile *f, const uint16_t *pv) | |
| 35 | +{ | |
| 36 | + qemu_put_be16(f, *pv); | |
| 37 | +} | |
| 38 | + | |
| 39 | +static inline void qemu_put_8s(QEMUFile *f, const uint8_t *pv) | |
| 40 | +{ | |
| 41 | + qemu_put_byte(f, *pv); | |
| 42 | +} | |
| 43 | + | |
| 44 | +static inline void qemu_get_be64s(QEMUFile *f, uint64_t *pv) | |
| 45 | +{ | |
| 46 | + *pv = qemu_get_be64(f); | |
| 47 | +} | |
| 48 | + | |
| 49 | +static inline void qemu_get_be32s(QEMUFile *f, uint32_t *pv) | |
| 50 | +{ | |
| 51 | + *pv = qemu_get_be32(f); | |
| 52 | +} | |
| 53 | + | |
| 54 | +static inline void qemu_get_be16s(QEMUFile *f, uint16_t *pv) | |
| 55 | +{ | |
| 56 | + *pv = qemu_get_be16(f); | |
| 57 | +} | |
| 58 | + | |
| 59 | +static inline void qemu_get_8s(QEMUFile *f, uint8_t *pv) | |
| 60 | +{ | |
| 61 | + *pv = qemu_get_byte(f); | |
| 62 | +} | |
| 63 | + | |
| 64 | +#ifdef NEED_CPU_H | |
| 65 | +#if TARGET_LONG_BITS == 64 | |
| 66 | +#define qemu_put_betl qemu_put_be64 | |
| 67 | +#define qemu_get_betl qemu_get_be64 | |
| 68 | +#define qemu_put_betls qemu_put_be64s | |
| 69 | +#define qemu_get_betls qemu_get_be64s | |
| 70 | +#else | |
| 71 | +#define qemu_put_betl qemu_put_be32 | |
| 72 | +#define qemu_get_betl qemu_get_be32 | |
| 73 | +#define qemu_put_betls qemu_put_be32s | |
| 74 | +#define qemu_get_betls qemu_get_be32s | |
| 75 | +#endif | |
| 76 | +#endif | |
| 77 | + | |
| 78 | +int64_t qemu_ftell(QEMUFile *f); | |
| 79 | +int64_t qemu_fseek(QEMUFile *f, int64_t pos, int whence); | |
| 80 | + | |
| 81 | +typedef void SaveStateHandler(QEMUFile *f, void *opaque); | |
| 82 | +typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id); | |
| 83 | + | |
| 84 | +int register_savevm(const char *idstr, | |
| 85 | + int instance_id, | |
| 86 | + int version_id, | |
| 87 | + SaveStateHandler *save_state, | |
| 88 | + LoadStateHandler *load_state, | |
| 89 | + void *opaque); | |
| 90 | + | |
| 91 | +typedef void QEMUResetHandler(void *opaque); | |
| 92 | + | |
| 93 | +void qemu_register_reset(QEMUResetHandler *func, void *opaque); | |
| 94 | + | |
| 95 | +/* These should really be in isa.h, but are here to make pc.h happy. */ | |
| 96 | +typedef void (IOPortWriteFunc)(void *opaque, uint32_t address, uint32_t data); | |
| 97 | +typedef uint32_t (IOPortReadFunc)(void *opaque, uint32_t address); | |
| 98 | + | |
| 99 | +#endif | ... | ... |
hw/i2c.c
| ... | ... | @@ -7,7 +7,8 @@ |
| 7 | 7 | * This code is licenced under the LGPL. |
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | -#include "vl.h" | |
| 10 | +#include "hw.h" | |
| 11 | +#include "i2c.h" | |
| 11 | 12 | |
| 12 | 13 | struct i2c_bus |
| 13 | 14 | { |
| ... | ... | @@ -30,7 +31,7 @@ i2c_slave *i2c_slave_init(i2c_bus *bus, int address, int size) |
| 30 | 31 | i2c_slave *dev; |
| 31 | 32 | |
| 32 | 33 | if (size < sizeof(i2c_slave)) |
| 33 | - cpu_abort(cpu_single_env, "I2C struct too small"); | |
| 34 | + hw_error("I2C struct too small"); | |
| 34 | 35 | |
| 35 | 36 | dev = (i2c_slave *)qemu_mallocz(size); |
| 36 | 37 | dev->address = address; | ... | ... |
hw/i2c.h
| ... | ... | @@ -13,8 +13,6 @@ enum i2c_event { |
| 13 | 13 | I2C_NACK /* Masker NACKed a receive byte. */ |
| 14 | 14 | }; |
| 15 | 15 | |
| 16 | -typedef struct i2c_slave i2c_slave; | |
| 17 | - | |
| 18 | 16 | /* Master to slave. */ |
| 19 | 17 | typedef int (*i2c_send_cb)(i2c_slave *s, uint8_t data); |
| 20 | 18 | /* Slave to master. */ |
| ... | ... | @@ -34,8 +32,6 @@ struct i2c_slave |
| 34 | 32 | void *next; |
| 35 | 33 | }; |
| 36 | 34 | |
| 37 | -typedef struct i2c_bus i2c_bus; | |
| 38 | - | |
| 39 | 35 | i2c_bus *i2c_init_bus(void); |
| 40 | 36 | i2c_slave *i2c_slave_init(i2c_bus *bus, int address, int size); |
| 41 | 37 | void i2c_set_slave_address(i2c_slave *dev, int address); |
| ... | ... | @@ -50,6 +46,14 @@ void i2c_bus_load(QEMUFile *f, i2c_bus *bus); |
| 50 | 46 | void i2c_slave_save(QEMUFile *f, i2c_slave *dev); |
| 51 | 47 | void i2c_slave_load(QEMUFile *f, i2c_slave *dev); |
| 52 | 48 | |
| 49 | +/* max111x.c */ | |
| 50 | +struct max111x_s; | |
| 51 | +uint32_t max111x_read(void *opaque); | |
| 52 | +void max111x_write(void *opaque, uint32_t value); | |
| 53 | +struct max111x_s *max1110_init(qemu_irq cb); | |
| 54 | +struct max111x_s *max1111_init(qemu_irq cb); | |
| 55 | +void max111x_set_input(struct max111x_s *s, int line, uint8_t value); | |
| 56 | + | |
| 53 | 57 | /* max7310.c */ |
| 54 | 58 | i2c_slave *max7310_init(i2c_bus *bus); |
| 55 | 59 | void max7310_reset(i2c_slave *i2c); |
| ... | ... | @@ -64,4 +68,7 @@ void wm8750_data_req_set(i2c_slave *i2c, |
| 64 | 68 | void wm8750_dac_dat(void *opaque, uint32_t sample); |
| 65 | 69 | uint32_t wm8750_adc_dat(void *opaque); |
| 66 | 70 | |
| 71 | +/* ssd0303.c */ | |
| 72 | +void ssd0303_init(DisplayState *ds, i2c_bus *bus, int address); | |
| 73 | + | |
| 67 | 74 | #endif | ... | ... |
hw/i8254.c
hw/i8259.c
| ... | ... | @@ -21,7 +21,10 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "pc.h" | |
| 26 | +#include "isa.h" | |
| 27 | +#include "console.h" | |
| 25 | 28 | |
| 26 | 29 | /* debug PIC */ |
| 27 | 30 | //#define DEBUG_PIC | ... | ... |
hw/ide.c
| ... | ... | @@ -22,7 +22,14 @@ |
| 22 | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | 23 | * THE SOFTWARE. |
| 24 | 24 | */ |
| 25 | -#include "vl.h" | |
| 25 | +#include "hw.h" | |
| 26 | +#include "pc.h" | |
| 27 | +#include "pci.h" | |
| 28 | +#include "scsi-disk.h" | |
| 29 | +#include "pcmcia.h" | |
| 30 | +#include "block.h" | |
| 31 | +#include "qemu-timer.h" | |
| 32 | +#include "sysemu.h" | |
| 26 | 33 | |
| 27 | 34 | /* debug IDE devices */ |
| 28 | 35 | //#define DEBUG_IDE | ... | ... |
hw/integratorcp.c
| ... | ... | @@ -7,8 +7,13 @@ |
| 7 | 7 | * This code is licenced under the GPL |
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | -#include "vl.h" | |
| 11 | -#include "arm_pic.h" | |
| 10 | +#include "hw.h" | |
| 11 | +#include "primecell.h" | |
| 12 | +#include "devices.h" | |
| 13 | +#include "sysemu.h" | |
| 14 | +#include "boards.h" | |
| 15 | +#include "arm-misc.h" | |
| 16 | +#include "net.h" | |
| 12 | 17 | |
| 13 | 18 | void DMA_run (void) |
| 14 | 19 | { | ... | ... |
hw/iommu.c
hw/irq.c
hw/irq.h
| 1 | +#ifndef QEMU_IRQ_H | |
| 2 | +#define QEMU_IRQ_H | |
| 3 | + | |
| 1 | 4 | /* Generic IRQ/GPIO pin infrastructure. */ |
| 2 | 5 | |
| 6 | +/* FIXME: Rmove one of these. */ | |
| 3 | 7 | typedef void (*qemu_irq_handler)(void *opaque, int n, int level); |
| 4 | - | |
| 5 | -typedef struct IRQState *qemu_irq; | |
| 8 | +typedef void SetIRQFunc(void *opaque, int irq_num, int level); | |
| 6 | 9 | |
| 7 | 10 | void qemu_set_irq(qemu_irq irq, int level); |
| 8 | 11 | |
| ... | ... | @@ -21,3 +24,5 @@ qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n); |
| 21 | 24 | |
| 22 | 25 | /* Returns a new IRQ with opposite polarity. */ |
| 23 | 26 | qemu_irq qemu_irq_invert(qemu_irq irq); |
| 27 | + | |
| 28 | +#endif | ... | ... |
hw/isa.h
0 โ 100644
| 1 | +/* ISA bus */ | |
| 2 | + | |
| 3 | +extern target_phys_addr_t isa_mem_base; | |
| 4 | + | |
| 5 | +int register_ioport_read(int start, int length, int size, | |
| 6 | + IOPortReadFunc *func, void *opaque); | |
| 7 | +int register_ioport_write(int start, int length, int size, | |
| 8 | + IOPortWriteFunc *func, void *opaque); | |
| 9 | +void isa_unassign_ioport(int start, int length); | |
| 10 | + | |
| 11 | +void isa_mmio_init(target_phys_addr_t base, target_phys_addr_t size); | |
| 12 | + | |
| 13 | +/* dma.c */ | |
| 14 | +int DMA_get_channel_mode (int nchan); | |
| 15 | +int DMA_read_memory (int nchan, void *buf, int pos, int size); | |
| 16 | +int DMA_write_memory (int nchan, void *buf, int pos, int size); | |
| 17 | +void DMA_hold_DREQ (int nchan); | |
| 18 | +void DMA_release_DREQ (int nchan); | |
| 19 | +void DMA_schedule(int nchan); | |
| 20 | +void DMA_run (void); | |
| 21 | +void DMA_init (int high_page_enable); | |
| 22 | +void DMA_register_channel (int nchan, | |
| 23 | + DMA_transfer_handler transfer_handler, | |
| 24 | + void *opaque); | ... | ... |
hw/isa_mmio.c
hw/jazz_led.c
hw/lsi53c895a.c
hw/m48t59.c
| ... | ... | @@ -21,8 +21,11 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 25 | -#include "m48t59.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "nvram.h" | |
| 26 | +#include "isa.h" | |
| 27 | +#include "qemu-timer.h" | |
| 28 | +#include "sysemu.h" | |
| 26 | 29 | |
| 27 | 30 | //#define DEBUG_NVRAM |
| 28 | 31 | ... | ... |
hw/m48t59.h deleted
100644 โ 0
| 1 | -#if !defined (__M48T59_H__) | |
| 2 | -#define __M48T59_H__ | |
| 3 | - | |
| 4 | -typedef struct m48t59_t m48t59_t; | |
| 5 | - | |
| 6 | -void m48t59_write (void *private, uint32_t addr, uint32_t val); | |
| 7 | -uint32_t m48t59_read (void *private, uint32_t addr); | |
| 8 | -void m48t59_toggle_lock (void *private, int lock); | |
| 9 | -m48t59_t *m48t59_init (qemu_irq IRQ, target_phys_addr_t mem_base, | |
| 10 | - uint32_t io_base, uint16_t size, | |
| 11 | - int type); | |
| 12 | - | |
| 13 | -#endif /* !defined (__M48T59_H__) */ |
hw/mac_dbdma.c
hw/mac_nvram.c
hw/macio.c
| ... | ... | @@ -22,8 +22,9 @@ |
| 22 | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | 23 | * THE SOFTWARE. |
| 24 | 24 | */ |
| 25 | -#include "vl.h" | |
| 25 | +#include "hw.h" | |
| 26 | 26 | #include "ppc_mac.h" |
| 27 | +#include "pci.h" | |
| 27 | 28 | |
| 28 | 29 | typedef struct macio_state_t macio_state_t; |
| 29 | 30 | struct macio_state_t { | ... | ... |
hw/max111x.c
hw/max7310.c
| ... | ... | @@ -7,7 +7,8 @@ |
| 7 | 7 | * This file is licensed under GNU GPL. |
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | -#include "vl.h" | |
| 10 | +#include "hw.h" | |
| 11 | +#include "i2c.h" | |
| 11 | 12 | |
| 12 | 13 | struct max7310_s { |
| 13 | 14 | i2c_slave i2c; |
| ... | ... | @@ -182,7 +183,7 @@ static void max7310_gpio_set(void *opaque, int line, int level) |
| 182 | 183 | { |
| 183 | 184 | struct max7310_s *s = (struct max7310_s *) opaque; |
| 184 | 185 | if (line >= sizeof(s->handler) / sizeof(*s->handler) || line < 0) |
| 185 | - cpu_abort(cpu_single_env, "bad GPIO line"); | |
| 186 | + hw_error("bad GPIO line"); | |
| 186 | 187 | |
| 187 | 188 | if (level) |
| 188 | 189 | s->level |= s->direction & (1 << line); |
| ... | ... | @@ -220,7 +221,7 @@ void max7310_gpio_out_set(i2c_slave *i2c, int line, qemu_irq handler) |
| 220 | 221 | { |
| 221 | 222 | struct max7310_s *s = (struct max7310_s *) i2c; |
| 222 | 223 | if (line >= sizeof(s->handler) / sizeof(*s->handler) || line < 0) |
| 223 | - cpu_abort(cpu_single_env, "bad GPIO line"); | |
| 224 | + hw_error("bad GPIO line"); | |
| 224 | 225 | |
| 225 | 226 | s->handler[line] = handler; |
| 226 | 227 | } | ... | ... |
hw/mc146818rtc.c
| ... | ... | @@ -21,7 +21,11 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "qemu-timer.h" | |
| 26 | +#include "sysemu.h" | |
| 27 | +#include "pc.h" | |
| 28 | +#include "isa.h" | |
| 25 | 29 | |
| 26 | 30 | //#define DEBUG_CMOS |
| 27 | 31 | ... | ... |
hw/mcf.h
0 โ 100644
| 1 | +#ifndef HW_MCF_H | |
| 2 | +#define HW_MCF_H | |
| 3 | +/* Motorola ColdFire device prototypes. */ | |
| 4 | + | |
| 5 | +/* mcf_uart.c */ | |
| 6 | +uint32_t mcf_uart_read(void *opaque, target_phys_addr_t addr); | |
| 7 | +void mcf_uart_write(void *opaque, target_phys_addr_t addr, uint32_t val); | |
| 8 | +void *mcf_uart_init(qemu_irq irq, CharDriverState *chr); | |
| 9 | +void mcf_uart_mm_init(target_phys_addr_t base, qemu_irq irq, | |
| 10 | + CharDriverState *chr); | |
| 11 | + | |
| 12 | +/* mcf_intc.c */ | |
| 13 | +qemu_irq *mcf_intc_init(target_phys_addr_t base, CPUState *env); | |
| 14 | + | |
| 15 | +/* mcf_fec.c */ | |
| 16 | +void mcf_fec_init(NICInfo *nd, target_phys_addr_t base, qemu_irq *irq); | |
| 17 | + | |
| 18 | +/* mcf5206.c */ | |
| 19 | +qemu_irq *mcf5206_init(uint32_t base, CPUState *env); | |
| 20 | + | |
| 21 | +#endif | ... | ... |
hw/mcf5206.c
hw/mcf5208.c
hw/mcf_fec.c
hw/mcf_intc.c
hw/mcf_uart.c
hw/mips.h
0 โ 100644
| 1 | +#ifndef HW_MIPS_H | |
| 2 | +#define HW_MIPS_H | |
| 3 | +/* Definitions for mips board emulation. */ | |
| 4 | + | |
| 5 | +/* gt64xxx.c */ | |
| 6 | +PCIBus *pci_gt64120_init(qemu_irq *pic); | |
| 7 | + | |
| 8 | +/* ds1225y.c */ | |
| 9 | +typedef struct ds1225y_t ds1225y_t; | |
| 10 | +ds1225y_t *ds1225y_init(target_phys_addr_t mem_base, const char *filename); | |
| 11 | + | |
| 12 | +/* mipsnet.c */ | |
| 13 | +void mipsnet_init(int base, qemu_irq irq, NICInfo *nd); | |
| 14 | + | |
| 15 | +/* jazz_led.c */ | |
| 16 | +extern void jazz_led_init(DisplayState *ds, target_phys_addr_t base); | |
| 17 | + | |
| 18 | +/* mips_int.c */ | |
| 19 | +extern void cpu_mips_irq_init_cpu(CPUState *env); | |
| 20 | + | |
| 21 | +/* mips_timer.c */ | |
| 22 | +extern void cpu_mips_clock_init(CPUState *); | |
| 23 | +extern void cpu_mips_irqctrl_init (void); | |
| 24 | + | |
| 25 | +#endif | ... | ... |
hw/mips_int.c
hw/mips_malta.c
| ... | ... | @@ -22,7 +22,17 @@ |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | 24 | |
| 25 | -#include "vl.h" | |
| 25 | +#include "hw.h" | |
| 26 | +#include "pc.h" | |
| 27 | +#include "net.h" | |
| 28 | +#include "boards.h" | |
| 29 | +#include "smbus.h" | |
| 30 | +#include "mips.h" | |
| 31 | +#include "pci.h" | |
| 32 | +#include "qemu-char.h" | |
| 33 | +#include "sysemu.h" | |
| 34 | +#include "audio/audio.h" | |
| 35 | +#include "boards.h" | |
| 26 | 36 | |
| 27 | 37 | #ifdef TARGET_WORDS_BIGENDIAN |
| 28 | 38 | #define BIOS_FILENAME "mips_bios.bin" | ... | ... |
hw/mips_mipssim.c
| ... | ... | @@ -24,7 +24,13 @@ |
| 24 | 24 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 25 | 25 | * THE SOFTWARE. |
| 26 | 26 | */ |
| 27 | -#include "vl.h" | |
| 27 | +#include "hw.h" | |
| 28 | +#include "mips.h" | |
| 29 | +#include "pc.h" | |
| 30 | +#include "isa.h" | |
| 31 | +#include "net.h" | |
| 32 | +#include "sysemu.h" | |
| 33 | +#include "boards.h" | |
| 28 | 34 | |
| 29 | 35 | #ifdef TARGET_WORDS_BIGENDIAN |
| 30 | 36 | #define BIOS_FILENAME "mips_bios.bin" | ... | ... |
hw/mips_pica61.c
| ... | ... | @@ -22,7 +22,13 @@ |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | 24 | |
| 25 | -#include "vl.h" | |
| 25 | +#include "hw.h" | |
| 26 | +#include "mips.h" | |
| 27 | +#include "isa.h" | |
| 28 | +#include "pc.h" | |
| 29 | +#include "fdc.h" | |
| 30 | +#include "sysemu.h" | |
| 31 | +#include "boards.h" | |
| 26 | 32 | |
| 27 | 33 | #ifdef TARGET_WORDS_BIGENDIAN |
| 28 | 34 | #define BIOS_FILENAME "mips_bios.bin" | ... | ... |
hw/mips_r4k.c
| ... | ... | @@ -7,7 +7,13 @@ |
| 7 | 7 | * All peripherial devices are attached to this "bus" with |
| 8 | 8 | * the standard PC ISA addresses. |
| 9 | 9 | */ |
| 10 | -#include "vl.h" | |
| 10 | +#include "hw.h" | |
| 11 | +#include "mips.h" | |
| 12 | +#include "pc.h" | |
| 13 | +#include "isa.h" | |
| 14 | +#include "net.h" | |
| 15 | +#include "sysemu.h" | |
| 16 | +#include "boards.h" | |
| 11 | 17 | |
| 12 | 18 | #ifdef TARGET_WORDS_BIGENDIAN |
| 13 | 19 | #define BIOS_FILENAME "mips_bios.bin" | ... | ... |
hw/mips_timer.c
hw/mipsnet.c
hw/mpcore.c
hw/nand.c
| ... | ... | @@ -11,7 +11,11 @@ |
| 11 | 11 | |
| 12 | 12 | #ifndef NAND_IO |
| 13 | 13 | |
| 14 | -# include "vl.h" | |
| 14 | +# include "hw.h" | |
| 15 | +# include "flash.h" | |
| 16 | +# include "block.h" | |
| 17 | +/* FIXME: Pass block device as an argument. */ | |
| 18 | +# include "sysemu.h" | |
| 15 | 19 | |
| 16 | 20 | # define NAND_CMD_READ0 0x00 |
| 17 | 21 | # define NAND_CMD_READ1 0x01 | ... | ... |
hw/ne2000.c
hw/nvram.h
0 โ 100644
| 1 | +#ifndef NVRAM_H | |
| 2 | +#define NVRAM_H | |
| 3 | + | |
| 4 | +/* NVRAM helpers */ | |
| 5 | +typedef uint32_t (*nvram_read_t)(void *private, uint32_t addr); | |
| 6 | +typedef void (*nvram_write_t)(void *private, uint32_t addr, uint32_t val); | |
| 7 | +typedef struct nvram_t { | |
| 8 | + void *opaque; | |
| 9 | + nvram_read_t read_fn; | |
| 10 | + nvram_write_t write_fn; | |
| 11 | +} nvram_t; | |
| 12 | + | |
| 13 | +void NVRAM_set_byte (nvram_t *nvram, uint32_t addr, uint8_t value); | |
| 14 | +uint8_t NVRAM_get_byte (nvram_t *nvram, uint32_t addr); | |
| 15 | +void NVRAM_set_word (nvram_t *nvram, uint32_t addr, uint16_t value); | |
| 16 | +uint16_t NVRAM_get_word (nvram_t *nvram, uint32_t addr); | |
| 17 | +void NVRAM_set_lword (nvram_t *nvram, uint32_t addr, uint32_t value); | |
| 18 | +uint32_t NVRAM_get_lword (nvram_t *nvram, uint32_t addr); | |
| 19 | +void NVRAM_set_string (nvram_t *nvram, uint32_t addr, | |
| 20 | + const unsigned char *str, uint32_t max); | |
| 21 | +int NVRAM_get_string (nvram_t *nvram, uint8_t *dst, uint16_t addr, int max); | |
| 22 | +void NVRAM_set_crc (nvram_t *nvram, uint32_t addr, | |
| 23 | + uint32_t start, uint32_t count); | |
| 24 | +int PPC_NVRAM_set_params (nvram_t *nvram, uint16_t NVRAM_size, | |
| 25 | + const unsigned char *arch, | |
| 26 | + uint32_t RAM_size, int boot_device, | |
| 27 | + uint32_t kernel_image, uint32_t kernel_size, | |
| 28 | + const char *cmdline, | |
| 29 | + uint32_t initrd_image, uint32_t initrd_size, | |
| 30 | + uint32_t NVRAM_image, | |
| 31 | + int width, int height, int depth); | |
| 32 | +typedef struct m48t59_t m48t59_t; | |
| 33 | + | |
| 34 | +void m48t59_write (void *private, uint32_t addr, uint32_t val); | |
| 35 | +uint32_t m48t59_read (void *private, uint32_t addr); | |
| 36 | +void m48t59_toggle_lock (void *private, int lock); | |
| 37 | +m48t59_t *m48t59_init (qemu_irq IRQ, target_phys_addr_t mem_base, | |
| 38 | + uint32_t io_base, uint16_t size, | |
| 39 | + int type); | |
| 40 | + | |
| 41 | +#endif /* !NVRAM_H */ | ... | ... |
hw/omap.c
| ... | ... | @@ -18,8 +18,13 @@ |
| 18 | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
| 19 | 19 | * MA 02111-1307 USA |
| 20 | 20 | */ |
| 21 | -#include "vl.h" | |
| 22 | -#include "arm_pic.h" | |
| 21 | +#include "hw.h" | |
| 22 | +#include "arm-misc.h" | |
| 23 | +#include "omap.h" | |
| 24 | +#include "sysemu.h" | |
| 25 | +#include "qemu-timer.h" | |
| 26 | +/* We use pc-style serial ports. */ | |
| 27 | +#include "pc.h" | |
| 23 | 28 | |
| 24 | 29 | /* Should signal the TCMI */ |
| 25 | 30 | uint32_t omap_badwidth_read8(void *opaque, target_phys_addr_t addr) |
| ... | ... | @@ -4716,7 +4721,7 @@ struct omap_mpu_state_s *omap310_mpu_init(unsigned long sdram_size, |
| 4716 | 4721 | omap_dpll_init(&s->dpll[1], 0xfffed000, omap_findclk(s, "dpll2")); |
| 4717 | 4722 | omap_dpll_init(&s->dpll[2], 0xfffed100, omap_findclk(s, "dpll3")); |
| 4718 | 4723 | |
| 4719 | - s->mmc = omap_mmc_init(0xfffb7800, s->irq[1][OMAP_INT_OQN], | |
| 4724 | + s->mmc = omap_mmc_init(0xfffb7800, sd_bdrv, s->irq[1][OMAP_INT_OQN], | |
| 4720 | 4725 | &s->drq[OMAP_DMA_MMC_TX], omap_findclk(s, "mmc_ck")); |
| 4721 | 4726 | |
| 4722 | 4727 | s->mpuio = omap_mpuio_init(0xfffb5000, | ... | ... |
hw/omap.h
| ... | ... | @@ -513,6 +513,7 @@ struct omap_lcd_panel_s *omap_lcdc_init(target_phys_addr_t base, qemu_irq irq, |
| 513 | 513 | /* omap_mmc.c */ |
| 514 | 514 | struct omap_mmc_s; |
| 515 | 515 | struct omap_mmc_s *omap_mmc_init(target_phys_addr_t base, |
| 516 | + BlockDriverState *bd, | |
| 516 | 517 | qemu_irq irq, qemu_irq dma[], omap_clk clk); |
| 517 | 518 | void omap_mmc_reset(struct omap_mmc_s *s); |
| 518 | 519 | void omap_mmc_handlers(struct omap_mmc_s *s, qemu_irq ro, qemu_irq cover); |
| ... | ... | @@ -788,4 +789,10 @@ inline static int debug_register_io_memory(int io_index, |
| 788 | 789 | # define cpu_register_io_memory debug_register_io_memory |
| 789 | 790 | # endif |
| 790 | 791 | |
| 792 | +/* Not really omap specific, but is the only thing that uses the | |
| 793 | + uwire interface. */ | |
| 794 | +/* tsc210x.c */ | |
| 795 | +struct uwire_slave_s *tsc2102_init(qemu_irq pint, AudioState *audio); | |
| 796 | +struct i2s_codec_s *tsc210x_codec(struct uwire_slave_s *chip); | |
| 797 | + | |
| 791 | 798 | #endif /* hw_omap_h */ | ... | ... |
hw/omap1_clk.c
hw/omap_i2c.c
hw/omap_lcdc.c
hw/omap_mmc.c
| ... | ... | @@ -18,7 +18,8 @@ |
| 18 | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
| 19 | 19 | * MA 02111-1307 USA |
| 20 | 20 | */ |
| 21 | -#include "vl.h" | |
| 21 | +#include "hw.h" | |
| 22 | +#include "omap.h" | |
| 22 | 23 | #include "sd.h" |
| 23 | 24 | |
| 24 | 25 | struct omap_mmc_s { |
| ... | ... | @@ -507,6 +508,7 @@ void omap_mmc_reset(struct omap_mmc_s *host) |
| 507 | 508 | } |
| 508 | 509 | |
| 509 | 510 | struct omap_mmc_s *omap_mmc_init(target_phys_addr_t base, |
| 511 | + BlockDriverState *bd, | |
| 510 | 512 | qemu_irq irq, qemu_irq dma[], omap_clk clk) |
| 511 | 513 | { |
| 512 | 514 | int iomemtype; |
| ... | ... | @@ -523,7 +525,7 @@ struct omap_mmc_s *omap_mmc_init(target_phys_addr_t base, |
| 523 | 525 | cpu_register_physical_memory(s->base, 0x800, iomemtype); |
| 524 | 526 | |
| 525 | 527 | /* Instantiate the storage */ |
| 526 | - s->card = sd_init(sd_bdrv); | |
| 528 | + s->card = sd_init(bd); | |
| 527 | 529 | |
| 528 | 530 | return s; |
| 529 | 531 | } | ... | ... |
hw/openpic.c
hw/palm.c
| ... | ... | @@ -18,7 +18,13 @@ |
| 18 | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
| 19 | 19 | * MA 02111-1307 USA |
| 20 | 20 | */ |
| 21 | -#include "vl.h" | |
| 21 | +#include "hw.h" | |
| 22 | +#include "audio/audio.h" | |
| 23 | +#include "sysemu.h" | |
| 24 | +#include "console.h" | |
| 25 | +#include "omap.h" | |
| 26 | +#include "boards.h" | |
| 27 | +#include "arm-misc.h" | |
| 22 | 28 | |
| 23 | 29 | static uint32_t static_readb(void *opaque, target_phys_addr_t offset) |
| 24 | 30 | { | ... | ... |
hw/parallel.c
hw/pc.c
| ... | ... | @@ -21,7 +21,16 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "pc.h" | |
| 26 | +#include "fdc.h" | |
| 27 | +#include "pci.h" | |
| 28 | +#include "block.h" | |
| 29 | +#include "sysemu.h" | |
| 30 | +#include "audio/audio.h" | |
| 31 | +#include "net.h" | |
| 32 | +#include "smbus.h" | |
| 33 | +#include "boards.h" | |
| 25 | 34 | |
| 26 | 35 | /* output Bochs bios info messages */ |
| 27 | 36 | //#define DEBUG_BIOS | ... | ... |
hw/pc.h
0 โ 100644
| 1 | +#ifndef HW_PC_H | |
| 2 | +#define HW_PC_H | |
| 3 | +/* PC-style peripherals (also used by other machines). */ | |
| 4 | + | |
| 5 | +/* serial.c */ | |
| 6 | + | |
| 7 | +SerialState *serial_init(int base, qemu_irq irq, CharDriverState *chr); | |
| 8 | +SerialState *serial_mm_init (target_phys_addr_t base, int it_shift, | |
| 9 | + qemu_irq irq, CharDriverState *chr, | |
| 10 | + int ioregister); | |
| 11 | +uint32_t serial_mm_readb (void *opaque, target_phys_addr_t addr); | |
| 12 | +void serial_mm_writeb (void *opaque, target_phys_addr_t addr, uint32_t value); | |
| 13 | +uint32_t serial_mm_readw (void *opaque, target_phys_addr_t addr); | |
| 14 | +void serial_mm_writew (void *opaque, target_phys_addr_t addr, uint32_t value); | |
| 15 | +uint32_t serial_mm_readl (void *opaque, target_phys_addr_t addr); | |
| 16 | +void serial_mm_writel (void *opaque, target_phys_addr_t addr, uint32_t value); | |
| 17 | + | |
| 18 | +/* parallel.c */ | |
| 19 | + | |
| 20 | +typedef struct ParallelState ParallelState; | |
| 21 | +ParallelState *parallel_init(int base, qemu_irq irq, CharDriverState *chr); | |
| 22 | +ParallelState *parallel_mm_init(target_phys_addr_t base, int it_shift, qemu_irq irq, CharDriverState *chr); | |
| 23 | + | |
| 24 | +/* i8259.c */ | |
| 25 | + | |
| 26 | +typedef struct PicState2 PicState2; | |
| 27 | +extern PicState2 *isa_pic; | |
| 28 | +void pic_set_irq(int irq, int level); | |
| 29 | +void pic_set_irq_new(void *opaque, int irq, int level); | |
| 30 | +qemu_irq *i8259_init(qemu_irq parent_irq); | |
| 31 | +void pic_set_alt_irq_func(PicState2 *s, SetIRQFunc *alt_irq_func, | |
| 32 | + void *alt_irq_opaque); | |
| 33 | +int pic_read_irq(PicState2 *s); | |
| 34 | +void pic_update_irq(PicState2 *s); | |
| 35 | +uint32_t pic_intack_read(PicState2 *s); | |
| 36 | +void pic_info(void); | |
| 37 | +void irq_info(void); | |
| 38 | + | |
| 39 | +/* APIC */ | |
| 40 | +typedef struct IOAPICState IOAPICState; | |
| 41 | + | |
| 42 | +int apic_init(CPUState *env); | |
| 43 | +int apic_accept_pic_intr(CPUState *env); | |
| 44 | +int apic_get_interrupt(CPUState *env); | |
| 45 | +IOAPICState *ioapic_init(void); | |
| 46 | +void ioapic_set_irq(void *opaque, int vector, int level); | |
| 47 | + | |
| 48 | +/* i8254.c */ | |
| 49 | + | |
| 50 | +#define PIT_FREQ 1193182 | |
| 51 | + | |
| 52 | +typedef struct PITState PITState; | |
| 53 | + | |
| 54 | +PITState *pit_init(int base, qemu_irq irq); | |
| 55 | +void pit_set_gate(PITState *pit, int channel, int val); | |
| 56 | +int pit_get_gate(PITState *pit, int channel); | |
| 57 | +int pit_get_initial_count(PITState *pit, int channel); | |
| 58 | +int pit_get_mode(PITState *pit, int channel); | |
| 59 | +int pit_get_out(PITState *pit, int channel, int64_t current_time); | |
| 60 | + | |
| 61 | +/* vmport.c */ | |
| 62 | +void vmport_init(CPUState *env); | |
| 63 | +void vmport_register(unsigned char command, IOPortReadFunc *func, void *opaque); | |
| 64 | + | |
| 65 | +/* vmmouse.c */ | |
| 66 | +void *vmmouse_init(void *m); | |
| 67 | + | |
| 68 | +/* pckbd.c */ | |
| 69 | + | |
| 70 | +void i8042_init(qemu_irq kbd_irq, qemu_irq mouse_irq, uint32_t io_base); | |
| 71 | +void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq, | |
| 72 | + target_phys_addr_t base, int it_shift); | |
| 73 | + | |
| 74 | +/* mc146818rtc.c */ | |
| 75 | + | |
| 76 | +typedef struct RTCState RTCState; | |
| 77 | + | |
| 78 | +RTCState *rtc_init(int base, qemu_irq irq); | |
| 79 | +RTCState *rtc_mm_init(target_phys_addr_t base, int it_shift, qemu_irq irq); | |
| 80 | +void rtc_set_memory(RTCState *s, int addr, int val); | |
| 81 | +void rtc_set_date(RTCState *s, const struct tm *tm); | |
| 82 | + | |
| 83 | +/* pc.c */ | |
| 84 | +extern int fd_bootchk; | |
| 85 | + | |
| 86 | +void ioport_set_a20(int enable); | |
| 87 | +int ioport_get_a20(void); | |
| 88 | + | |
| 89 | +/* acpi.c */ | |
| 90 | +extern int acpi_enabled; | |
| 91 | +i2c_bus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base); | |
| 92 | +void piix4_smbus_register_device(SMBusDevice *dev, uint8_t addr); | |
| 93 | +void acpi_bios_init(void); | |
| 94 | + | |
| 95 | +/* pcspk.c */ | |
| 96 | +void pcspk_init(PITState *); | |
| 97 | +int pcspk_audio_init(AudioState *, qemu_irq *pic); | |
| 98 | + | |
| 99 | +/* piix_pci.c */ | |
| 100 | +PCIBus *i440fx_init(PCIDevice **pi440fx_state, qemu_irq *pic); | |
| 101 | +void i440fx_set_smm(PCIDevice *d, int val); | |
| 102 | +int piix3_init(PCIBus *bus, int devfn); | |
| 103 | +void i440fx_init_memory_mappings(PCIDevice *d); | |
| 104 | + | |
| 105 | +int piix4_init(PCIBus *bus, int devfn); | |
| 106 | + | |
| 107 | +/* vga.c */ | |
| 108 | + | |
| 109 | +#ifndef TARGET_SPARC | |
| 110 | +#define VGA_RAM_SIZE (8192 * 1024) | |
| 111 | +#else | |
| 112 | +#define VGA_RAM_SIZE (9 * 1024 * 1024) | |
| 113 | +#endif | |
| 114 | + | |
| 115 | +int isa_vga_init(DisplayState *ds, uint8_t *vga_ram_base, | |
| 116 | + unsigned long vga_ram_offset, int vga_ram_size); | |
| 117 | +int pci_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, | |
| 118 | + unsigned long vga_ram_offset, int vga_ram_size, | |
| 119 | + unsigned long vga_bios_offset, int vga_bios_size); | |
| 120 | +int isa_vga_mm_init(DisplayState *ds, uint8_t *vga_ram_base, | |
| 121 | + unsigned long vga_ram_offset, int vga_ram_size, | |
| 122 | + target_phys_addr_t vram_base, target_phys_addr_t ctrl_base, | |
| 123 | + int it_shift); | |
| 124 | + | |
| 125 | +/* cirrus_vga.c */ | |
| 126 | +void pci_cirrus_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, | |
| 127 | + unsigned long vga_ram_offset, int vga_ram_size); | |
| 128 | +void isa_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, | |
| 129 | + unsigned long vga_ram_offset, int vga_ram_size); | |
| 130 | + | |
| 131 | +/* ide.c */ | |
| 132 | +void isa_ide_init(int iobase, int iobase2, qemu_irq irq, | |
| 133 | + BlockDriverState *hd0, BlockDriverState *hd1); | |
| 134 | +void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table, | |
| 135 | + int secondary_ide_enabled); | |
| 136 | +void pci_piix3_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn, | |
| 137 | + qemu_irq *pic); | |
| 138 | +void pci_piix4_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn, | |
| 139 | + qemu_irq *pic); | |
| 140 | + | |
| 141 | +/* ne2000.c */ | |
| 142 | + | |
| 143 | +void isa_ne2000_init(int base, qemu_irq irq, NICInfo *nd); | |
| 144 | + | |
| 145 | +#endif | ... | ... |
hw/pci.c
hw/pci.h
0 โ 100644
| 1 | +#ifndef QEMU_PCI_H | |
| 2 | +#define QEMU_PCI_H | |
| 3 | + | |
| 4 | +/* PCI includes legacy ISA access. */ | |
| 5 | +#include "isa.h" | |
| 6 | + | |
| 7 | +/* PCI bus */ | |
| 8 | + | |
| 9 | +extern target_phys_addr_t pci_mem_base; | |
| 10 | + | |
| 11 | +typedef void PCIConfigWriteFunc(PCIDevice *pci_dev, | |
| 12 | + uint32_t address, uint32_t data, int len); | |
| 13 | +typedef uint32_t PCIConfigReadFunc(PCIDevice *pci_dev, | |
| 14 | + uint32_t address, int len); | |
| 15 | +typedef void PCIMapIORegionFunc(PCIDevice *pci_dev, int region_num, | |
| 16 | + uint32_t addr, uint32_t size, int type); | |
| 17 | + | |
| 18 | +#define PCI_ADDRESS_SPACE_MEM 0x00 | |
| 19 | +#define PCI_ADDRESS_SPACE_IO 0x01 | |
| 20 | +#define PCI_ADDRESS_SPACE_MEM_PREFETCH 0x08 | |
| 21 | + | |
| 22 | +typedef struct PCIIORegion { | |
| 23 | + uint32_t addr; /* current PCI mapping address. -1 means not mapped */ | |
| 24 | + uint32_t size; | |
| 25 | + uint8_t type; | |
| 26 | + PCIMapIORegionFunc *map_func; | |
| 27 | +} PCIIORegion; | |
| 28 | + | |
| 29 | +#define PCI_ROM_SLOT 6 | |
| 30 | +#define PCI_NUM_REGIONS 7 | |
| 31 | + | |
| 32 | +#define PCI_DEVICES_MAX 64 | |
| 33 | + | |
| 34 | +#define PCI_VENDOR_ID 0x00 /* 16 bits */ | |
| 35 | +#define PCI_DEVICE_ID 0x02 /* 16 bits */ | |
| 36 | +#define PCI_COMMAND 0x04 /* 16 bits */ | |
| 37 | +#define PCI_COMMAND_IO 0x1 /* Enable response in I/O space */ | |
| 38 | +#define PCI_COMMAND_MEMORY 0x2 /* Enable response in Memory space */ | |
| 39 | +#define PCI_CLASS_DEVICE 0x0a /* Device class */ | |
| 40 | +#define PCI_INTERRUPT_LINE 0x3c /* 8 bits */ | |
| 41 | +#define PCI_INTERRUPT_PIN 0x3d /* 8 bits */ | |
| 42 | +#define PCI_MIN_GNT 0x3e /* 8 bits */ | |
| 43 | +#define PCI_MAX_LAT 0x3f /* 8 bits */ | |
| 44 | + | |
| 45 | +struct PCIDevice { | |
| 46 | + /* PCI config space */ | |
| 47 | + uint8_t config[256]; | |
| 48 | + | |
| 49 | + /* the following fields are read only */ | |
| 50 | + PCIBus *bus; | |
| 51 | + int devfn; | |
| 52 | + char name[64]; | |
| 53 | + PCIIORegion io_regions[PCI_NUM_REGIONS]; | |
| 54 | + | |
| 55 | + /* do not access the following fields */ | |
| 56 | + PCIConfigReadFunc *config_read; | |
| 57 | + PCIConfigWriteFunc *config_write; | |
| 58 | + /* ??? This is a PC-specific hack, and should be removed. */ | |
| 59 | + int irq_index; | |
| 60 | + | |
| 61 | + /* IRQ objects for the INTA-INTD pins. */ | |
| 62 | + qemu_irq *irq; | |
| 63 | + | |
| 64 | + /* Current IRQ levels. Used internally by the generic PCI code. */ | |
| 65 | + int irq_state[4]; | |
| 66 | +}; | |
| 67 | + | |
| 68 | +PCIDevice *pci_register_device(PCIBus *bus, const char *name, | |
| 69 | + int instance_size, int devfn, | |
| 70 | + PCIConfigReadFunc *config_read, | |
| 71 | + PCIConfigWriteFunc *config_write); | |
| 72 | + | |
| 73 | +void pci_register_io_region(PCIDevice *pci_dev, int region_num, | |
| 74 | + uint32_t size, int type, | |
| 75 | + PCIMapIORegionFunc *map_func); | |
| 76 | + | |
| 77 | +uint32_t pci_default_read_config(PCIDevice *d, | |
| 78 | + uint32_t address, int len); | |
| 79 | +void pci_default_write_config(PCIDevice *d, | |
| 80 | + uint32_t address, uint32_t val, int len); | |
| 81 | +void pci_device_save(PCIDevice *s, QEMUFile *f); | |
| 82 | +int pci_device_load(PCIDevice *s, QEMUFile *f); | |
| 83 | + | |
| 84 | +typedef void (*pci_set_irq_fn)(qemu_irq *pic, int irq_num, int level); | |
| 85 | +typedef int (*pci_map_irq_fn)(PCIDevice *pci_dev, int irq_num); | |
| 86 | +PCIBus *pci_register_bus(pci_set_irq_fn set_irq, pci_map_irq_fn map_irq, | |
| 87 | + qemu_irq *pic, int devfn_min, int nirq); | |
| 88 | + | |
| 89 | +void pci_nic_init(PCIBus *bus, NICInfo *nd, int devfn); | |
| 90 | +void pci_data_write(void *opaque, uint32_t addr, uint32_t val, int len); | |
| 91 | +uint32_t pci_data_read(void *opaque, uint32_t addr, int len); | |
| 92 | +int pci_bus_num(PCIBus *s); | |
| 93 | +void pci_for_each_device(int bus_num, void (*fn)(PCIDevice *d)); | |
| 94 | + | |
| 95 | +void pci_info(void); | |
| 96 | +PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint32_t id, | |
| 97 | + pci_map_irq_fn map_irq, const char *name); | |
| 98 | + | |
| 99 | +/* lsi53c895a.c */ | |
| 100 | +void lsi_scsi_attach(void *opaque, BlockDriverState *bd, int id); | |
| 101 | +void *lsi_scsi_init(PCIBus *bus, int devfn); | |
| 102 | + | |
| 103 | +/* vmware_vga.c */ | |
| 104 | +void pci_vmsvga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, | |
| 105 | + unsigned long vga_ram_offset, int vga_ram_size); | |
| 106 | + | |
| 107 | +/* usb-uhci.c */ | |
| 108 | +void usb_uhci_piix3_init(PCIBus *bus, int devfn); | |
| 109 | +void usb_uhci_piix4_init(PCIBus *bus, int devfn); | |
| 110 | + | |
| 111 | +/* usb-ohci.c */ | |
| 112 | +void usb_ohci_init_pci(struct PCIBus *bus, int num_ports, int devfn); | |
| 113 | + | |
| 114 | +/* eepro100.c */ | |
| 115 | + | |
| 116 | +void pci_i82551_init(PCIBus *bus, NICInfo *nd, int devfn); | |
| 117 | +void pci_i82557b_init(PCIBus *bus, NICInfo *nd, int devfn); | |
| 118 | +void pci_i82559er_init(PCIBus *bus, NICInfo *nd, int devfn); | |
| 119 | + | |
| 120 | +/* ne2000.c */ | |
| 121 | + | |
| 122 | +void pci_ne2000_init(PCIBus *bus, NICInfo *nd, int devfn); | |
| 123 | + | |
| 124 | +/* rtl8139.c */ | |
| 125 | + | |
| 126 | +void pci_rtl8139_init(PCIBus *bus, NICInfo *nd, int devfn); | |
| 127 | + | |
| 128 | +/* pcnet.c */ | |
| 129 | +void pci_pcnet_init(PCIBus *bus, NICInfo *nd, int devfn); | |
| 130 | + | |
| 131 | +/* prep_pci.c */ | |
| 132 | +PCIBus *pci_prep_init(qemu_irq *pic); | |
| 133 | + | |
| 134 | +/* apb_pci.c */ | |
| 135 | +PCIBus *pci_apb_init(target_phys_addr_t special_base, target_phys_addr_t mem_base, | |
| 136 | + qemu_irq *pic); | |
| 137 | + | |
| 138 | +#endif | ... | ... |
hw/pckbd.c
| ... | ... | @@ -21,7 +21,11 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "isa.h" | |
| 26 | +#include "pc.h" | |
| 27 | +#include "ps2.h" | |
| 28 | +#include "sysemu.h" | |
| 25 | 29 | |
| 26 | 30 | /* debug PC keyboard */ |
| 27 | 31 | //#define DEBUG_KBD | ... | ... |
hw/pcmcia.h
0 โ 100644
| 1 | +/* PCMCIA/Cardbus */ | |
| 2 | + | |
| 3 | +struct pcmcia_socket_s { | |
| 4 | + qemu_irq irq; | |
| 5 | + int attached; | |
| 6 | + const char *slot_string; | |
| 7 | + const char *card_string; | |
| 8 | +}; | |
| 9 | + | |
| 10 | +void pcmcia_socket_register(struct pcmcia_socket_s *socket); | |
| 11 | +void pcmcia_socket_unregister(struct pcmcia_socket_s *socket); | |
| 12 | +void pcmcia_info(void); | |
| 13 | + | |
| 14 | +struct pcmcia_card_s { | |
| 15 | + void *state; | |
| 16 | + struct pcmcia_socket_s *slot; | |
| 17 | + int (*attach)(void *state); | |
| 18 | + int (*detach)(void *state); | |
| 19 | + const uint8_t *cis; | |
| 20 | + int cis_len; | |
| 21 | + | |
| 22 | + /* Only valid if attached */ | |
| 23 | + uint8_t (*attr_read)(void *state, uint32_t address); | |
| 24 | + void (*attr_write)(void *state, uint32_t address, uint8_t value); | |
| 25 | + uint16_t (*common_read)(void *state, uint32_t address); | |
| 26 | + void (*common_write)(void *state, uint32_t address, uint16_t value); | |
| 27 | + uint16_t (*io_read)(void *state, uint32_t address); | |
| 28 | + void (*io_write)(void *state, uint32_t address, uint16_t value); | |
| 29 | +}; | |
| 30 | + | |
| 31 | +#define CISTPL_DEVICE 0x01 /* 5V Device Information Tuple */ | |
| 32 | +#define CISTPL_NO_LINK 0x14 /* No Link Tuple */ | |
| 33 | +#define CISTPL_VERS_1 0x15 /* Level 1 Version Tuple */ | |
| 34 | +#define CISTPL_JEDEC_C 0x18 /* JEDEC ID Tuple */ | |
| 35 | +#define CISTPL_JEDEC_A 0x19 /* JEDEC ID Tuple */ | |
| 36 | +#define CISTPL_CONFIG 0x1a /* Configuration Tuple */ | |
| 37 | +#define CISTPL_CFTABLE_ENTRY 0x1b /* 16-bit PCCard Configuration */ | |
| 38 | +#define CISTPL_DEVICE_OC 0x1c /* Additional Device Information */ | |
| 39 | +#define CISTPL_DEVICE_OA 0x1d /* Additional Device Information */ | |
| 40 | +#define CISTPL_DEVICE_GEO 0x1e /* Additional Device Information */ | |
| 41 | +#define CISTPL_DEVICE_GEO_A 0x1f /* Additional Device Information */ | |
| 42 | +#define CISTPL_MANFID 0x20 /* Manufacture ID Tuple */ | |
| 43 | +#define CISTPL_FUNCID 0x21 /* Function ID Tuple */ | |
| 44 | +#define CISTPL_FUNCE 0x22 /* Function Extension Tuple */ | |
| 45 | +#define CISTPL_END 0xff /* Tuple End */ | |
| 46 | +#define CISTPL_ENDMARK 0xff | |
| 47 | + | |
| 48 | +/* dscm1xxxx.c */ | |
| 49 | +struct pcmcia_card_s *dscm1xxxx_init(BlockDriverState *bdrv); | |
| 50 | + | ... | ... |
hw/pcnet.c
| ... | ... | @@ -35,7 +35,10 @@ |
| 35 | 35 | * http://www.ibiblio.org/pub/historic-linux/early-ports/Sparc/NCR/NCR92C990.txt |
| 36 | 36 | */ |
| 37 | 37 | |
| 38 | -#include "vl.h" | |
| 38 | +#include "hw.h" | |
| 39 | +#include "pci.h" | |
| 40 | +#include "net.h" | |
| 41 | +#include "qemu-timer.h" | |
| 39 | 42 | |
| 40 | 43 | //#define PCNET_DEBUG |
| 41 | 44 | //#define PCNET_DEBUG_IO |
| ... | ... | @@ -2008,6 +2011,7 @@ void pci_pcnet_init(PCIBus *bus, NICInfo *nd, int devfn) |
| 2008 | 2011 | /* SPARC32 interface */ |
| 2009 | 2012 | |
| 2010 | 2013 | #if defined (TARGET_SPARC) && !defined(TARGET_SPARC64) // Avoid compile failure |
| 2014 | +#include "sun4m.h" | |
| 2011 | 2015 | |
| 2012 | 2016 | static void parent_lance_reset(void *opaque, int irq, int level) |
| 2013 | 2017 | { | ... | ... |
hw/pcspk.c
hw/pflash_cfi01.c
hw/pflash_cfi02.c
hw/piix_pci.c
hw/pl011.c
hw/pl022.c
hw/pl031.c
hw/pl050.c
hw/pl061.c
hw/pl080.c
hw/pl110.c
hw/pl181.c
hw/pl190.c
| ... | ... | @@ -7,8 +7,9 @@ |
| 7 | 7 | * This code is licenced under the GPL. |
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | -#include "vl.h" | |
| 11 | -#include "arm_pic.h" | |
| 10 | +#include "hw.h" | |
| 11 | +#include "primecell.h" | |
| 12 | +#include "arm-misc.h" | |
| 12 | 13 | |
| 13 | 14 | /* The number of virtual priority levels. 16 user vectors plus the |
| 14 | 15 | unvectored IRQ. Chained interrupts would require an additional level | ... | ... |
hw/ppc.c
| ... | ... | @@ -21,7 +21,11 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "ppc.h" | |
| 26 | +#include "qemu-timer.h" | |
| 27 | +#include "sysemu.h" | |
| 28 | +#include "nvram.h" | |
| 25 | 29 | |
| 26 | 30 | //#define PPC_DEBUG_IRQ |
| 27 | 31 | //#define PPC_DEBUG_TB | ... | ... |
hw/ppc.h
0 โ 100644
| 1 | +/* PowerPC hardware exceptions management helpers */ | |
| 2 | +typedef void (*clk_setup_cb)(void *opaque, uint32_t freq); | |
| 3 | +typedef struct clk_setup_t clk_setup_t; | |
| 4 | +struct clk_setup_t { | |
| 5 | + clk_setup_cb cb; | |
| 6 | + void *opaque; | |
| 7 | +}; | |
| 8 | +static inline void clk_setup (clk_setup_t *clk, uint32_t freq) | |
| 9 | +{ | |
| 10 | + if (clk->cb != NULL) | |
| 11 | + (*clk->cb)(clk->opaque, freq); | |
| 12 | +} | |
| 13 | + | |
| 14 | +clk_setup_cb cpu_ppc_tb_init (CPUState *env, uint32_t freq); | |
| 15 | +/* Embedded PowerPC DCR management */ | |
| 16 | +typedef target_ulong (*dcr_read_cb)(void *opaque, int dcrn); | |
| 17 | +typedef void (*dcr_write_cb)(void *opaque, int dcrn, target_ulong val); | |
| 18 | +int ppc_dcr_init (CPUState *env, int (*dcr_read_error)(int dcrn), | |
| 19 | + int (*dcr_write_error)(int dcrn)); | |
| 20 | +int ppc_dcr_register (CPUState *env, int dcrn, void *opaque, | |
| 21 | + dcr_read_cb drc_read, dcr_write_cb dcr_write); | |
| 22 | +clk_setup_cb ppc_emb_timers_init (CPUState *env, uint32_t freq); | |
| 23 | +/* Embedded PowerPC reset */ | |
| 24 | +void ppc40x_core_reset (CPUState *env); | |
| 25 | +void ppc40x_chip_reset (CPUState *env); | |
| 26 | +void ppc40x_system_reset (CPUState *env); | |
| 27 | +void PREP_debug_write (void *opaque, uint32_t addr, uint32_t val); | |
| 28 | + | |
| 29 | +extern CPUWriteMemoryFunc *PPC_io_write[]; | |
| 30 | +extern CPUReadMemoryFunc *PPC_io_read[]; | |
| 31 | +void PPC_debug_write (void *opaque, uint32_t addr, uint32_t val); | ... | ... |
hw/ppc405_boards.c
| ... | ... | @@ -21,8 +21,14 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "ppc.h" | |
| 25 | 26 | #include "ppc405.h" |
| 27 | +#include "nvram.h" | |
| 28 | +#include "flash.h" | |
| 29 | +#include "sysemu.h" | |
| 30 | +#include "block.h" | |
| 31 | +#include "boards.h" | |
| 26 | 32 | |
| 27 | 33 | extern int loglevel; |
| 28 | 34 | extern FILE *logfile; | ... | ... |
hw/ppc405_uc.c
| ... | ... | @@ -21,8 +21,12 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "ppc.h" | |
| 25 | 26 | #include "ppc405.h" |
| 27 | +#include "pc.h" | |
| 28 | +#include "qemu-timer.h" | |
| 29 | +#include "sysemu.h" | |
| 26 | 30 | |
| 27 | 31 | extern int loglevel; |
| 28 | 32 | extern FILE *logfile; | ... | ... |
hw/ppc4xx_devs.c
| ... | ... | @@ -21,8 +21,10 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "ppc.h" | |
| 25 | 26 | #include "ppc4xx.h" |
| 27 | +#include "sysemu.h" | |
| 26 | 28 | |
| 27 | 29 | extern int loglevel; |
| 28 | 30 | extern FILE *logfile; | ... | ... |
hw/ppc_chrp.c
| ... | ... | @@ -22,8 +22,15 @@ |
| 22 | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | 23 | * THE SOFTWARE. |
| 24 | 24 | */ |
| 25 | -#include "vl.h" | |
| 25 | +#include "hw.h" | |
| 26 | +#include "ppc.h" | |
| 26 | 27 | #include "ppc_mac.h" |
| 28 | +#include "nvram.h" | |
| 29 | +#include "pc.h" | |
| 30 | +#include "pci.h" | |
| 31 | +#include "net.h" | |
| 32 | +#include "sysemu.h" | |
| 33 | +#include "boards.h" | |
| 27 | 34 | |
| 28 | 35 | /* UniN device */ |
| 29 | 36 | static void unin_writel (void *opaque, target_phys_addr_t addr, uint32_t value) | ... | ... |
hw/ppc_mac.h
| ... | ... | @@ -68,4 +68,58 @@ void pmac_format_nvram_partition (MacIONVRAMState *nvr, int len); |
| 68 | 68 | uint32_t macio_nvram_read (void *opaque, uint32_t addr); |
| 69 | 69 | void macio_nvram_write (void *opaque, uint32_t addr, uint32_t val); |
| 70 | 70 | |
| 71 | +/* adb.c */ | |
| 72 | + | |
| 73 | +#define MAX_ADB_DEVICES 16 | |
| 74 | + | |
| 75 | +#define ADB_MAX_OUT_LEN 16 | |
| 76 | + | |
| 77 | +typedef struct ADBDevice ADBDevice; | |
| 78 | + | |
| 79 | +/* buf = NULL means polling */ | |
| 80 | +typedef int ADBDeviceRequest(ADBDevice *d, uint8_t *buf_out, | |
| 81 | + const uint8_t *buf, int len); | |
| 82 | +typedef int ADBDeviceReset(ADBDevice *d); | |
| 83 | + | |
| 84 | +struct ADBDevice { | |
| 85 | + struct ADBBusState *bus; | |
| 86 | + int devaddr; | |
| 87 | + int handler; | |
| 88 | + ADBDeviceRequest *devreq; | |
| 89 | + ADBDeviceReset *devreset; | |
| 90 | + void *opaque; | |
| 91 | +}; | |
| 92 | + | |
| 93 | +typedef struct ADBBusState { | |
| 94 | + ADBDevice devices[MAX_ADB_DEVICES]; | |
| 95 | + int nb_devices; | |
| 96 | + int poll_index; | |
| 97 | +} ADBBusState; | |
| 98 | + | |
| 99 | +int adb_request(ADBBusState *s, uint8_t *buf_out, | |
| 100 | + const uint8_t *buf, int len); | |
| 101 | +int adb_poll(ADBBusState *s, uint8_t *buf_out); | |
| 102 | + | |
| 103 | +ADBDevice *adb_register_device(ADBBusState *s, int devaddr, | |
| 104 | + ADBDeviceRequest *devreq, | |
| 105 | + ADBDeviceReset *devreset, | |
| 106 | + void *opaque); | |
| 107 | +void adb_kbd_init(ADBBusState *bus); | |
| 108 | +void adb_mouse_init(ADBBusState *bus); | |
| 109 | + | |
| 110 | +extern ADBBusState adb_bus; | |
| 111 | + | |
| 112 | +/* openpic.c */ | |
| 113 | +/* OpenPIC have 5 outputs per CPU connected and one IRQ out single output */ | |
| 114 | +enum { | |
| 115 | + OPENPIC_OUTPUT_INT = 0, /* IRQ */ | |
| 116 | + OPENPIC_OUTPUT_CINT, /* critical IRQ */ | |
| 117 | + OPENPIC_OUTPUT_MCK, /* Machine check event */ | |
| 118 | + OPENPIC_OUTPUT_DEBUG, /* Inconditional debug event */ | |
| 119 | + OPENPIC_OUTPUT_RESET, /* Core reset event */ | |
| 120 | + OPENPIC_OUTPUT_NB, | |
| 121 | +}; | |
| 122 | +qemu_irq *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus, | |
| 123 | + qemu_irq **irqs, qemu_irq irq_out); | |
| 124 | + | |
| 71 | 125 | #endif /* !defined(__PPC_MAC_H__) */ | ... | ... |
hw/ppc_oldworld.c
| ... | ... | @@ -22,8 +22,16 @@ |
| 22 | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | 23 | * THE SOFTWARE. |
| 24 | 24 | */ |
| 25 | -#include "vl.h" | |
| 25 | +#include "hw.h" | |
| 26 | +#include "ppc.h" | |
| 26 | 27 | #include "ppc_mac.h" |
| 28 | +#include "nvram.h" | |
| 29 | +#include "pc.h" | |
| 30 | +#include "sysemu.h" | |
| 31 | +#include "net.h" | |
| 32 | +#include "isa.h" | |
| 33 | +#include "pci.h" | |
| 34 | +#include "boards.h" | |
| 27 | 35 | |
| 28 | 36 | /* temporary frame buffer OSI calls for the video.x driver. The right |
| 29 | 37 | solution is to modify the driver to use VGA PCI I/Os */ | ... | ... |
hw/ppc_prep.c
| ... | ... | @@ -21,7 +21,16 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "nvram.h" | |
| 26 | +#include "pc.h" | |
| 27 | +#include "fdc.h" | |
| 28 | +#include "net.h" | |
| 29 | +#include "sysemu.h" | |
| 30 | +#include "isa.h" | |
| 31 | +#include "pci.h" | |
| 32 | +#include "ppc.h" | |
| 33 | +#include "boards.h" | |
| 25 | 34 | |
| 26 | 35 | //#define HARD_DEBUG_PPC_IO |
| 27 | 36 | //#define DEBUG_PPC_IO | ... | ... |
hw/prep_pci.c
hw/primecell.h
0 โ 100644
| 1 | +#ifndef PRIMECELL_H | |
| 2 | +#define PRIMECELL_H | |
| 3 | + | |
| 4 | +/* Declarations for ARM PrimeCell based periperals. */ | |
| 5 | +/* Also includes some devices that are currently only used by the | |
| 6 | + ARM boards. */ | |
| 7 | + | |
| 8 | +/* pl031.c */ | |
| 9 | +void pl031_init(uint32_t base, qemu_irq irq); | |
| 10 | + | |
| 11 | +/* pl110.c */ | |
| 12 | +void *pl110_init(DisplayState *ds, uint32_t base, qemu_irq irq, int); | |
| 13 | + | |
| 14 | +/* pl011.c */ | |
| 15 | +enum pl011_type { | |
| 16 | + PL011_ARM, | |
| 17 | + PL011_LUMINARY | |
| 18 | +}; | |
| 19 | + | |
| 20 | +void pl011_init(uint32_t base, qemu_irq irq, CharDriverState *chr, | |
| 21 | + enum pl011_type type); | |
| 22 | + | |
| 23 | +/* pl022.c */ | |
| 24 | +void pl022_init(uint32_t base, qemu_irq irq, int (*xfer_cb)(void *, int), | |
| 25 | + void *opaque); | |
| 26 | + | |
| 27 | +/* pl050.c */ | |
| 28 | +void pl050_init(uint32_t base, qemu_irq irq, int is_mouse); | |
| 29 | + | |
| 30 | +/* pl061.c */ | |
| 31 | +qemu_irq *pl061_init(uint32_t base, qemu_irq irq, qemu_irq **out); | |
| 32 | + | |
| 33 | +/* pl080.c */ | |
| 34 | +void *pl080_init(uint32_t base, qemu_irq irq, int nchannels); | |
| 35 | + | |
| 36 | +/* pl181.c */ | |
| 37 | +void pl181_init(uint32_t base, BlockDriverState *bd, | |
| 38 | + qemu_irq irq0, qemu_irq irq1); | |
| 39 | + | |
| 40 | +/* pl190.c */ | |
| 41 | +qemu_irq *pl190_init(uint32_t base, qemu_irq irq, qemu_irq fiq); | |
| 42 | + | |
| 43 | +/* realview_gic.c */ | |
| 44 | +qemu_irq *realview_gic_init(uint32_t base, qemu_irq parent_irq); | |
| 45 | + | |
| 46 | +/* mpcore.c */ | |
| 47 | +extern qemu_irq *mpcore_irq_init(qemu_irq *cpu_irq); | |
| 48 | + | |
| 49 | +/* arm-timer.c */ | |
| 50 | +void sp804_init(uint32_t base, qemu_irq irq); | |
| 51 | +void icp_pit_init(uint32_t base, qemu_irq *pic, int irq); | |
| 52 | + | |
| 53 | +/* arm_sysctl.c */ | |
| 54 | +void arm_sysctl_init(uint32_t base, uint32_t sys_id); | |
| 55 | + | |
| 56 | +/* versatile_pci.c */ | |
| 57 | +PCIBus *pci_vpb_init(qemu_irq *pic, int irq, int realview); | |
| 58 | + | |
| 59 | +#endif | ... | ... |
hw/ps2.c
hw/ps2.h
0 โ 100644
| 1 | +/* ps2.c */ | |
| 2 | +void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg); | |
| 3 | +void *ps2_mouse_init(void (*update_irq)(void *, int), void *update_arg); | |
| 4 | +void ps2_write_mouse(void *, int val); | |
| 5 | +void ps2_write_keyboard(void *, int val); | |
| 6 | +uint32_t ps2_read_data(void *); | |
| 7 | +void ps2_queue(void *, int b); | |
| 8 | +void ps2_keyboard_set_translation(void *opaque, int mode); | |
| 9 | +void ps2_mouse_fake_event(void *opaque); | |
| 10 | + | ... | ... |
hw/ptimer.c
hw/pxa.h
| ... | ... | @@ -95,7 +95,7 @@ void pxa2xx_lcdc_oritentation(void *opaque, int angle); |
| 95 | 95 | /* pxa2xx_mmci.c */ |
| 96 | 96 | struct pxa2xx_mmci_s; |
| 97 | 97 | struct pxa2xx_mmci_s *pxa2xx_mmci_init(target_phys_addr_t base, |
| 98 | - qemu_irq irq, void *dma); | |
| 98 | + BlockDriverState *bd, qemu_irq irq, void *dma); | |
| 99 | 99 | void pxa2xx_mmci_handlers(struct pxa2xx_mmci_s *s, qemu_irq readonly, |
| 100 | 100 | qemu_irq coverswitch); |
| 101 | 101 | |
| ... | ... | @@ -207,4 +207,8 @@ struct pxa2xx_state_s *pxa270_init(unsigned int sdram_size, DisplayState *ds, |
| 207 | 207 | const char *revision); |
| 208 | 208 | struct pxa2xx_state_s *pxa255_init(unsigned int sdram_size, DisplayState *ds); |
| 209 | 209 | |
| 210 | +/* usb-ohci.c */ | |
| 211 | +void usb_ohci_init_pxa(target_phys_addr_t base, int num_ports, int devfn, | |
| 212 | + qemu_irq irq); | |
| 213 | + | |
| 210 | 214 | #endif /* PXA_H */ | ... | ... |
hw/pxa2xx.c
| ... | ... | @@ -7,7 +7,13 @@ |
| 7 | 7 | * This code is licenced under the GPL. |
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | -# include "vl.h" | |
| 10 | +#include "hw.h" | |
| 11 | +#include "pxa.h" | |
| 12 | +#include "sysemu.h" | |
| 13 | +#include "pc.h" | |
| 14 | +#include "i2c.h" | |
| 15 | +#include "qemu-timer.h" | |
| 16 | +#include "qemu-char.h" | |
| 11 | 17 | |
| 12 | 18 | static struct { |
| 13 | 19 | target_phys_addr_t io_base; |
| ... | ... | @@ -2064,7 +2070,8 @@ struct pxa2xx_state_s *pxa270_init(unsigned int sdram_size, |
| 2064 | 2070 | |
| 2065 | 2071 | s->gpio = pxa2xx_gpio_init(0x40e00000, s->env, s->pic, 121); |
| 2066 | 2072 | |
| 2067 | - s->mmc = pxa2xx_mmci_init(0x41100000, s->pic[PXA2XX_PIC_MMC], s->dma); | |
| 2073 | + s->mmc = pxa2xx_mmci_init(0x41100000, sd_bdrv, s->pic[PXA2XX_PIC_MMC], | |
| 2074 | + s->dma); | |
| 2068 | 2075 | |
| 2069 | 2076 | for (i = 0; pxa270_serial[i].io_base; i ++) |
| 2070 | 2077 | if (serial_hds[i]) |
| ... | ... | @@ -2180,7 +2187,8 @@ struct pxa2xx_state_s *pxa255_init(unsigned int sdram_size, |
| 2180 | 2187 | |
| 2181 | 2188 | s->gpio = pxa2xx_gpio_init(0x40e00000, s->env, s->pic, 85); |
| 2182 | 2189 | |
| 2183 | - s->mmc = pxa2xx_mmci_init(0x41100000, s->pic[PXA2XX_PIC_MMC], s->dma); | |
| 2190 | + s->mmc = pxa2xx_mmci_init(0x41100000, sd_bdrv, s->pic[PXA2XX_PIC_MMC], | |
| 2191 | + s->dma); | |
| 2184 | 2192 | |
| 2185 | 2193 | for (i = 0; pxa255_serial[i].io_base; i ++) |
| 2186 | 2194 | if (serial_hds[i]) | ... | ... |
hw/pxa2xx_dma.c
hw/pxa2xx_gpio.c
hw/pxa2xx_lcd.c
| ... | ... | @@ -7,8 +7,12 @@ |
| 7 | 7 | * This code is licensed under the GPLv2. |
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | -#include "vl.h" | |
| 10 | +#include "hw.h" | |
| 11 | +#include "console.h" | |
| 12 | +#include "pxa.h" | |
| 11 | 13 | #include "pixel_ops.h" |
| 14 | +/* FIXME: For graphic_rotate. Should probably be done in common code. */ | |
| 15 | +#include "sysemu.h" | |
| 12 | 16 | |
| 13 | 17 | typedef void (*drawfn)(uint32_t *, uint8_t *, const uint8_t *, int, int); |
| 14 | 18 | ... | ... |
hw/pxa2xx_mmci.c
| ... | ... | @@ -7,7 +7,8 @@ |
| 7 | 7 | * This code is licensed under the GPLv2. |
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | -#include "vl.h" | |
| 10 | +#include "hw.h" | |
| 11 | +#include "pxa.h" | |
| 11 | 12 | #include "sd.h" |
| 12 | 13 | |
| 13 | 14 | struct pxa2xx_mmci_s { |
| ... | ... | @@ -522,7 +523,7 @@ static int pxa2xx_mmci_load(QEMUFile *f, void *opaque, int version_id) |
| 522 | 523 | } |
| 523 | 524 | |
| 524 | 525 | struct pxa2xx_mmci_s *pxa2xx_mmci_init(target_phys_addr_t base, |
| 525 | - qemu_irq irq, void *dma) | |
| 526 | + BlockDriverState *bd, qemu_irq irq, void *dma) | |
| 526 | 527 | { |
| 527 | 528 | int iomemtype; |
| 528 | 529 | struct pxa2xx_mmci_s *s; |
| ... | ... | @@ -537,7 +538,7 @@ struct pxa2xx_mmci_s *pxa2xx_mmci_init(target_phys_addr_t base, |
| 537 | 538 | cpu_register_physical_memory(base, 0x00100000, iomemtype); |
| 538 | 539 | |
| 539 | 540 | /* Instantiate the actual storage */ |
| 540 | - s->card = sd_init(sd_bdrv); | |
| 541 | + s->card = sd_init(bd); | |
| 541 | 542 | |
| 542 | 543 | register_savevm("pxa2xx_mmci", 0, 0, |
| 543 | 544 | pxa2xx_mmci_save, pxa2xx_mmci_load, s); | ... | ... |
hw/pxa2xx_pcmcia.c
hw/pxa2xx_pic.c
hw/pxa2xx_timer.c
hw/r2d.c
hw/realview.c
| ... | ... | @@ -7,8 +7,14 @@ |
| 7 | 7 | * This code is licenced under the GPL. |
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | -#include "vl.h" | |
| 11 | -#include "arm_pic.h" | |
| 10 | +#include "hw.h" | |
| 11 | +#include "arm-misc.h" | |
| 12 | +#include "primecell.h" | |
| 13 | +#include "devices.h" | |
| 14 | +#include "pci.h" | |
| 15 | +#include "net.h" | |
| 16 | +#include "sysemu.h" | |
| 17 | +#include "boards.h" | |
| 12 | 18 | |
| 13 | 19 | /* Board init. */ |
| 14 | 20 | ... | ... |
hw/realview_gic.c
hw/rtl8139.c
hw/sb16.c
| ... | ... | @@ -21,7 +21,11 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "audiodev.h" | |
| 26 | +#include "audio/audio.h" | |
| 27 | +#include "isa.h" | |
| 28 | +#include "qemu-timer.h" | |
| 25 | 29 | |
| 26 | 30 | #define LENOFA(a) ((int) (sizeof(a)/sizeof(a[0]))) |
| 27 | 31 | ... | ... |
hw/scsi-disk.c
| ... | ... | @@ -25,7 +25,9 @@ do { printf("scsi-disk: " fmt , ##args); } while (0) |
| 25 | 25 | #define BADF(fmt, args...) \ |
| 26 | 26 | do { fprintf(stderr, "scsi-disk: " fmt , ##args); } while (0) |
| 27 | 27 | |
| 28 | -#include "vl.h" | |
| 28 | +#include "qemu-common.h" | |
| 29 | +#include "block.h" | |
| 30 | +#include "scsi-disk.h" | |
| 29 | 31 | |
| 30 | 32 | #define SENSE_NO_SENSE 0 |
| 31 | 33 | #define SENSE_NOT_READY 2 | ... | ... |
hw/scsi-disk.h
0 โ 100644
| 1 | +#ifndef SCSI_DISK_H | |
| 2 | +#define SCSI_DISK_H | |
| 3 | + | |
| 4 | +/* scsi-disk.c */ | |
| 5 | +enum scsi_reason { | |
| 6 | + SCSI_REASON_DONE, /* Command complete. */ | |
| 7 | + SCSI_REASON_DATA /* Transfer complete, more data required. */ | |
| 8 | +}; | |
| 9 | + | |
| 10 | +typedef struct SCSIDevice SCSIDevice; | |
| 11 | +typedef void (*scsi_completionfn)(void *opaque, int reason, uint32_t tag, | |
| 12 | + uint32_t arg); | |
| 13 | + | |
| 14 | +SCSIDevice *scsi_disk_init(BlockDriverState *bdrv, | |
| 15 | + int tcq, | |
| 16 | + scsi_completionfn completion, | |
| 17 | + void *opaque); | |
| 18 | +void scsi_disk_destroy(SCSIDevice *s); | |
| 19 | + | |
| 20 | +int32_t scsi_send_command(SCSIDevice *s, uint32_t tag, uint8_t *buf, int lun); | |
| 21 | +/* SCSI data transfers are asynchrnonous. However, unlike the block IO | |
| 22 | + layer the completion routine may be called directly by | |
| 23 | + scsi_{read,write}_data. */ | |
| 24 | +void scsi_read_data(SCSIDevice *s, uint32_t tag); | |
| 25 | +int scsi_write_data(SCSIDevice *s, uint32_t tag); | |
| 26 | +void scsi_cancel_io(SCSIDevice *s, uint32_t tag); | |
| 27 | +uint8_t *scsi_get_buf(SCSIDevice *s, uint32_t tag); | |
| 28 | + | |
| 29 | +/* cdrom.c */ | |
| 30 | +int cdrom_read_toc(int nb_sectors, uint8_t *buf, int msf, int start_track); | |
| 31 | +int cdrom_read_toc_raw(int nb_sectors, uint8_t *buf, int msf, int session_num); | |
| 32 | + | |
| 33 | +#endif | ... | ... |
hw/sd.c
hw/sd.h
hw/serial.c
hw/sh.h
0 โ 100644
| 1 | +#ifndef QEMU_SH_H | |
| 2 | +#define QEMU_SH_H | |
| 3 | +/* Definitions for SH board emulation. */ | |
| 4 | + | |
| 5 | +/* sh7750.c */ | |
| 6 | +struct SH7750State; | |
| 7 | + | |
| 8 | +struct SH7750State *sh7750_init(CPUState * cpu); | |
| 9 | + | |
| 10 | +typedef struct { | |
| 11 | + /* The callback will be triggered if any of the designated lines change */ | |
| 12 | + uint16_t portamask_trigger; | |
| 13 | + uint16_t portbmask_trigger; | |
| 14 | + /* Return 0 if no action was taken */ | |
| 15 | + int (*port_change_cb) (uint16_t porta, uint16_t portb, | |
| 16 | + uint16_t * periph_pdtra, | |
| 17 | + uint16_t * periph_portdira, | |
| 18 | + uint16_t * periph_pdtrb, | |
| 19 | + uint16_t * periph_portdirb); | |
| 20 | +} sh7750_io_device; | |
| 21 | + | |
| 22 | +int sh7750_register_io_device(struct SH7750State *s, | |
| 23 | + sh7750_io_device * device); | |
| 24 | +/* sh_timer.c */ | |
| 25 | +#define TMU012_FEAT_TOCR (1 << 0) | |
| 26 | +#define TMU012_FEAT_3CHAN (1 << 1) | |
| 27 | +#define TMU012_FEAT_EXTCLK (1 << 2) | |
| 28 | +void tmu012_init(uint32_t base, int feat, uint32_t freq); | |
| 29 | + | |
| 30 | +/* sh_serial.c */ | |
| 31 | +#define SH_SERIAL_FEAT_SCIF (1 << 0) | |
| 32 | +void sh_serial_init (target_phys_addr_t base, int feat, | |
| 33 | + uint32_t freq, CharDriverState *chr); | |
| 34 | + | |
| 35 | +/* tc58128.c */ | |
| 36 | +int tc58128_init(struct SH7750State *s, char *zone1, char *zone2); | |
| 37 | + | |
| 38 | +#endif | ... | ... |
hw/sh7750.c
hw/sh7750_regnames.c
hw/sh_intc.c
hw/sh_serial.c
hw/sh_timer.c
hw/shix.c
hw/slavio_intctl.c
| ... | ... | @@ -21,7 +21,10 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "sun4m.h" | |
| 26 | +#include "console.h" | |
| 27 | + | |
| 25 | 28 | //#define DEBUG_IRQ_COUNT |
| 26 | 29 | //#define DEBUG_IRQ |
| 27 | 30 | ... | ... |
hw/slavio_misc.c
hw/slavio_serial.c
| ... | ... | @@ -21,7 +21,11 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "sun4m.h" | |
| 26 | +#include "qemu-char.h" | |
| 27 | +#include "console.h" | |
| 28 | + | |
| 25 | 29 | /* debug serial */ |
| 26 | 30 | //#define DEBUG_SERIAL |
| 27 | 31 | ... | ... |
hw/slavio_timer.c
hw/smbus.c
| ... | ... | @@ -9,7 +9,9 @@ |
| 9 | 9 | |
| 10 | 10 | /* TODO: Implement PEC. */ |
| 11 | 11 | |
| 12 | -#include "vl.h" | |
| 12 | +#include "hw.h" | |
| 13 | +#include "i2c.h" | |
| 14 | +#include "smbus.h" | |
| 13 | 15 | |
| 14 | 16 | //#define DEBUG_SMBUS 1 |
| 15 | 17 | |
| ... | ... | @@ -194,7 +196,7 @@ SMBusDevice *smbus_device_init(i2c_bus *bus, int address, int size) |
| 194 | 196 | SMBusDevice *dev; |
| 195 | 197 | |
| 196 | 198 | if (size < sizeof(SMBusDevice)) |
| 197 | - cpu_abort(cpu_single_env, "SMBus struct too small"); | |
| 199 | + hw_error("SMBus struct too small"); | |
| 198 | 200 | |
| 199 | 201 | dev = (SMBusDevice *)i2c_slave_init(bus, address, size); |
| 200 | 202 | dev->i2c.event = smbus_i2c_event; | ... | ... |
hw/smbus.h
hw/smbus_eeprom.c
hw/smc91c111.c
hw/sparc32_dma.c
hw/sparc32_dma.h
0 โ 100644
| 1 | +#ifndef SPARC32_DMA_H | |
| 2 | +#define SPARC32_DMA_H | |
| 3 | + | |
| 4 | +/* sparc32_dma.c */ | |
| 5 | +void *sparc32_dma_init(target_phys_addr_t daddr, qemu_irq parent_irq, | |
| 6 | + void *iommu, qemu_irq **dev_irq, qemu_irq **reset); | |
| 7 | +void ledma_memory_read(void *opaque, target_phys_addr_t addr, | |
| 8 | + uint8_t *buf, int len, int do_bswap); | |
| 9 | +void ledma_memory_write(void *opaque, target_phys_addr_t addr, | |
| 10 | + uint8_t *buf, int len, int do_bswap); | |
| 11 | +void espdma_memory_read(void *opaque, uint8_t *buf, int len); | |
| 12 | +void espdma_memory_write(void *opaque, uint8_t *buf, int len); | |
| 13 | + | |
| 14 | +#endif | ... | ... |
hw/spitz.c
| ... | ... | @@ -7,7 +7,19 @@ |
| 7 | 7 | * This code is licensed under the GNU GPL v2. |
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | -#include "vl.h" | |
| 10 | +#include "hw.h" | |
| 11 | +#include "pxa.h" | |
| 12 | +#include "arm-misc.h" | |
| 13 | +#include "sysemu.h" | |
| 14 | +#include "pcmcia.h" | |
| 15 | +#include "i2c.h" | |
| 16 | +#include "flash.h" | |
| 17 | +#include "qemu-timer.h" | |
| 18 | +#include "devices.h" | |
| 19 | +#include "console.h" | |
| 20 | +#include "block.h" | |
| 21 | +#include "audio/audio.h" | |
| 22 | +#include "boards.h" | |
| 11 | 23 | |
| 12 | 24 | #define spitz_printf(format, ...) \ |
| 13 | 25 | fprintf(stderr, "%s: " format, __FUNCTION__, ##__VA_ARGS__) | ... | ... |
hw/ssd0303.c
| ... | ... | @@ -10,7 +10,9 @@ |
| 10 | 10 | /* The controller can support a variety of different displays, but we only |
| 11 | 11 | implement one. Most of the commends relating to brightness and geometry |
| 12 | 12 | setup are ignored. */ |
| 13 | -#include "vl.h" | |
| 13 | +#include "hw.h" | |
| 14 | +#include "i2c.h" | |
| 15 | +#include "console.h" | |
| 14 | 16 | |
| 15 | 17 | //#define DEBUG_SSD0303 1 |
| 16 | 18 | ... | ... |
hw/ssd0323.c
| ... | ... | @@ -10,7 +10,9 @@ |
| 10 | 10 | /* The controller can support a variety of different displays, but we only |
| 11 | 11 | implement one. Most of the commends relating to brightness and geometry |
| 12 | 12 | setup are ignored. */ |
| 13 | -#include "vl.h" | |
| 13 | +#include "hw.h" | |
| 14 | +#include "devices.h" | |
| 15 | +#include "console.h" | |
| 14 | 16 | |
| 15 | 17 | //#define DEBUG_SSD0323 1 |
| 16 | 18 | ... | ... |
hw/stellaris.c
| ... | ... | @@ -7,8 +7,14 @@ |
| 7 | 7 | * This code is licenced under the GPL. |
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | -#include "vl.h" | |
| 11 | -#include "arm_pic.h" | |
| 10 | +#include "hw.h" | |
| 11 | +#include "arm-misc.h" | |
| 12 | +#include "primecell.h" | |
| 13 | +#include "devices.h" | |
| 14 | +#include "qemu-timer.h" | |
| 15 | +#include "i2c.h" | |
| 16 | +#include "sysemu.h" | |
| 17 | +#include "boards.h" | |
| 12 | 18 | |
| 13 | 19 | typedef const struct { |
| 14 | 20 | const char *name; | ... | ... |
hw/sun4m.c
| ... | ... | @@ -21,8 +21,15 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 25 | -#include "m48t59.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "qemu-timer.h" | |
| 26 | +#include "sun4m.h" | |
| 27 | +#include "nvram.h" | |
| 28 | +#include "sparc32_dma.h" | |
| 29 | +#include "fdc.h" | |
| 30 | +#include "sysemu.h" | |
| 31 | +#include "net.h" | |
| 32 | +#include "boards.h" | |
| 26 | 33 | #include "firmware_abi.h" |
| 27 | 34 | |
| 28 | 35 | //#define DEBUG_IRQ | ... | ... |
hw/sun4m.h
0 โ 100644
| 1 | +#ifndef SUN4M_H | |
| 2 | +#define SUN4M_H | |
| 3 | + | |
| 4 | +/* Devices used by sparc32 system. */ | |
| 5 | + | |
| 6 | +/* iommu.c */ | |
| 7 | +void *iommu_init(target_phys_addr_t addr, uint32_t version); | |
| 8 | +void sparc_iommu_memory_rw(void *opaque, target_phys_addr_t addr, | |
| 9 | + uint8_t *buf, int len, int is_write); | |
| 10 | +static inline void sparc_iommu_memory_read(void *opaque, | |
| 11 | + target_phys_addr_t addr, | |
| 12 | + uint8_t *buf, int len) | |
| 13 | +{ | |
| 14 | + sparc_iommu_memory_rw(opaque, addr, buf, len, 0); | |
| 15 | +} | |
| 16 | + | |
| 17 | +static inline void sparc_iommu_memory_write(void *opaque, | |
| 18 | + target_phys_addr_t addr, | |
| 19 | + uint8_t *buf, int len) | |
| 20 | +{ | |
| 21 | + sparc_iommu_memory_rw(opaque, addr, buf, len, 1); | |
| 22 | +} | |
| 23 | + | |
| 24 | +/* tcx.c */ | |
| 25 | +void tcx_init(DisplayState *ds, target_phys_addr_t addr, uint8_t *vram_base, | |
| 26 | + unsigned long vram_offset, int vram_size, int width, int height, | |
| 27 | + int depth); | |
| 28 | + | |
| 29 | +/* slavio_intctl.c */ | |
| 30 | +void *slavio_intctl_init(target_phys_addr_t addr, target_phys_addr_t addrg, | |
| 31 | + const uint32_t *intbit_to_level, | |
| 32 | + qemu_irq **irq, qemu_irq **cpu_irq, | |
| 33 | + qemu_irq **parent_irq, unsigned int cputimer); | |
| 34 | +void slavio_pic_info(void *opaque); | |
| 35 | +void slavio_irq_info(void *opaque); | |
| 36 | + | |
| 37 | +/* slavio_timer.c */ | |
| 38 | +void slavio_timer_init_all(target_phys_addr_t base, qemu_irq master_irq, | |
| 39 | + qemu_irq *cpu_irqs); | |
| 40 | + | |
| 41 | +/* slavio_serial.c */ | |
| 42 | +SerialState *slavio_serial_init(target_phys_addr_t base, qemu_irq irq, | |
| 43 | + CharDriverState *chr1, CharDriverState *chr2); | |
| 44 | +void slavio_serial_ms_kbd_init(target_phys_addr_t base, qemu_irq irq); | |
| 45 | + | |
| 46 | +/* slavio_misc.c */ | |
| 47 | +void *slavio_misc_init(target_phys_addr_t base, target_phys_addr_t power_base, | |
| 48 | + qemu_irq irq); | |
| 49 | +void slavio_set_power_fail(void *opaque, int power_failing); | |
| 50 | + | |
| 51 | +/* esp.c */ | |
| 52 | +void esp_scsi_attach(void *opaque, BlockDriverState *bd, int id); | |
| 53 | +void *esp_init(BlockDriverState **bd, target_phys_addr_t espaddr, | |
| 54 | + void *dma_opaque, qemu_irq irq, qemu_irq *reset); | |
| 55 | + | |
| 56 | +/* cs4231.c */ | |
| 57 | +void cs_init(target_phys_addr_t base, int irq, void *intctl); | |
| 58 | + | |
| 59 | +/* sparc32_dma.c */ | |
| 60 | +void *sparc32_dma_init(target_phys_addr_t daddr, qemu_irq parent_irq, | |
| 61 | + void *iommu, qemu_irq **dev_irq, qemu_irq **reset); | |
| 62 | +void ledma_memory_read(void *opaque, target_phys_addr_t addr, | |
| 63 | + uint8_t *buf, int len, int do_bswap); | |
| 64 | +void ledma_memory_write(void *opaque, target_phys_addr_t addr, | |
| 65 | + uint8_t *buf, int len, int do_bswap); | |
| 66 | +void espdma_memory_read(void *opaque, uint8_t *buf, int len); | |
| 67 | +void espdma_memory_write(void *opaque, uint8_t *buf, int len); | |
| 68 | + | |
| 69 | +/* pcnet.c */ | |
| 70 | +void lance_init(NICInfo *nd, target_phys_addr_t leaddr, void *dma_opaque, | |
| 71 | + qemu_irq irq, qemu_irq *reset); | |
| 72 | + | |
| 73 | +#endif | ... | ... |
hw/sun4u.c
| ... | ... | @@ -21,8 +21,15 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 25 | -#include "m48t59.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "pci.h" | |
| 26 | +#include "pc.h" | |
| 27 | +#include "nvram.h" | |
| 28 | +#include "fdc.h" | |
| 29 | +#include "net.h" | |
| 30 | +#include "qemu-timer.h" | |
| 31 | +#include "sysemu.h" | |
| 32 | +#include "boards.h" | |
| 26 | 33 | #include "firmware_abi.h" |
| 27 | 34 | |
| 28 | 35 | #define KERNEL_LOAD_ADDR 0x00404000 | ... | ... |
hw/tc58128.c
hw/tcx.c
hw/tsc210x.c
| ... | ... | @@ -19,7 +19,11 @@ |
| 19 | 19 | * MA 02111-1307 USA |
| 20 | 20 | */ |
| 21 | 21 | |
| 22 | -#include "vl.h" | |
| 22 | +#include "hw.h" | |
| 23 | +#include "audio/audio.h" | |
| 24 | +#include "qemu-timer.h" | |
| 25 | +#include "console.h" | |
| 26 | +#include "omap.h" | |
| 23 | 27 | |
| 24 | 28 | #define TSC_DATA_REGISTERS_PAGE 0x0 |
| 25 | 29 | #define TSC_CONTROL_REGISTERS_PAGE 0x1 | ... | ... |
hw/unin_pci.c
| ... | ... | @@ -21,7 +21,10 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "ppc_mac.h" | |
| 26 | +#include "pci.h" | |
| 27 | + | |
| 25 | 28 | typedef target_phys_addr_t pci_addr_t; |
| 26 | 29 | #include "pci_host.h" |
| 27 | 30 | ... | ... |
hw/usb-hid.c
| ... | ... | @@ -22,7 +22,9 @@ |
| 22 | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | 23 | * THE SOFTWARE. |
| 24 | 24 | */ |
| 25 | -#include "vl.h" | |
| 25 | +#include "hw.h" | |
| 26 | +#include "console.h" | |
| 27 | +#include "usb.h" | |
| 26 | 28 | |
| 27 | 29 | /* HID interface requests */ |
| 28 | 30 | #define GET_REPORT 0xa101 | ... | ... |
hw/usb-hub.c
hw/usb-msd.c
hw/usb-ohci.c
hw/usb-uhci.c
| ... | ... | @@ -21,7 +21,10 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "usb.h" | |
| 26 | +#include "pci.h" | |
| 27 | +#include "qemu-timer.h" | |
| 25 | 28 | |
| 26 | 29 | //#define DEBUG |
| 27 | 30 | //#define DEBUG_PACKET | ... | ... |
hw/usb-wacom.c
| ... | ... | @@ -25,7 +25,9 @@ |
| 25 | 25 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 26 | 26 | * THE SOFTWARE. |
| 27 | 27 | */ |
| 28 | -#include "vl.h" | |
| 28 | +#include "hw.h" | |
| 29 | +#include "console.h" | |
| 30 | +#include "usb.h" | |
| 29 | 31 | |
| 30 | 32 | /* Interface requests */ |
| 31 | 33 | #define WACOM_GET_REPORT 0x2101 | ... | ... |
hw/usb.c
hw/usb.h
| ... | ... | @@ -202,15 +202,6 @@ void usb_packet_complete(USBPacket *p); |
| 202 | 202 | /* usb hub */ |
| 203 | 203 | USBDevice *usb_hub_init(int nb_ports); |
| 204 | 204 | |
| 205 | -/* usb-uhci.c */ | |
| 206 | -void usb_uhci_piix3_init(PCIBus *bus, int devfn); | |
| 207 | -void usb_uhci_piix4_init(PCIBus *bus, int devfn); | |
| 208 | - | |
| 209 | -/* usb-ohci.c */ | |
| 210 | -void usb_ohci_init_pci(struct PCIBus *bus, int num_ports, int devfn); | |
| 211 | -void usb_ohci_init_pxa(target_phys_addr_t base, int num_ports, int devfn, | |
| 212 | - qemu_irq irq); | |
| 213 | - | |
| 214 | 205 | /* usb-linux.c */ |
| 215 | 206 | USBDevice *usb_host_device_open(const char *devname); |
| 216 | 207 | void usb_host_info(void); |
| ... | ... | @@ -225,3 +216,11 @@ USBDevice *usb_msd_init(const char *filename); |
| 225 | 216 | |
| 226 | 217 | /* usb-wacom.c */ |
| 227 | 218 | USBDevice *usb_wacom_init(void); |
| 219 | + | |
| 220 | +/* usb ports of the VM */ | |
| 221 | + | |
| 222 | +void qemu_register_usb_port(USBPort *port, void *opaque, int index, | |
| 223 | + usb_attachfn attach); | |
| 224 | + | |
| 225 | +#define VM_USB_HUB_SIZE 8 | |
| 226 | + | ... | ... |
hw/versatile_pci.c
hw/versatilepb.c
| ... | ... | @@ -7,8 +7,14 @@ |
| 7 | 7 | * This code is licenced under the GPL. |
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | -#include "vl.h" | |
| 11 | -#include "arm_pic.h" | |
| 10 | +#include "hw.h" | |
| 11 | +#include "arm-misc.h" | |
| 12 | +#include "primecell.h" | |
| 13 | +#include "devices.h" | |
| 14 | +#include "net.h" | |
| 15 | +#include "sysemu.h" | |
| 16 | +#include "pci.h" | |
| 17 | +#include "boards.h" | |
| 12 | 18 | |
| 13 | 19 | /* Primary interrupt controller. */ |
| 14 | 20 | ... | ... |
hw/vga.c
| ... | ... | @@ -21,7 +21,10 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "console.h" | |
| 26 | +#include "pc.h" | |
| 27 | +#include "pci.h" | |
| 25 | 28 | #include "vga_int.h" |
| 26 | 29 | #include "pixel_ops.h" |
| 27 | 30 | ... | ... |
hw/vmmouse.c
| ... | ... | @@ -21,7 +21,10 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "console.h" | |
| 26 | +#include "ps2.h" | |
| 27 | +#include "pc.h" | |
| 25 | 28 | |
| 26 | 29 | /* debug only vmmouse */ |
| 27 | 30 | //#define DEBUG_VMMOUSE | ... | ... |
hw/vmport.c
| ... | ... | @@ -21,8 +21,10 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 25 | -#include "cpu-all.h" | |
| 24 | +#include "hw.h" | |
| 25 | +#include "isa.h" | |
| 26 | +#include "pc.h" | |
| 27 | +#include "sysemu.h" | |
| 26 | 28 | |
| 27 | 29 | #define VMPORT_CMD_GETVERSION 0x0a |
| 28 | 30 | #define VMPORT_CMD_GETRAMSIZE 0x14 | ... | ... |
hw/vmware_vga.c
hw/wm8750.c
loader.c
m68k-semi.c
monitor.c
| ... | ... | @@ -21,7 +21,18 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw/hw.h" | |
| 25 | +#include "hw/usb.h" | |
| 26 | +#include "hw/pcmcia.h" | |
| 27 | +#include "hw/pc.h" | |
| 28 | +#include "hw/pci.h" | |
| 29 | +#include "gdbstub.h" | |
| 30 | +#include "net.h" | |
| 31 | +#include "qemu-char.h" | |
| 32 | +#include "sysemu.h" | |
| 33 | +#include "console.h" | |
| 34 | +#include "block.h" | |
| 35 | +#include "audio/audio.h" | |
| 25 | 36 | #include "disas.h" |
| 26 | 37 | #include <dirent.h> |
| 27 | 38 | ... | ... |
net.h
0 โ 100644
| 1 | +#ifndef QEMU_NET_H | |
| 2 | +#define QEMU_NET_H | |
| 3 | + | |
| 4 | +/* VLANs support */ | |
| 5 | + | |
| 6 | +typedef struct VLANClientState VLANClientState; | |
| 7 | + | |
| 8 | +struct VLANClientState { | |
| 9 | + IOReadHandler *fd_read; | |
| 10 | + /* Packets may still be sent if this returns zero. It's used to | |
| 11 | + rate-limit the slirp code. */ | |
| 12 | + IOCanRWHandler *fd_can_read; | |
| 13 | + void *opaque; | |
| 14 | + struct VLANClientState *next; | |
| 15 | + struct VLANState *vlan; | |
| 16 | + char info_str[256]; | |
| 17 | +}; | |
| 18 | + | |
| 19 | +struct VLANState { | |
| 20 | + int id; | |
| 21 | + VLANClientState *first_client; | |
| 22 | + struct VLANState *next; | |
| 23 | + unsigned int nb_guest_devs, nb_host_devs; | |
| 24 | +}; | |
| 25 | + | |
| 26 | +VLANState *qemu_find_vlan(int id); | |
| 27 | +VLANClientState *qemu_new_vlan_client(VLANState *vlan, | |
| 28 | + IOReadHandler *fd_read, | |
| 29 | + IOCanRWHandler *fd_can_read, | |
| 30 | + void *opaque); | |
| 31 | +int qemu_can_send_packet(VLANClientState *vc); | |
| 32 | +void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size); | |
| 33 | +void qemu_handler_true(void *opaque); | |
| 34 | + | |
| 35 | +void do_info_network(void); | |
| 36 | + | |
| 37 | +/* NIC info */ | |
| 38 | + | |
| 39 | +#define MAX_NICS 8 | |
| 40 | + | |
| 41 | +struct NICInfo { | |
| 42 | + uint8_t macaddr[6]; | |
| 43 | + const char *model; | |
| 44 | + VLANState *vlan; | |
| 45 | +}; | |
| 46 | + | |
| 47 | +extern int nb_nics; | |
| 48 | +extern NICInfo nd_table[MAX_NICS]; | |
| 49 | + | |
| 50 | +#endif | ... | ... |
osdep.c
qemu-char.h
0 โ 100644
| 1 | +#ifndef QEMU_CHAR_H | |
| 2 | +#define QEMU_CHAR_H | |
| 3 | + | |
| 4 | +/* character device */ | |
| 5 | + | |
| 6 | +#define CHR_EVENT_BREAK 0 /* serial break char */ | |
| 7 | +#define CHR_EVENT_FOCUS 1 /* focus to this terminal (modal input needed) */ | |
| 8 | +#define CHR_EVENT_RESET 2 /* new connection established */ | |
| 9 | + | |
| 10 | + | |
| 11 | +#define CHR_IOCTL_SERIAL_SET_PARAMS 1 | |
| 12 | +typedef struct { | |
| 13 | + int speed; | |
| 14 | + int parity; | |
| 15 | + int data_bits; | |
| 16 | + int stop_bits; | |
| 17 | +} QEMUSerialSetParams; | |
| 18 | + | |
| 19 | +#define CHR_IOCTL_SERIAL_SET_BREAK 2 | |
| 20 | + | |
| 21 | +#define CHR_IOCTL_PP_READ_DATA 3 | |
| 22 | +#define CHR_IOCTL_PP_WRITE_DATA 4 | |
| 23 | +#define CHR_IOCTL_PP_READ_CONTROL 5 | |
| 24 | +#define CHR_IOCTL_PP_WRITE_CONTROL 6 | |
| 25 | +#define CHR_IOCTL_PP_READ_STATUS 7 | |
| 26 | +#define CHR_IOCTL_PP_EPP_READ_ADDR 8 | |
| 27 | +#define CHR_IOCTL_PP_EPP_READ 9 | |
| 28 | +#define CHR_IOCTL_PP_EPP_WRITE_ADDR 10 | |
| 29 | +#define CHR_IOCTL_PP_EPP_WRITE 11 | |
| 30 | + | |
| 31 | +typedef void IOEventHandler(void *opaque, int event); | |
| 32 | + | |
| 33 | +struct CharDriverState { | |
| 34 | + int (*chr_write)(struct CharDriverState *s, const uint8_t *buf, int len); | |
| 35 | + void (*chr_update_read_handler)(struct CharDriverState *s); | |
| 36 | + int (*chr_ioctl)(struct CharDriverState *s, int cmd, void *arg); | |
| 37 | + IOEventHandler *chr_event; | |
| 38 | + IOCanRWHandler *chr_can_read; | |
| 39 | + IOReadHandler *chr_read; | |
| 40 | + void *handler_opaque; | |
| 41 | + void (*chr_send_event)(struct CharDriverState *chr, int event); | |
| 42 | + void (*chr_close)(struct CharDriverState *chr); | |
| 43 | + void *opaque; | |
| 44 | + int focus; | |
| 45 | + QEMUBH *bh; | |
| 46 | +}; | |
| 47 | + | |
| 48 | +CharDriverState *qemu_chr_open(const char *filename); | |
| 49 | +void qemu_chr_printf(CharDriverState *s, const char *fmt, ...); | |
| 50 | +int qemu_chr_write(CharDriverState *s, const uint8_t *buf, int len); | |
| 51 | +void qemu_chr_send_event(CharDriverState *s, int event); | |
| 52 | +void qemu_chr_add_handlers(CharDriverState *s, | |
| 53 | + IOCanRWHandler *fd_can_read, | |
| 54 | + IOReadHandler *fd_read, | |
| 55 | + IOEventHandler *fd_event, | |
| 56 | + void *opaque); | |
| 57 | +int qemu_chr_ioctl(CharDriverState *s, int cmd, void *arg); | |
| 58 | +void qemu_chr_reset(CharDriverState *s); | |
| 59 | +int qemu_chr_can_read(CharDriverState *s); | |
| 60 | +void qemu_chr_read(CharDriverState *s, uint8_t *buf, int len); | |
| 61 | + | |
| 62 | +/* async I/O support */ | |
| 63 | + | |
| 64 | +int qemu_set_fd_handler2(int fd, | |
| 65 | + IOCanRWHandler *fd_read_poll, | |
| 66 | + IOHandler *fd_read, | |
| 67 | + IOHandler *fd_write, | |
| 68 | + void *opaque); | |
| 69 | +int qemu_set_fd_handler(int fd, | |
| 70 | + IOHandler *fd_read, | |
| 71 | + IOHandler *fd_write, | |
| 72 | + void *opaque); | |
| 73 | + | |
| 74 | +#endif | ... | ... |
qemu-common.h
| ... | ... | @@ -62,6 +62,37 @@ static inline char *realpath(const char *path, char *resolved_path) |
| 62 | 62 | |
| 63 | 63 | #endif /* !defined(NEED_CPU_H) */ |
| 64 | 64 | |
| 65 | +#ifndef glue | |
| 66 | +#define xglue(x, y) x ## y | |
| 67 | +#define glue(x, y) xglue(x, y) | |
| 68 | +#define stringify(s) tostring(s) | |
| 69 | +#define tostring(s) #s | |
| 70 | +#endif | |
| 71 | + | |
| 72 | +#ifndef likely | |
| 73 | +#if __GNUC__ < 3 | |
| 74 | +#define __builtin_expect(x, n) (x) | |
| 75 | +#endif | |
| 76 | + | |
| 77 | +#define likely(x) __builtin_expect(!!(x), 1) | |
| 78 | +#define unlikely(x) __builtin_expect(!!(x), 0) | |
| 79 | +#endif | |
| 80 | + | |
| 81 | +#ifndef MIN | |
| 82 | +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) | |
| 83 | +#endif | |
| 84 | +#ifndef MAX | |
| 85 | +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) | |
| 86 | +#endif | |
| 87 | + | |
| 88 | +#ifndef always_inline | |
| 89 | +#if (__GNUC__ < 3) || defined(__APPLE__) | |
| 90 | +#define always_inline inline | |
| 91 | +#else | |
| 92 | +#define always_inline __attribute__ (( always_inline )) inline | |
| 93 | +#endif | |
| 94 | +#endif | |
| 95 | + | |
| 65 | 96 | /* bottom halves */ |
| 66 | 97 | typedef struct QEMUBH QEMUBH; |
| 67 | 98 | |
| ... | ... | @@ -73,6 +104,8 @@ void qemu_bh_cancel(QEMUBH *bh); |
| 73 | 104 | void qemu_bh_delete(QEMUBH *bh); |
| 74 | 105 | int qemu_bh_poll(void); |
| 75 | 106 | |
| 107 | +uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c); | |
| 108 | + | |
| 76 | 109 | /* cutils.c */ |
| 77 | 110 | void pstrcpy(char *buf, int buf_size, const char *str); |
| 78 | 111 | char *pstrcat(char *buf, int buf_size, const char *s); |
| ... | ... | @@ -80,4 +113,42 @@ int strstart(const char *str, const char *val, const char **ptr); |
| 80 | 113 | int stristart(const char *str, const char *val, const char **ptr); |
| 81 | 114 | time_t mktimegm(struct tm *tm); |
| 82 | 115 | |
| 116 | +/* Error handling. */ | |
| 117 | + | |
| 118 | +void hw_error(const char *fmt, ...) | |
| 119 | + __attribute__ ((__format__ (__printf__, 1, 2))) | |
| 120 | + __attribute__ ((__noreturn__)); | |
| 121 | + | |
| 122 | +/* IO callbacks. */ | |
| 123 | +typedef void IOReadHandler(void *opaque, const uint8_t *buf, int size); | |
| 124 | +typedef int IOCanRWHandler(void *opaque); | |
| 125 | +typedef void IOHandler(void *opaque); | |
| 126 | + | |
| 127 | +struct ParallelIOArg { | |
| 128 | + void *buffer; | |
| 129 | + int count; | |
| 130 | +}; | |
| 131 | + | |
| 132 | +typedef int (*DMA_transfer_handler) (void *opaque, int nchan, int pos, int size); | |
| 133 | + | |
| 134 | +/* A load of opaque types so that device init declarations don't have to | |
| 135 | + pull in all the real definitions. */ | |
| 136 | +typedef struct NICInfo NICInfo; | |
| 137 | +typedef struct AudioState AudioState; | |
| 138 | +typedef struct BlockDriverState BlockDriverState; | |
| 139 | +typedef struct DisplayState DisplayState; | |
| 140 | +typedef struct TextConsole TextConsole; | |
| 141 | +typedef struct CharDriverState CharDriverState; | |
| 142 | +typedef struct VLANState VLANState; | |
| 143 | +typedef struct QEMUFile QEMUFile; | |
| 144 | +typedef struct i2c_bus i2c_bus; | |
| 145 | +typedef struct i2c_slave i2c_slave; | |
| 146 | +typedef struct SMBusDevice SMBusDevice; | |
| 147 | +typedef struct QEMUTimer QEMUTimer; | |
| 148 | +typedef struct PCIBus PCIBus; | |
| 149 | +typedef struct PCIDevice PCIDevice; | |
| 150 | +typedef struct SerialState SerialState; | |
| 151 | +typedef struct IRQState *qemu_irq; | |
| 152 | +struct pcmcia_card_s; | |
| 153 | + | |
| 83 | 154 | #endif | ... | ... |
qemu-timer.h
0 โ 100644
| 1 | +#ifndef QEMU_TIMER_H | |
| 2 | +#define QEMU_TIMER_H | |
| 3 | + | |
| 4 | +/* timers */ | |
| 5 | + | |
| 6 | +typedef struct QEMUClock QEMUClock; | |
| 7 | +typedef void QEMUTimerCB(void *opaque); | |
| 8 | + | |
| 9 | +/* The real time clock should be used only for stuff which does not | |
| 10 | + change the virtual machine state, as it is run even if the virtual | |
| 11 | + machine is stopped. The real time clock has a frequency of 1000 | |
| 12 | + Hz. */ | |
| 13 | +extern QEMUClock *rt_clock; | |
| 14 | + | |
| 15 | +/* The virtual clock is only run during the emulation. It is stopped | |
| 16 | + when the virtual machine is stopped. Virtual timers use a high | |
| 17 | + precision clock, usually cpu cycles (use ticks_per_sec). */ | |
| 18 | +extern QEMUClock *vm_clock; | |
| 19 | + | |
| 20 | +int64_t qemu_get_clock(QEMUClock *clock); | |
| 21 | + | |
| 22 | +QEMUTimer *qemu_new_timer(QEMUClock *clock, QEMUTimerCB *cb, void *opaque); | |
| 23 | +void qemu_free_timer(QEMUTimer *ts); | |
| 24 | +void qemu_del_timer(QEMUTimer *ts); | |
| 25 | +void qemu_mod_timer(QEMUTimer *ts, int64_t expire_time); | |
| 26 | +int qemu_timer_pending(QEMUTimer *ts); | |
| 27 | + | |
| 28 | +extern int64_t ticks_per_sec; | |
| 29 | + | |
| 30 | +void qemu_get_timer(QEMUFile *f, QEMUTimer *ts); | |
| 31 | +void qemu_put_timer(QEMUFile *f, QEMUTimer *ts); | |
| 32 | + | |
| 33 | +/* ptimer.c */ | |
| 34 | +typedef struct ptimer_state ptimer_state; | |
| 35 | +typedef void (*ptimer_cb)(void *opaque); | |
| 36 | + | |
| 37 | +ptimer_state *ptimer_init(QEMUBH *bh); | |
| 38 | +void ptimer_set_period(ptimer_state *s, int64_t period); | |
| 39 | +void ptimer_set_freq(ptimer_state *s, uint32_t freq); | |
| 40 | +void ptimer_set_limit(ptimer_state *s, uint64_t limit, int reload); | |
| 41 | +uint64_t ptimer_get_count(ptimer_state *s); | |
| 42 | +void ptimer_set_count(ptimer_state *s, uint64_t count); | |
| 43 | +void ptimer_run(ptimer_state *s, int oneshot); | |
| 44 | +void ptimer_stop(ptimer_state *s); | |
| 45 | +void qemu_put_ptimer(QEMUFile *f, ptimer_state *s); | |
| 46 | +void qemu_get_ptimer(QEMUFile *f, ptimer_state *s); | |
| 47 | + | |
| 48 | +#endif | ... | ... |
readline.c
sdl.c
sysemu.h
0 โ 100644
| 1 | +#ifndef SYSEMU_H | |
| 2 | +#define SYSEMU_H | |
| 3 | +/* Misc. things related to the system emulator. */ | |
| 4 | + | |
| 5 | +/* vl.c */ | |
| 6 | +extern const char *bios_name; | |
| 7 | +extern const char *bios_dir; | |
| 8 | + | |
| 9 | +extern int vm_running; | |
| 10 | +extern const char *qemu_name; | |
| 11 | + | |
| 12 | +typedef struct vm_change_state_entry VMChangeStateEntry; | |
| 13 | +typedef void VMChangeStateHandler(void *opaque, int running); | |
| 14 | +typedef void VMStopHandler(void *opaque, int reason); | |
| 15 | + | |
| 16 | +VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler *cb, | |
| 17 | + void *opaque); | |
| 18 | +void qemu_del_vm_change_state_handler(VMChangeStateEntry *e); | |
| 19 | + | |
| 20 | +int qemu_add_vm_stop_handler(VMStopHandler *cb, void *opaque); | |
| 21 | +void qemu_del_vm_stop_handler(VMStopHandler *cb, void *opaque); | |
| 22 | + | |
| 23 | +void vm_start(void); | |
| 24 | +void vm_stop(int reason); | |
| 25 | + | |
| 26 | +int64_t cpu_get_ticks(void); | |
| 27 | +void cpu_enable_ticks(void); | |
| 28 | +void cpu_disable_ticks(void); | |
| 29 | + | |
| 30 | +void qemu_system_reset_request(void); | |
| 31 | +void qemu_system_shutdown_request(void); | |
| 32 | +void qemu_system_powerdown_request(void); | |
| 33 | +#if !defined(TARGET_SPARC) | |
| 34 | +// Please implement a power failure function to signal the OS | |
| 35 | +#define qemu_system_powerdown() do{}while(0) | |
| 36 | +#else | |
| 37 | +void qemu_system_powerdown(void); | |
| 38 | +#endif | |
| 39 | + | |
| 40 | +void cpu_save(QEMUFile *f, void *opaque); | |
| 41 | +int cpu_load(QEMUFile *f, void *opaque, int version_id); | |
| 42 | + | |
| 43 | +void do_savevm(const char *name); | |
| 44 | +void do_loadvm(const char *name); | |
| 45 | +void do_delvm(const char *name); | |
| 46 | +void do_info_snapshots(void); | |
| 47 | + | |
| 48 | +void main_loop_wait(int timeout); | |
| 49 | + | |
| 50 | +/* Polling handling */ | |
| 51 | + | |
| 52 | +/* return TRUE if no sleep should be done afterwards */ | |
| 53 | +typedef int PollingFunc(void *opaque); | |
| 54 | + | |
| 55 | +int qemu_add_polling_cb(PollingFunc *func, void *opaque); | |
| 56 | +void qemu_del_polling_cb(PollingFunc *func, void *opaque); | |
| 57 | + | |
| 58 | +#ifdef _WIN32 | |
| 59 | +/* Wait objects handling */ | |
| 60 | +typedef void WaitObjectFunc(void *opaque); | |
| 61 | + | |
| 62 | +int qemu_add_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque); | |
| 63 | +void qemu_del_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque); | |
| 64 | +#endif | |
| 65 | + | |
| 66 | +/* TAP win32 */ | |
| 67 | +int tap_win32_init(VLANState *vlan, const char *ifname); | |
| 68 | + | |
| 69 | +/* SLIRP */ | |
| 70 | +void do_info_slirp(void); | |
| 71 | + | |
| 72 | +extern int ram_size; | |
| 73 | +extern int bios_size; | |
| 74 | +extern int rtc_utc; | |
| 75 | +extern int rtc_start_date; | |
| 76 | +extern int cirrus_vga_enabled; | |
| 77 | +extern int vmsvga_enabled; | |
| 78 | +extern int graphic_width; | |
| 79 | +extern int graphic_height; | |
| 80 | +extern int graphic_depth; | |
| 81 | +extern const char *keyboard_layout; | |
| 82 | +extern int win2k_install_hack; | |
| 83 | +extern int alt_grab; | |
| 84 | +extern int usb_enabled; | |
| 85 | +extern int smp_cpus; | |
| 86 | +extern int cursor_hide; | |
| 87 | +extern int graphic_rotate; | |
| 88 | +extern int no_quit; | |
| 89 | +extern int semihosting_enabled; | |
| 90 | +extern int autostart; | |
| 91 | +extern int old_param; | |
| 92 | +extern const char *bootp_filename; | |
| 93 | + | |
| 94 | + | |
| 95 | +#ifdef USE_KQEMU | |
| 96 | +extern int kqemu_allowed; | |
| 97 | +#endif | |
| 98 | + | |
| 99 | +#define MAX_OPTION_ROMS 16 | |
| 100 | +extern const char *option_rom[MAX_OPTION_ROMS]; | |
| 101 | +extern int nb_option_roms; | |
| 102 | + | |
| 103 | +#ifdef TARGET_SPARC | |
| 104 | +#define MAX_PROM_ENVS 128 | |
| 105 | +extern const char *prom_envs[MAX_PROM_ENVS]; | |
| 106 | +extern unsigned int nb_prom_envs; | |
| 107 | +#endif | |
| 108 | + | |
| 109 | +/* XXX: make it dynamic */ | |
| 110 | +#define MAX_BIOS_SIZE (4 * 1024 * 1024) | |
| 111 | +#if defined (TARGET_PPC) | |
| 112 | +#define BIOS_SIZE (1024 * 1024) | |
| 113 | +#elif defined (TARGET_SPARC64) | |
| 114 | +#define BIOS_SIZE ((512 + 32) * 1024) | |
| 115 | +#elif defined(TARGET_MIPS) | |
| 116 | +#define BIOS_SIZE (4 * 1024 * 1024) | |
| 117 | +#endif | |
| 118 | + | |
| 119 | +#define MAX_DISKS 4 | |
| 120 | + | |
| 121 | +extern BlockDriverState *bs_table[MAX_DISKS + 1]; | |
| 122 | +extern BlockDriverState *sd_bdrv; | |
| 123 | +extern BlockDriverState *mtd_bdrv; | |
| 124 | + | |
| 125 | +/* NOR flash devices */ | |
| 126 | +#define MAX_PFLASH 4 | |
| 127 | +extern BlockDriverState *pflash_table[MAX_PFLASH]; | |
| 128 | + | |
| 129 | +/* serial ports */ | |
| 130 | + | |
| 131 | +#define MAX_SERIAL_PORTS 4 | |
| 132 | + | |
| 133 | +extern CharDriverState *serial_hds[MAX_SERIAL_PORTS]; | |
| 134 | + | |
| 135 | +/* parallel ports */ | |
| 136 | + | |
| 137 | +#define MAX_PARALLEL_PORTS 3 | |
| 138 | + | |
| 139 | +extern CharDriverState *parallel_hds[MAX_PARALLEL_PORTS]; | |
| 140 | + | |
| 141 | +#ifdef NEED_CPU_H | |
| 142 | +/* loader.c */ | |
| 143 | +int get_image_size(const char *filename); | |
| 144 | +int load_image(const char *filename, uint8_t *addr); | |
| 145 | +int load_elf(const char *filename, int64_t virt_to_phys_addend, | |
| 146 | + uint64_t *pentry, uint64_t *lowaddr, uint64_t *highaddr); | |
| 147 | +int load_aout(const char *filename, uint8_t *addr); | |
| 148 | +int load_uboot(const char *filename, target_ulong *ep, int *is_linux); | |
| 149 | +#endif | |
| 150 | + | |
| 151 | +#ifdef HAS_AUDIO | |
| 152 | +struct soundhw { | |
| 153 | + const char *name; | |
| 154 | + const char *descr; | |
| 155 | + int enabled; | |
| 156 | + int isa; | |
| 157 | + union { | |
| 158 | + int (*init_isa) (AudioState *s, qemu_irq *pic); | |
| 159 | + int (*init_pci) (PCIBus *bus, AudioState *s); | |
| 160 | + } init; | |
| 161 | +}; | |
| 162 | + | |
| 163 | +extern struct soundhw soundhw[]; | |
| 164 | +#endif | |
| 165 | + | |
| 166 | +void do_usb_add(const char *devname); | |
| 167 | +void do_usb_del(const char *devname); | |
| 168 | +void usb_info(void); | |
| 169 | + | |
| 170 | +#endif | ... | ... |
tap-win32.c
| ... | ... | @@ -26,7 +26,9 @@ |
| 26 | 26 | * distribution); if not, write to the Free Software Foundation, Inc., |
| 27 | 27 | * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 28 | 28 | */ |
| 29 | -#include "vl.h" | |
| 29 | +#include "qemu-common.h" | |
| 30 | +#include "net.h" | |
| 31 | +#include "sysemu.h" | |
| 30 | 32 | #include <stdio.h> |
| 31 | 33 | #include <windows.h> |
| 32 | 34 | ... | ... |
target-sparc/helper.c
| ... | ... | @@ -604,3 +604,34 @@ void memcpy32(target_ulong *dst, const target_ulong *src) |
| 604 | 604 | dst[6] = src[6]; |
| 605 | 605 | dst[7] = src[7]; |
| 606 | 606 | } |
| 607 | + | |
| 608 | +#ifdef TARGET_SPARC64 | |
| 609 | +#if !defined(CONFIG_USER_ONLY) | |
| 610 | +#include "qemu-common.h" | |
| 611 | +#include "hw/irq.h" | |
| 612 | +#include "qemu-timer.h" | |
| 613 | +#endif | |
| 614 | + | |
| 615 | +void do_tick_set_count(void *opaque, uint64_t count) | |
| 616 | +{ | |
| 617 | +#if !defined(CONFIG_USER_ONLY) | |
| 618 | + ptimer_set_count(opaque, -count); | |
| 619 | +#endif | |
| 620 | +} | |
| 621 | + | |
| 622 | +uint64_t do_tick_get_count(void *opaque) | |
| 623 | +{ | |
| 624 | +#if !defined(CONFIG_USER_ONLY) | |
| 625 | + return -ptimer_get_count(opaque); | |
| 626 | +#else | |
| 627 | + return 0; | |
| 628 | +#endif | |
| 629 | +} | |
| 630 | + | |
| 631 | +void do_tick_set_limit(void *opaque, uint64_t limit) | |
| 632 | +{ | |
| 633 | +#if !defined(CONFIG_USER_ONLY) | |
| 634 | + ptimer_set_limit(opaque, -limit, 0); | |
| 635 | +#endif | |
| 636 | +} | |
| 637 | +#endif | ... | ... |
target-sparc/op_helper.c
| ... | ... | @@ -1804,27 +1804,3 @@ void do_unassigned_access(target_phys_addr_t addr, int is_write, int is_exec, |
| 1804 | 1804 | } |
| 1805 | 1805 | #endif |
| 1806 | 1806 | |
| 1807 | -#ifdef TARGET_SPARC64 | |
| 1808 | -void do_tick_set_count(void *opaque, uint64_t count) | |
| 1809 | -{ | |
| 1810 | -#if !defined(CONFIG_USER_ONLY) | |
| 1811 | - ptimer_set_count(opaque, -count); | |
| 1812 | -#endif | |
| 1813 | -} | |
| 1814 | - | |
| 1815 | -uint64_t do_tick_get_count(void *opaque) | |
| 1816 | -{ | |
| 1817 | -#if !defined(CONFIG_USER_ONLY) | |
| 1818 | - return -ptimer_get_count(opaque); | |
| 1819 | -#else | |
| 1820 | - return 0; | |
| 1821 | -#endif | |
| 1822 | -} | |
| 1823 | - | |
| 1824 | -void do_tick_set_limit(void *opaque, uint64_t limit) | |
| 1825 | -{ | |
| 1826 | -#if !defined(CONFIG_USER_ONLY) | |
| 1827 | - ptimer_set_limit(opaque, -limit, 0); | |
| 1828 | -#endif | |
| 1829 | -} | |
| 1830 | -#endif | ... | ... |
usb-linux.c
| ... | ... | @@ -21,7 +21,9 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "qemu-common.h" | |
| 25 | +#include "hw/usb.h" | |
| 26 | +#include "console.h" | |
| 25 | 27 | |
| 26 | 28 | #if defined(__linux__) |
| 27 | 29 | #include <dirent.h> | ... | ... |
vl.c
| ... | ... | @@ -21,7 +21,22 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "hw/hw.h" | |
| 25 | +#include "hw/boards.h" | |
| 26 | +#include "hw/usb.h" | |
| 27 | +#include "hw/pcmcia.h" | |
| 28 | +#include "hw/pc.h" | |
| 29 | +#include "hw/fdc.h" | |
| 30 | +#include "hw/audiodev.h" | |
| 31 | +#include "hw/isa.h" | |
| 32 | +#include "net.h" | |
| 33 | +#include "console.h" | |
| 34 | +#include "sysemu.h" | |
| 35 | +#include "gdbstub.h" | |
| 36 | +#include "qemu-timer.h" | |
| 37 | +#include "qemu-char.h" | |
| 38 | +#include "block.h" | |
| 39 | +#include "audio/audio.h" | |
| 25 | 40 | |
| 26 | 41 | #include <unistd.h> |
| 27 | 42 | #include <fcntl.h> | ... | ... |
vl.h deleted
100644 โ 0
| 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 | - | |
| 27 | -#include "qemu-common.h" | |
| 28 | - | |
| 29 | -/* FIXME: Remove this. */ | |
| 30 | -#include "block.h" | |
| 31 | - | |
| 32 | -#ifndef glue | |
| 33 | -#define xglue(x, y) x ## y | |
| 34 | -#define glue(x, y) xglue(x, y) | |
| 35 | -#define stringify(s) tostring(s) | |
| 36 | -#define tostring(s) #s | |
| 37 | -#endif | |
| 38 | - | |
| 39 | -#ifndef likely | |
| 40 | -#if __GNUC__ < 3 | |
| 41 | -#define __builtin_expect(x, n) (x) | |
| 42 | -#endif | |
| 43 | - | |
| 44 | -#define likely(x) __builtin_expect(!!(x), 1) | |
| 45 | -#define unlikely(x) __builtin_expect(!!(x), 0) | |
| 46 | -#endif | |
| 47 | - | |
| 48 | -#ifndef MIN | |
| 49 | -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) | |
| 50 | -#endif | |
| 51 | -#ifndef MAX | |
| 52 | -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) | |
| 53 | -#endif | |
| 54 | - | |
| 55 | -#ifndef always_inline | |
| 56 | -#if (__GNUC__ < 3) || defined(__APPLE__) | |
| 57 | -#define always_inline inline | |
| 58 | -#else | |
| 59 | -#define always_inline __attribute__ (( always_inline )) inline | |
| 60 | -#endif | |
| 61 | -#endif | |
| 62 | - | |
| 63 | -#include "audio/audio.h" | |
| 64 | - | |
| 65 | -/* vl.c */ | |
| 66 | -uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c); | |
| 67 | - | |
| 68 | -void hw_error(const char *fmt, ...); | |
| 69 | - | |
| 70 | -extern const char *bios_dir; | |
| 71 | -extern const char *bios_name; | |
| 72 | - | |
| 73 | -extern int vm_running; | |
| 74 | -extern const char *qemu_name; | |
| 75 | - | |
| 76 | -typedef struct vm_change_state_entry VMChangeStateEntry; | |
| 77 | -typedef void VMChangeStateHandler(void *opaque, int running); | |
| 78 | -typedef void VMStopHandler(void *opaque, int reason); | |
| 79 | - | |
| 80 | -VMChangeStateEntry *qemu_add_vm_change_state_handler(VMChangeStateHandler *cb, | |
| 81 | - void *opaque); | |
| 82 | -void qemu_del_vm_change_state_handler(VMChangeStateEntry *e); | |
| 83 | - | |
| 84 | -int qemu_add_vm_stop_handler(VMStopHandler *cb, void *opaque); | |
| 85 | -void qemu_del_vm_stop_handler(VMStopHandler *cb, void *opaque); | |
| 86 | - | |
| 87 | -void vm_start(void); | |
| 88 | -void vm_stop(int reason); | |
| 89 | - | |
| 90 | -typedef void QEMUResetHandler(void *opaque); | |
| 91 | - | |
| 92 | -void qemu_register_reset(QEMUResetHandler *func, void *opaque); | |
| 93 | -void qemu_system_reset_request(void); | |
| 94 | -void qemu_system_shutdown_request(void); | |
| 95 | -void qemu_system_powerdown_request(void); | |
| 96 | -#if !defined(TARGET_SPARC) | |
| 97 | -// Please implement a power failure function to signal the OS | |
| 98 | -#define qemu_system_powerdown() do{}while(0) | |
| 99 | -#else | |
| 100 | -void qemu_system_powerdown(void); | |
| 101 | -#endif | |
| 102 | - | |
| 103 | -void main_loop_wait(int timeout); | |
| 104 | - | |
| 105 | -extern int ram_size; | |
| 106 | -extern int bios_size; | |
| 107 | -extern int rtc_utc; | |
| 108 | -extern int rtc_start_date; | |
| 109 | -extern int cirrus_vga_enabled; | |
| 110 | -extern int vmsvga_enabled; | |
| 111 | -extern int graphic_width; | |
| 112 | -extern int graphic_height; | |
| 113 | -extern int graphic_depth; | |
| 114 | -extern const char *keyboard_layout; | |
| 115 | -extern int kqemu_allowed; | |
| 116 | -extern int win2k_install_hack; | |
| 117 | -extern int alt_grab; | |
| 118 | -extern int usb_enabled; | |
| 119 | -extern int smp_cpus; | |
| 120 | -extern int cursor_hide; | |
| 121 | -extern int graphic_rotate; | |
| 122 | -extern int no_quit; | |
| 123 | -extern int semihosting_enabled; | |
| 124 | -extern int autostart; | |
| 125 | -extern int old_param; | |
| 126 | -extern const char *bootp_filename; | |
| 127 | - | |
| 128 | -#define MAX_OPTION_ROMS 16 | |
| 129 | -extern const char *option_rom[MAX_OPTION_ROMS]; | |
| 130 | -extern int nb_option_roms; | |
| 131 | - | |
| 132 | -#ifdef TARGET_SPARC | |
| 133 | -#define MAX_PROM_ENVS 128 | |
| 134 | -extern const char *prom_envs[MAX_PROM_ENVS]; | |
| 135 | -extern unsigned int nb_prom_envs; | |
| 136 | -#endif | |
| 137 | - | |
| 138 | -/* XXX: make it dynamic */ | |
| 139 | -#define MAX_BIOS_SIZE (4 * 1024 * 1024) | |
| 140 | -#if defined (TARGET_PPC) | |
| 141 | -#define BIOS_SIZE (1024 * 1024) | |
| 142 | -#elif defined (TARGET_SPARC64) | |
| 143 | -#define BIOS_SIZE ((512 + 32) * 1024) | |
| 144 | -#elif defined(TARGET_MIPS) | |
| 145 | -#define BIOS_SIZE (4 * 1024 * 1024) | |
| 146 | -#endif | |
| 147 | - | |
| 148 | -/* keyboard/mouse support */ | |
| 149 | - | |
| 150 | -#define MOUSE_EVENT_LBUTTON 0x01 | |
| 151 | -#define MOUSE_EVENT_RBUTTON 0x02 | |
| 152 | -#define MOUSE_EVENT_MBUTTON 0x04 | |
| 153 | - | |
| 154 | -typedef void QEMUPutKBDEvent(void *opaque, int keycode); | |
| 155 | -typedef void QEMUPutMouseEvent(void *opaque, int dx, int dy, int dz, int buttons_state); | |
| 156 | - | |
| 157 | -typedef struct QEMUPutMouseEntry { | |
| 158 | - QEMUPutMouseEvent *qemu_put_mouse_event; | |
| 159 | - void *qemu_put_mouse_event_opaque; | |
| 160 | - int qemu_put_mouse_event_absolute; | |
| 161 | - char *qemu_put_mouse_event_name; | |
| 162 | - | |
| 163 | - /* used internally by qemu for handling mice */ | |
| 164 | - struct QEMUPutMouseEntry *next; | |
| 165 | -} QEMUPutMouseEntry; | |
| 166 | - | |
| 167 | -void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque); | |
| 168 | -QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func, | |
| 169 | - void *opaque, int absolute, | |
| 170 | - const char *name); | |
| 171 | -void qemu_remove_mouse_event_handler(QEMUPutMouseEntry *entry); | |
| 172 | - | |
| 173 | -void kbd_put_keycode(int keycode); | |
| 174 | -void kbd_mouse_event(int dx, int dy, int dz, int buttons_state); | |
| 175 | -int kbd_mouse_is_absolute(void); | |
| 176 | - | |
| 177 | -void do_info_mice(void); | |
| 178 | -void do_mouse_set(int index); | |
| 179 | - | |
| 180 | -/* keysym is a unicode code except for special keys (see QEMU_KEY_xxx | |
| 181 | - constants) */ | |
| 182 | -#define QEMU_KEY_ESC1(c) ((c) | 0xe100) | |
| 183 | -#define QEMU_KEY_BACKSPACE 0x007f | |
| 184 | -#define QEMU_KEY_UP QEMU_KEY_ESC1('A') | |
| 185 | -#define QEMU_KEY_DOWN QEMU_KEY_ESC1('B') | |
| 186 | -#define QEMU_KEY_RIGHT QEMU_KEY_ESC1('C') | |
| 187 | -#define QEMU_KEY_LEFT QEMU_KEY_ESC1('D') | |
| 188 | -#define QEMU_KEY_HOME QEMU_KEY_ESC1(1) | |
| 189 | -#define QEMU_KEY_END QEMU_KEY_ESC1(4) | |
| 190 | -#define QEMU_KEY_PAGEUP QEMU_KEY_ESC1(5) | |
| 191 | -#define QEMU_KEY_PAGEDOWN QEMU_KEY_ESC1(6) | |
| 192 | -#define QEMU_KEY_DELETE QEMU_KEY_ESC1(3) | |
| 193 | - | |
| 194 | -#define QEMU_KEY_CTRL_UP 0xe400 | |
| 195 | -#define QEMU_KEY_CTRL_DOWN 0xe401 | |
| 196 | -#define QEMU_KEY_CTRL_LEFT 0xe402 | |
| 197 | -#define QEMU_KEY_CTRL_RIGHT 0xe403 | |
| 198 | -#define QEMU_KEY_CTRL_HOME 0xe404 | |
| 199 | -#define QEMU_KEY_CTRL_END 0xe405 | |
| 200 | -#define QEMU_KEY_CTRL_PAGEUP 0xe406 | |
| 201 | -#define QEMU_KEY_CTRL_PAGEDOWN 0xe407 | |
| 202 | - | |
| 203 | -void kbd_put_keysym(int keysym); | |
| 204 | - | |
| 205 | -/* async I/O support */ | |
| 206 | - | |
| 207 | -typedef void IOReadHandler(void *opaque, const uint8_t *buf, int size); | |
| 208 | -typedef int IOCanRWHandler(void *opaque); | |
| 209 | -typedef void IOHandler(void *opaque); | |
| 210 | - | |
| 211 | -int qemu_set_fd_handler2(int fd, | |
| 212 | - IOCanRWHandler *fd_read_poll, | |
| 213 | - IOHandler *fd_read, | |
| 214 | - IOHandler *fd_write, | |
| 215 | - void *opaque); | |
| 216 | -int qemu_set_fd_handler(int fd, | |
| 217 | - IOHandler *fd_read, | |
| 218 | - IOHandler *fd_write, | |
| 219 | - void *opaque); | |
| 220 | - | |
| 221 | -/* Polling handling */ | |
| 222 | - | |
| 223 | -/* return TRUE if no sleep should be done afterwards */ | |
| 224 | -typedef int PollingFunc(void *opaque); | |
| 225 | - | |
| 226 | -int qemu_add_polling_cb(PollingFunc *func, void *opaque); | |
| 227 | -void qemu_del_polling_cb(PollingFunc *func, void *opaque); | |
| 228 | - | |
| 229 | -#ifdef _WIN32 | |
| 230 | -/* Wait objects handling */ | |
| 231 | -typedef void WaitObjectFunc(void *opaque); | |
| 232 | - | |
| 233 | -int qemu_add_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque); | |
| 234 | -void qemu_del_wait_object(HANDLE handle, WaitObjectFunc *func, void *opaque); | |
| 235 | -#endif | |
| 236 | - | |
| 237 | -/* character device */ | |
| 238 | - | |
| 239 | -#define CHR_EVENT_BREAK 0 /* serial break char */ | |
| 240 | -#define CHR_EVENT_FOCUS 1 /* focus to this terminal (modal input needed) */ | |
| 241 | -#define CHR_EVENT_RESET 2 /* new connection established */ | |
| 242 | - | |
| 243 | - | |
| 244 | -#define CHR_IOCTL_SERIAL_SET_PARAMS 1 | |
| 245 | -typedef struct { | |
| 246 | - int speed; | |
| 247 | - int parity; | |
| 248 | - int data_bits; | |
| 249 | - int stop_bits; | |
| 250 | -} QEMUSerialSetParams; | |
| 251 | - | |
| 252 | -#define CHR_IOCTL_SERIAL_SET_BREAK 2 | |
| 253 | - | |
| 254 | -#define CHR_IOCTL_PP_READ_DATA 3 | |
| 255 | -#define CHR_IOCTL_PP_WRITE_DATA 4 | |
| 256 | -#define CHR_IOCTL_PP_READ_CONTROL 5 | |
| 257 | -#define CHR_IOCTL_PP_WRITE_CONTROL 6 | |
| 258 | -#define CHR_IOCTL_PP_READ_STATUS 7 | |
| 259 | -#define CHR_IOCTL_PP_EPP_READ_ADDR 8 | |
| 260 | -#define CHR_IOCTL_PP_EPP_READ 9 | |
| 261 | -#define CHR_IOCTL_PP_EPP_WRITE_ADDR 10 | |
| 262 | -#define CHR_IOCTL_PP_EPP_WRITE 11 | |
| 263 | - | |
| 264 | -typedef void IOEventHandler(void *opaque, int event); | |
| 265 | - | |
| 266 | -typedef struct CharDriverState { | |
| 267 | - int (*chr_write)(struct CharDriverState *s, const uint8_t *buf, int len); | |
| 268 | - void (*chr_update_read_handler)(struct CharDriverState *s); | |
| 269 | - int (*chr_ioctl)(struct CharDriverState *s, int cmd, void *arg); | |
| 270 | - IOEventHandler *chr_event; | |
| 271 | - IOCanRWHandler *chr_can_read; | |
| 272 | - IOReadHandler *chr_read; | |
| 273 | - void *handler_opaque; | |
| 274 | - void (*chr_send_event)(struct CharDriverState *chr, int event); | |
| 275 | - void (*chr_close)(struct CharDriverState *chr); | |
| 276 | - void *opaque; | |
| 277 | - int focus; | |
| 278 | - QEMUBH *bh; | |
| 279 | -} CharDriverState; | |
| 280 | - | |
| 281 | -CharDriverState *qemu_chr_open(const char *filename); | |
| 282 | -void qemu_chr_printf(CharDriverState *s, const char *fmt, ...); | |
| 283 | -int qemu_chr_write(CharDriverState *s, const uint8_t *buf, int len); | |
| 284 | -void qemu_chr_send_event(CharDriverState *s, int event); | |
| 285 | -void qemu_chr_add_handlers(CharDriverState *s, | |
| 286 | - IOCanRWHandler *fd_can_read, | |
| 287 | - IOReadHandler *fd_read, | |
| 288 | - IOEventHandler *fd_event, | |
| 289 | - void *opaque); | |
| 290 | -int qemu_chr_ioctl(CharDriverState *s, int cmd, void *arg); | |
| 291 | -void qemu_chr_reset(CharDriverState *s); | |
| 292 | -int qemu_chr_can_read(CharDriverState *s); | |
| 293 | -void qemu_chr_read(CharDriverState *s, uint8_t *buf, int len); | |
| 294 | - | |
| 295 | -/* consoles */ | |
| 296 | - | |
| 297 | -typedef struct DisplayState DisplayState; | |
| 298 | -typedef struct TextConsole TextConsole; | |
| 299 | - | |
| 300 | -struct DisplayState { | |
| 301 | - uint8_t *data; | |
| 302 | - int linesize; | |
| 303 | - int depth; | |
| 304 | - int bgr; /* BGR color order instead of RGB. Only valid for depth == 32 */ | |
| 305 | - int width; | |
| 306 | - int height; | |
| 307 | - void *opaque; | |
| 308 | - struct QEMUTimer *gui_timer; | |
| 309 | - | |
| 310 | - void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h); | |
| 311 | - void (*dpy_resize)(struct DisplayState *s, int w, int h); | |
| 312 | - void (*dpy_refresh)(struct DisplayState *s); | |
| 313 | - void (*dpy_copy)(struct DisplayState *s, int src_x, int src_y, | |
| 314 | - int dst_x, int dst_y, int w, int h); | |
| 315 | - void (*dpy_fill)(struct DisplayState *s, int x, int y, | |
| 316 | - int w, int h, uint32_t c); | |
| 317 | - void (*mouse_set)(int x, int y, int on); | |
| 318 | - void (*cursor_define)(int width, int height, int bpp, int hot_x, int hot_y, | |
| 319 | - uint8_t *image, uint8_t *mask); | |
| 320 | -}; | |
| 321 | - | |
| 322 | -static inline void dpy_update(DisplayState *s, int x, int y, int w, int h) | |
| 323 | -{ | |
| 324 | - s->dpy_update(s, x, y, w, h); | |
| 325 | -} | |
| 326 | - | |
| 327 | -static inline void dpy_resize(DisplayState *s, int w, int h) | |
| 328 | -{ | |
| 329 | - s->dpy_resize(s, w, h); | |
| 330 | -} | |
| 331 | - | |
| 332 | -typedef void (*vga_hw_update_ptr)(void *); | |
| 333 | -typedef void (*vga_hw_invalidate_ptr)(void *); | |
| 334 | -typedef void (*vga_hw_screen_dump_ptr)(void *, const char *); | |
| 335 | - | |
| 336 | -TextConsole *graphic_console_init(DisplayState *ds, vga_hw_update_ptr update, | |
| 337 | - vga_hw_invalidate_ptr invalidate, | |
| 338 | - vga_hw_screen_dump_ptr screen_dump, | |
| 339 | - void *opaque); | |
| 340 | -void vga_hw_update(void); | |
| 341 | -void vga_hw_invalidate(void); | |
| 342 | -void vga_hw_screen_dump(const char *filename); | |
| 343 | - | |
| 344 | -int is_graphic_console(void); | |
| 345 | -CharDriverState *text_console_init(DisplayState *ds, const char *p); | |
| 346 | -void console_select(unsigned int index); | |
| 347 | -void console_color_init(DisplayState *ds); | |
| 348 | - | |
| 349 | -/* serial ports */ | |
| 350 | - | |
| 351 | -#define MAX_SERIAL_PORTS 4 | |
| 352 | - | |
| 353 | -extern CharDriverState *serial_hds[MAX_SERIAL_PORTS]; | |
| 354 | - | |
| 355 | -/* parallel ports */ | |
| 356 | - | |
| 357 | -#define MAX_PARALLEL_PORTS 3 | |
| 358 | - | |
| 359 | -extern CharDriverState *parallel_hds[MAX_PARALLEL_PORTS]; | |
| 360 | - | |
| 361 | -struct ParallelIOArg { | |
| 362 | - void *buffer; | |
| 363 | - int count; | |
| 364 | -}; | |
| 365 | - | |
| 366 | -/* VLANs support */ | |
| 367 | - | |
| 368 | -typedef struct VLANClientState VLANClientState; | |
| 369 | - | |
| 370 | -struct VLANClientState { | |
| 371 | - IOReadHandler *fd_read; | |
| 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; | |
| 375 | - void *opaque; | |
| 376 | - struct VLANClientState *next; | |
| 377 | - struct VLANState *vlan; | |
| 378 | - char info_str[256]; | |
| 379 | -}; | |
| 380 | - | |
| 381 | -typedef struct VLANState { | |
| 382 | - int id; | |
| 383 | - VLANClientState *first_client; | |
| 384 | - struct VLANState *next; | |
| 385 | - unsigned int nb_guest_devs, nb_host_devs; | |
| 386 | -} VLANState; | |
| 387 | - | |
| 388 | -VLANState *qemu_find_vlan(int id); | |
| 389 | -VLANClientState *qemu_new_vlan_client(VLANState *vlan, | |
| 390 | - IOReadHandler *fd_read, | |
| 391 | - IOCanRWHandler *fd_can_read, | |
| 392 | - void *opaque); | |
| 393 | -int qemu_can_send_packet(VLANClientState *vc); | |
| 394 | -void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size); | |
| 395 | -void qemu_handler_true(void *opaque); | |
| 396 | - | |
| 397 | -void do_info_network(void); | |
| 398 | - | |
| 399 | -/* TAP win32 */ | |
| 400 | -int tap_win32_init(VLANState *vlan, const char *ifname); | |
| 401 | - | |
| 402 | -/* NIC info */ | |
| 403 | - | |
| 404 | -#define MAX_NICS 8 | |
| 405 | - | |
| 406 | -typedef struct NICInfo { | |
| 407 | - uint8_t macaddr[6]; | |
| 408 | - const char *model; | |
| 409 | - VLANState *vlan; | |
| 410 | -} NICInfo; | |
| 411 | - | |
| 412 | -extern int nb_nics; | |
| 413 | -extern NICInfo nd_table[MAX_NICS]; | |
| 414 | - | |
| 415 | -/* SLIRP */ | |
| 416 | -void do_info_slirp(void); | |
| 417 | - | |
| 418 | -/* timers */ | |
| 419 | - | |
| 420 | -typedef struct QEMUClock QEMUClock; | |
| 421 | -typedef struct QEMUTimer QEMUTimer; | |
| 422 | -typedef void QEMUTimerCB(void *opaque); | |
| 423 | - | |
| 424 | -/* The real time clock should be used only for stuff which does not | |
| 425 | - change the virtual machine state, as it is run even if the virtual | |
| 426 | - machine is stopped. The real time clock has a frequency of 1000 | |
| 427 | - Hz. */ | |
| 428 | -extern QEMUClock *rt_clock; | |
| 429 | - | |
| 430 | -/* The virtual clock is only run during the emulation. It is stopped | |
| 431 | - when the virtual machine is stopped. Virtual timers use a high | |
| 432 | - precision clock, usually cpu cycles (use ticks_per_sec). */ | |
| 433 | -extern QEMUClock *vm_clock; | |
| 434 | - | |
| 435 | -int64_t qemu_get_clock(QEMUClock *clock); | |
| 436 | - | |
| 437 | -QEMUTimer *qemu_new_timer(QEMUClock *clock, QEMUTimerCB *cb, void *opaque); | |
| 438 | -void qemu_free_timer(QEMUTimer *ts); | |
| 439 | -void qemu_del_timer(QEMUTimer *ts); | |
| 440 | -void qemu_mod_timer(QEMUTimer *ts, int64_t expire_time); | |
| 441 | -int qemu_timer_pending(QEMUTimer *ts); | |
| 442 | - | |
| 443 | -extern int64_t ticks_per_sec; | |
| 444 | - | |
| 445 | -int64_t cpu_get_ticks(void); | |
| 446 | -void cpu_enable_ticks(void); | |
| 447 | -void cpu_disable_ticks(void); | |
| 448 | - | |
| 449 | -/* VM Load/Save */ | |
| 450 | - | |
| 451 | -typedef struct QEMUFile QEMUFile; | |
| 452 | - | |
| 453 | -QEMUFile *qemu_fopen(const char *filename, const char *mode); | |
| 454 | -void qemu_fflush(QEMUFile *f); | |
| 455 | -void qemu_fclose(QEMUFile *f); | |
| 456 | -void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, int size); | |
| 457 | -void qemu_put_byte(QEMUFile *f, int v); | |
| 458 | -void qemu_put_be16(QEMUFile *f, unsigned int v); | |
| 459 | -void qemu_put_be32(QEMUFile *f, unsigned int v); | |
| 460 | -void qemu_put_be64(QEMUFile *f, uint64_t v); | |
| 461 | -int qemu_get_buffer(QEMUFile *f, uint8_t *buf, int size); | |
| 462 | -int qemu_get_byte(QEMUFile *f); | |
| 463 | -unsigned int qemu_get_be16(QEMUFile *f); | |
| 464 | -unsigned int qemu_get_be32(QEMUFile *f); | |
| 465 | -uint64_t qemu_get_be64(QEMUFile *f); | |
| 466 | - | |
| 467 | -static inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv) | |
| 468 | -{ | |
| 469 | - qemu_put_be64(f, *pv); | |
| 470 | -} | |
| 471 | - | |
| 472 | -static inline void qemu_put_be32s(QEMUFile *f, const uint32_t *pv) | |
| 473 | -{ | |
| 474 | - qemu_put_be32(f, *pv); | |
| 475 | -} | |
| 476 | - | |
| 477 | -static inline void qemu_put_be16s(QEMUFile *f, const uint16_t *pv) | |
| 478 | -{ | |
| 479 | - qemu_put_be16(f, *pv); | |
| 480 | -} | |
| 481 | - | |
| 482 | -static inline void qemu_put_8s(QEMUFile *f, const uint8_t *pv) | |
| 483 | -{ | |
| 484 | - qemu_put_byte(f, *pv); | |
| 485 | -} | |
| 486 | - | |
| 487 | -static inline void qemu_get_be64s(QEMUFile *f, uint64_t *pv) | |
| 488 | -{ | |
| 489 | - *pv = qemu_get_be64(f); | |
| 490 | -} | |
| 491 | - | |
| 492 | -static inline void qemu_get_be32s(QEMUFile *f, uint32_t *pv) | |
| 493 | -{ | |
| 494 | - *pv = qemu_get_be32(f); | |
| 495 | -} | |
| 496 | - | |
| 497 | -static inline void qemu_get_be16s(QEMUFile *f, uint16_t *pv) | |
| 498 | -{ | |
| 499 | - *pv = qemu_get_be16(f); | |
| 500 | -} | |
| 501 | - | |
| 502 | -static inline void qemu_get_8s(QEMUFile *f, uint8_t *pv) | |
| 503 | -{ | |
| 504 | - *pv = qemu_get_byte(f); | |
| 505 | -} | |
| 506 | - | |
| 507 | -#if TARGET_LONG_BITS == 64 | |
| 508 | -#define qemu_put_betl qemu_put_be64 | |
| 509 | -#define qemu_get_betl qemu_get_be64 | |
| 510 | -#define qemu_put_betls qemu_put_be64s | |
| 511 | -#define qemu_get_betls qemu_get_be64s | |
| 512 | -#else | |
| 513 | -#define qemu_put_betl qemu_put_be32 | |
| 514 | -#define qemu_get_betl qemu_get_be32 | |
| 515 | -#define qemu_put_betls qemu_put_be32s | |
| 516 | -#define qemu_get_betls qemu_get_be32s | |
| 517 | -#endif | |
| 518 | - | |
| 519 | -int64_t qemu_ftell(QEMUFile *f); | |
| 520 | -int64_t qemu_fseek(QEMUFile *f, int64_t pos, int whence); | |
| 521 | - | |
| 522 | -typedef void SaveStateHandler(QEMUFile *f, void *opaque); | |
| 523 | -typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id); | |
| 524 | - | |
| 525 | -int register_savevm(const char *idstr, | |
| 526 | - int instance_id, | |
| 527 | - int version_id, | |
| 528 | - SaveStateHandler *save_state, | |
| 529 | - LoadStateHandler *load_state, | |
| 530 | - void *opaque); | |
| 531 | -void qemu_get_timer(QEMUFile *f, QEMUTimer *ts); | |
| 532 | -void qemu_put_timer(QEMUFile *f, QEMUTimer *ts); | |
| 533 | - | |
| 534 | -void cpu_save(QEMUFile *f, void *opaque); | |
| 535 | -int cpu_load(QEMUFile *f, void *opaque, int version_id); | |
| 536 | - | |
| 537 | -void do_savevm(const char *name); | |
| 538 | -void do_loadvm(const char *name); | |
| 539 | -void do_delvm(const char *name); | |
| 540 | -void do_info_snapshots(void); | |
| 541 | - | |
| 542 | -/* monitor.c */ | |
| 543 | -void monitor_init(CharDriverState *hd, int show_banner); | |
| 544 | -void term_puts(const char *str); | |
| 545 | -void term_vprintf(const char *fmt, va_list ap); | |
| 546 | -void term_printf(const char *fmt, ...) __attribute__ ((__format__ (__printf__, 1, 2))); | |
| 547 | -void term_print_filename(const char *filename); | |
| 548 | -void term_flush(void); | |
| 549 | -void term_print_help(void); | |
| 550 | -void monitor_readline(const char *prompt, int is_password, | |
| 551 | - char *buf, int buf_size); | |
| 552 | - | |
| 553 | -/* readline.c */ | |
| 554 | -typedef void ReadLineFunc(void *opaque, const char *str); | |
| 555 | - | |
| 556 | -extern int completion_index; | |
| 557 | -void add_completion(const char *str); | |
| 558 | -void readline_handle_byte(int ch); | |
| 559 | -void readline_find_completion(const char *cmdline); | |
| 560 | -const char *readline_get_history(unsigned int index); | |
| 561 | -void readline_start(const char *prompt, int is_password, | |
| 562 | - ReadLineFunc *readline_func, void *opaque); | |
| 563 | - | |
| 564 | -void kqemu_record_dump(void); | |
| 565 | - | |
| 566 | -/* sdl.c */ | |
| 567 | -void sdl_display_init(DisplayState *ds, int full_screen, int no_frame); | |
| 568 | - | |
| 569 | -/* cocoa.m */ | |
| 570 | -void cocoa_display_init(DisplayState *ds, int full_screen); | |
| 571 | - | |
| 572 | -/* vnc.c */ | |
| 573 | -void vnc_display_init(DisplayState *ds); | |
| 574 | -void vnc_display_close(DisplayState *ds); | |
| 575 | -int vnc_display_open(DisplayState *ds, const char *display); | |
| 576 | -int vnc_display_password(DisplayState *ds, const char *password); | |
| 577 | -void do_info_vnc(void); | |
| 578 | - | |
| 579 | -/* x_keymap.c */ | |
| 580 | -extern uint8_t _translate_keycode(const int key); | |
| 581 | - | |
| 582 | -#ifdef NEED_CPU_H | |
| 583 | - | |
| 584 | -typedef void QEMUMachineInitFunc(int ram_size, int vga_ram_size, | |
| 585 | - const char *boot_device, | |
| 586 | - DisplayState *ds, const char **fd_filename, int snapshot, | |
| 587 | - const char *kernel_filename, const char *kernel_cmdline, | |
| 588 | - const char *initrd_filename, const char *cpu_model); | |
| 589 | - | |
| 590 | -typedef struct QEMUMachine { | |
| 591 | - const char *name; | |
| 592 | - const char *desc; | |
| 593 | - QEMUMachineInitFunc *init; | |
| 594 | - struct QEMUMachine *next; | |
| 595 | -} QEMUMachine; | |
| 596 | - | |
| 597 | -int qemu_register_machine(QEMUMachine *m); | |
| 598 | - | |
| 599 | -typedef void SetIRQFunc(void *opaque, int irq_num, int level); | |
| 600 | - | |
| 601 | -#include "hw/irq.h" | |
| 602 | - | |
| 603 | -/* ISA bus */ | |
| 604 | - | |
| 605 | -extern target_phys_addr_t isa_mem_base; | |
| 606 | - | |
| 607 | -typedef void (IOPortWriteFunc)(void *opaque, uint32_t address, uint32_t data); | |
| 608 | -typedef uint32_t (IOPortReadFunc)(void *opaque, uint32_t address); | |
| 609 | - | |
| 610 | -int register_ioport_read(int start, int length, int size, | |
| 611 | - IOPortReadFunc *func, void *opaque); | |
| 612 | -int register_ioport_write(int start, int length, int size, | |
| 613 | - IOPortWriteFunc *func, void *opaque); | |
| 614 | -void isa_unassign_ioport(int start, int length); | |
| 615 | - | |
| 616 | -void isa_mmio_init(target_phys_addr_t base, target_phys_addr_t size); | |
| 617 | - | |
| 618 | -/* PCI bus */ | |
| 619 | - | |
| 620 | -extern target_phys_addr_t pci_mem_base; | |
| 621 | - | |
| 622 | -typedef struct PCIBus PCIBus; | |
| 623 | -typedef struct PCIDevice PCIDevice; | |
| 624 | - | |
| 625 | -typedef void PCIConfigWriteFunc(PCIDevice *pci_dev, | |
| 626 | - uint32_t address, uint32_t data, int len); | |
| 627 | -typedef uint32_t PCIConfigReadFunc(PCIDevice *pci_dev, | |
| 628 | - uint32_t address, int len); | |
| 629 | -typedef void PCIMapIORegionFunc(PCIDevice *pci_dev, int region_num, | |
| 630 | - uint32_t addr, uint32_t size, int type); | |
| 631 | - | |
| 632 | -#define PCI_ADDRESS_SPACE_MEM 0x00 | |
| 633 | -#define PCI_ADDRESS_SPACE_IO 0x01 | |
| 634 | -#define PCI_ADDRESS_SPACE_MEM_PREFETCH 0x08 | |
| 635 | - | |
| 636 | -typedef struct PCIIORegion { | |
| 637 | - uint32_t addr; /* current PCI mapping address. -1 means not mapped */ | |
| 638 | - uint32_t size; | |
| 639 | - uint8_t type; | |
| 640 | - PCIMapIORegionFunc *map_func; | |
| 641 | -} PCIIORegion; | |
| 642 | - | |
| 643 | -#define PCI_ROM_SLOT 6 | |
| 644 | -#define PCI_NUM_REGIONS 7 | |
| 645 | - | |
| 646 | -#define PCI_DEVICES_MAX 64 | |
| 647 | - | |
| 648 | -#define PCI_VENDOR_ID 0x00 /* 16 bits */ | |
| 649 | -#define PCI_DEVICE_ID 0x02 /* 16 bits */ | |
| 650 | -#define PCI_COMMAND 0x04 /* 16 bits */ | |
| 651 | -#define PCI_COMMAND_IO 0x1 /* Enable response in I/O space */ | |
| 652 | -#define PCI_COMMAND_MEMORY 0x2 /* Enable response in Memory space */ | |
| 653 | -#define PCI_CLASS_DEVICE 0x0a /* Device class */ | |
| 654 | -#define PCI_INTERRUPT_LINE 0x3c /* 8 bits */ | |
| 655 | -#define PCI_INTERRUPT_PIN 0x3d /* 8 bits */ | |
| 656 | -#define PCI_MIN_GNT 0x3e /* 8 bits */ | |
| 657 | -#define PCI_MAX_LAT 0x3f /* 8 bits */ | |
| 658 | - | |
| 659 | -struct PCIDevice { | |
| 660 | - /* PCI config space */ | |
| 661 | - uint8_t config[256]; | |
| 662 | - | |
| 663 | - /* the following fields are read only */ | |
| 664 | - PCIBus *bus; | |
| 665 | - int devfn; | |
| 666 | - char name[64]; | |
| 667 | - PCIIORegion io_regions[PCI_NUM_REGIONS]; | |
| 668 | - | |
| 669 | - /* do not access the following fields */ | |
| 670 | - PCIConfigReadFunc *config_read; | |
| 671 | - PCIConfigWriteFunc *config_write; | |
| 672 | - /* ??? This is a PC-specific hack, and should be removed. */ | |
| 673 | - int irq_index; | |
| 674 | - | |
| 675 | - /* IRQ objects for the INTA-INTD pins. */ | |
| 676 | - qemu_irq *irq; | |
| 677 | - | |
| 678 | - /* Current IRQ levels. Used internally by the generic PCI code. */ | |
| 679 | - int irq_state[4]; | |
| 680 | -}; | |
| 681 | - | |
| 682 | -PCIDevice *pci_register_device(PCIBus *bus, const char *name, | |
| 683 | - int instance_size, int devfn, | |
| 684 | - PCIConfigReadFunc *config_read, | |
| 685 | - PCIConfigWriteFunc *config_write); | |
| 686 | - | |
| 687 | -void pci_register_io_region(PCIDevice *pci_dev, int region_num, | |
| 688 | - uint32_t size, int type, | |
| 689 | - PCIMapIORegionFunc *map_func); | |
| 690 | - | |
| 691 | -uint32_t pci_default_read_config(PCIDevice *d, | |
| 692 | - uint32_t address, int len); | |
| 693 | -void pci_default_write_config(PCIDevice *d, | |
| 694 | - uint32_t address, uint32_t val, int len); | |
| 695 | -void pci_device_save(PCIDevice *s, QEMUFile *f); | |
| 696 | -int pci_device_load(PCIDevice *s, QEMUFile *f); | |
| 697 | - | |
| 698 | -typedef void (*pci_set_irq_fn)(qemu_irq *pic, int irq_num, int level); | |
| 699 | -typedef int (*pci_map_irq_fn)(PCIDevice *pci_dev, int irq_num); | |
| 700 | -PCIBus *pci_register_bus(pci_set_irq_fn set_irq, pci_map_irq_fn map_irq, | |
| 701 | - qemu_irq *pic, int devfn_min, int nirq); | |
| 702 | - | |
| 703 | -void pci_nic_init(PCIBus *bus, NICInfo *nd, int devfn); | |
| 704 | -void pci_data_write(void *opaque, uint32_t addr, uint32_t val, int len); | |
| 705 | -uint32_t pci_data_read(void *opaque, uint32_t addr, int len); | |
| 706 | -int pci_bus_num(PCIBus *s); | |
| 707 | -void pci_for_each_device(int bus_num, void (*fn)(PCIDevice *d)); | |
| 708 | - | |
| 709 | -void pci_info(void); | |
| 710 | -PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint32_t id, | |
| 711 | - pci_map_irq_fn map_irq, const char *name); | |
| 712 | - | |
| 713 | -/* prep_pci.c */ | |
| 714 | -PCIBus *pci_prep_init(qemu_irq *pic); | |
| 715 | - | |
| 716 | -/* apb_pci.c */ | |
| 717 | -PCIBus *pci_apb_init(target_phys_addr_t special_base, target_phys_addr_t mem_base, | |
| 718 | - qemu_irq *pic); | |
| 719 | - | |
| 720 | -PCIBus *pci_vpb_init(qemu_irq *pic, int irq, int realview); | |
| 721 | - | |
| 722 | -/* piix_pci.c */ | |
| 723 | -PCIBus *i440fx_init(PCIDevice **pi440fx_state, qemu_irq *pic); | |
| 724 | -void i440fx_set_smm(PCIDevice *d, int val); | |
| 725 | -int piix3_init(PCIBus *bus, int devfn); | |
| 726 | -void i440fx_init_memory_mappings(PCIDevice *d); | |
| 727 | - | |
| 728 | -int piix4_init(PCIBus *bus, int devfn); | |
| 729 | - | |
| 730 | -/* openpic.c */ | |
| 731 | -/* OpenPIC have 5 outputs per CPU connected and one IRQ out single output */ | |
| 732 | -enum { | |
| 733 | - OPENPIC_OUTPUT_INT = 0, /* IRQ */ | |
| 734 | - OPENPIC_OUTPUT_CINT, /* critical IRQ */ | |
| 735 | - OPENPIC_OUTPUT_MCK, /* Machine check event */ | |
| 736 | - OPENPIC_OUTPUT_DEBUG, /* Inconditional debug event */ | |
| 737 | - OPENPIC_OUTPUT_RESET, /* Core reset event */ | |
| 738 | - OPENPIC_OUTPUT_NB, | |
| 739 | -}; | |
| 740 | -qemu_irq *openpic_init (PCIBus *bus, int *pmem_index, int nb_cpus, | |
| 741 | - qemu_irq **irqs, qemu_irq irq_out); | |
| 742 | - | |
| 743 | -/* gt64xxx.c */ | |
| 744 | -PCIBus *pci_gt64120_init(qemu_irq *pic); | |
| 745 | - | |
| 746 | -#ifdef HAS_AUDIO | |
| 747 | -struct soundhw { | |
| 748 | - const char *name; | |
| 749 | - const char *descr; | |
| 750 | - int enabled; | |
| 751 | - int isa; | |
| 752 | - union { | |
| 753 | - int (*init_isa) (AudioState *s, qemu_irq *pic); | |
| 754 | - int (*init_pci) (PCIBus *bus, AudioState *s); | |
| 755 | - } init; | |
| 756 | -}; | |
| 757 | - | |
| 758 | -extern struct soundhw soundhw[]; | |
| 759 | -#endif | |
| 760 | - | |
| 761 | -/* vga.c */ | |
| 762 | - | |
| 763 | -#ifndef TARGET_SPARC | |
| 764 | -#define VGA_RAM_SIZE (8192 * 1024) | |
| 765 | -#else | |
| 766 | -#define VGA_RAM_SIZE (9 * 1024 * 1024) | |
| 767 | -#endif | |
| 768 | - | |
| 769 | -int isa_vga_init(DisplayState *ds, uint8_t *vga_ram_base, | |
| 770 | - unsigned long vga_ram_offset, int vga_ram_size); | |
| 771 | -int pci_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, | |
| 772 | - unsigned long vga_ram_offset, int vga_ram_size, | |
| 773 | - unsigned long vga_bios_offset, int vga_bios_size); | |
| 774 | -int isa_vga_mm_init(DisplayState *ds, uint8_t *vga_ram_base, | |
| 775 | - unsigned long vga_ram_offset, int vga_ram_size, | |
| 776 | - target_phys_addr_t vram_base, target_phys_addr_t ctrl_base, | |
| 777 | - int it_shift); | |
| 778 | - | |
| 779 | -/* cirrus_vga.c */ | |
| 780 | -void pci_cirrus_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, | |
| 781 | - unsigned long vga_ram_offset, int vga_ram_size); | |
| 782 | -void isa_cirrus_vga_init(DisplayState *ds, uint8_t *vga_ram_base, | |
| 783 | - unsigned long vga_ram_offset, int vga_ram_size); | |
| 784 | - | |
| 785 | -/* vmware_vga.c */ | |
| 786 | -void pci_vmsvga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, | |
| 787 | - unsigned long vga_ram_offset, int vga_ram_size); | |
| 788 | - | |
| 789 | -/* ide.c */ | |
| 790 | -#define MAX_DISKS 4 | |
| 791 | - | |
| 792 | -extern BlockDriverState *bs_table[MAX_DISKS + 1]; | |
| 793 | -extern BlockDriverState *sd_bdrv; | |
| 794 | -extern BlockDriverState *mtd_bdrv; | |
| 795 | - | |
| 796 | -void isa_ide_init(int iobase, int iobase2, qemu_irq irq, | |
| 797 | - BlockDriverState *hd0, BlockDriverState *hd1); | |
| 798 | -void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table, | |
| 799 | - int secondary_ide_enabled); | |
| 800 | -void pci_piix3_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn, | |
| 801 | - qemu_irq *pic); | |
| 802 | -void pci_piix4_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn, | |
| 803 | - qemu_irq *pic); | |
| 804 | - | |
| 805 | -/* cdrom.c */ | |
| 806 | -int cdrom_read_toc(int nb_sectors, uint8_t *buf, int msf, int start_track); | |
| 807 | -int cdrom_read_toc_raw(int nb_sectors, uint8_t *buf, int msf, int session_num); | |
| 808 | - | |
| 809 | -/* ds1225y.c */ | |
| 810 | -typedef struct ds1225y_t ds1225y_t; | |
| 811 | -ds1225y_t *ds1225y_init(target_phys_addr_t mem_base, const char *filename); | |
| 812 | - | |
| 813 | -/* es1370.c */ | |
| 814 | -int es1370_init (PCIBus *bus, AudioState *s); | |
| 815 | - | |
| 816 | -/* sb16.c */ | |
| 817 | -int SB16_init (AudioState *s, qemu_irq *pic); | |
| 818 | - | |
| 819 | -/* adlib.c */ | |
| 820 | -int Adlib_init (AudioState *s, qemu_irq *pic); | |
| 821 | - | |
| 822 | -/* gus.c */ | |
| 823 | -int GUS_init (AudioState *s, qemu_irq *pic); | |
| 824 | - | |
| 825 | -/* dma.c */ | |
| 826 | -typedef int (*DMA_transfer_handler) (void *opaque, int nchan, int pos, int size); | |
| 827 | -int DMA_get_channel_mode (int nchan); | |
| 828 | -int DMA_read_memory (int nchan, void *buf, int pos, int size); | |
| 829 | -int DMA_write_memory (int nchan, void *buf, int pos, int size); | |
| 830 | -void DMA_hold_DREQ (int nchan); | |
| 831 | -void DMA_release_DREQ (int nchan); | |
| 832 | -void DMA_schedule(int nchan); | |
| 833 | -void DMA_run (void); | |
| 834 | -void DMA_init (int high_page_enable); | |
| 835 | -void DMA_register_channel (int nchan, | |
| 836 | - DMA_transfer_handler transfer_handler, | |
| 837 | - void *opaque); | |
| 838 | -/* fdc.c */ | |
| 839 | -#define MAX_FD 2 | |
| 840 | -extern BlockDriverState *fd_table[MAX_FD]; | |
| 841 | - | |
| 842 | -typedef struct fdctrl_t fdctrl_t; | |
| 843 | - | |
| 844 | -fdctrl_t *fdctrl_init (qemu_irq irq, int dma_chann, int mem_mapped, | |
| 845 | - target_phys_addr_t io_base, | |
| 846 | - BlockDriverState **fds); | |
| 847 | -fdctrl_t *sun4m_fdctrl_init (qemu_irq irq, target_phys_addr_t io_base, | |
| 848 | - BlockDriverState **fds); | |
| 849 | -int fdctrl_get_drive_type(fdctrl_t *fdctrl, int drive_num); | |
| 850 | - | |
| 851 | -/* eepro100.c */ | |
| 852 | - | |
| 853 | -void pci_i82551_init(PCIBus *bus, NICInfo *nd, int devfn); | |
| 854 | -void pci_i82557b_init(PCIBus *bus, NICInfo *nd, int devfn); | |
| 855 | -void pci_i82559er_init(PCIBus *bus, NICInfo *nd, int devfn); | |
| 856 | - | |
| 857 | -/* ne2000.c */ | |
| 858 | - | |
| 859 | -void isa_ne2000_init(int base, qemu_irq irq, NICInfo *nd); | |
| 860 | -void pci_ne2000_init(PCIBus *bus, NICInfo *nd, int devfn); | |
| 861 | - | |
| 862 | -/* rtl8139.c */ | |
| 863 | - | |
| 864 | -void pci_rtl8139_init(PCIBus *bus, NICInfo *nd, int devfn); | |
| 865 | - | |
| 866 | -/* pcnet.c */ | |
| 867 | - | |
| 868 | -void pci_pcnet_init(PCIBus *bus, NICInfo *nd, int devfn); | |
| 869 | -void lance_init(NICInfo *nd, target_phys_addr_t leaddr, void *dma_opaque, | |
| 870 | - qemu_irq irq, qemu_irq *reset); | |
| 871 | - | |
| 872 | -/* mipsnet.c */ | |
| 873 | -void mipsnet_init(int base, qemu_irq irq, NICInfo *nd); | |
| 874 | - | |
| 875 | -/* vmmouse.c */ | |
| 876 | -void *vmmouse_init(void *m); | |
| 877 | - | |
| 878 | -/* vmport.c */ | |
| 879 | -#ifdef TARGET_I386 | |
| 880 | -void vmport_init(CPUState *env); | |
| 881 | -void vmport_register(unsigned char command, IOPortReadFunc *func, void *opaque); | |
| 882 | -#endif | |
| 883 | - | |
| 884 | -/* pckbd.c */ | |
| 885 | - | |
| 886 | -void i8042_init(qemu_irq kbd_irq, qemu_irq mouse_irq, uint32_t io_base); | |
| 887 | -void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq, | |
| 888 | - target_phys_addr_t base, int it_shift); | |
| 889 | - | |
| 890 | -/* mc146818rtc.c */ | |
| 891 | - | |
| 892 | -typedef struct RTCState RTCState; | |
| 893 | - | |
| 894 | -RTCState *rtc_init(int base, qemu_irq irq); | |
| 895 | -RTCState *rtc_mm_init(target_phys_addr_t base, int it_shift, qemu_irq irq); | |
| 896 | -void rtc_set_memory(RTCState *s, int addr, int val); | |
| 897 | -void rtc_set_date(RTCState *s, const struct tm *tm); | |
| 898 | - | |
| 899 | -/* serial.c */ | |
| 900 | - | |
| 901 | -typedef struct SerialState SerialState; | |
| 902 | -SerialState *serial_init(int base, qemu_irq irq, CharDriverState *chr); | |
| 903 | -SerialState *serial_mm_init (target_phys_addr_t base, int it_shift, | |
| 904 | - qemu_irq irq, CharDriverState *chr, | |
| 905 | - int ioregister); | |
| 906 | -uint32_t serial_mm_readb (void *opaque, target_phys_addr_t addr); | |
| 907 | -void serial_mm_writeb (void *opaque, target_phys_addr_t addr, uint32_t value); | |
| 908 | -uint32_t serial_mm_readw (void *opaque, target_phys_addr_t addr); | |
| 909 | -void serial_mm_writew (void *opaque, target_phys_addr_t addr, uint32_t value); | |
| 910 | -uint32_t serial_mm_readl (void *opaque, target_phys_addr_t addr); | |
| 911 | -void serial_mm_writel (void *opaque, target_phys_addr_t addr, uint32_t value); | |
| 912 | - | |
| 913 | -/* parallel.c */ | |
| 914 | - | |
| 915 | -typedef struct ParallelState ParallelState; | |
| 916 | -ParallelState *parallel_init(int base, qemu_irq irq, CharDriverState *chr); | |
| 917 | -ParallelState *parallel_mm_init(target_phys_addr_t base, int it_shift, qemu_irq irq, CharDriverState *chr); | |
| 918 | - | |
| 919 | -/* i8259.c */ | |
| 920 | - | |
| 921 | -typedef struct PicState2 PicState2; | |
| 922 | -extern PicState2 *isa_pic; | |
| 923 | -void pic_set_irq(int irq, int level); | |
| 924 | -void pic_set_irq_new(void *opaque, int irq, int level); | |
| 925 | -qemu_irq *i8259_init(qemu_irq parent_irq); | |
| 926 | -void pic_set_alt_irq_func(PicState2 *s, SetIRQFunc *alt_irq_func, | |
| 927 | - void *alt_irq_opaque); | |
| 928 | -int pic_read_irq(PicState2 *s); | |
| 929 | -void pic_update_irq(PicState2 *s); | |
| 930 | -uint32_t pic_intack_read(PicState2 *s); | |
| 931 | -void pic_info(void); | |
| 932 | -void irq_info(void); | |
| 933 | - | |
| 934 | -/* APIC */ | |
| 935 | -typedef struct IOAPICState IOAPICState; | |
| 936 | - | |
| 937 | -int apic_init(CPUState *env); | |
| 938 | -int apic_accept_pic_intr(CPUState *env); | |
| 939 | -int apic_get_interrupt(CPUState *env); | |
| 940 | -IOAPICState *ioapic_init(void); | |
| 941 | -void ioapic_set_irq(void *opaque, int vector, int level); | |
| 942 | - | |
| 943 | -/* i8254.c */ | |
| 944 | - | |
| 945 | -#define PIT_FREQ 1193182 | |
| 946 | - | |
| 947 | -typedef struct PITState PITState; | |
| 948 | - | |
| 949 | -PITState *pit_init(int base, qemu_irq irq); | |
| 950 | -void pit_set_gate(PITState *pit, int channel, int val); | |
| 951 | -int pit_get_gate(PITState *pit, int channel); | |
| 952 | -int pit_get_initial_count(PITState *pit, int channel); | |
| 953 | -int pit_get_mode(PITState *pit, int channel); | |
| 954 | -int pit_get_out(PITState *pit, int channel, int64_t current_time); | |
| 955 | - | |
| 956 | -/* jazz_led.c */ | |
| 957 | -extern void jazz_led_init(DisplayState *ds, target_phys_addr_t base); | |
| 958 | - | |
| 959 | -/* pcspk.c */ | |
| 960 | -void pcspk_init(PITState *); | |
| 961 | -int pcspk_audio_init(AudioState *, qemu_irq *pic); | |
| 962 | - | |
| 963 | -#include "hw/i2c.h" | |
| 964 | - | |
| 965 | -#include "hw/smbus.h" | |
| 966 | - | |
| 967 | -/* acpi.c */ | |
| 968 | -extern int acpi_enabled; | |
| 969 | -i2c_bus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base); | |
| 970 | -void piix4_smbus_register_device(SMBusDevice *dev, uint8_t addr); | |
| 971 | -void acpi_bios_init(void); | |
| 972 | - | |
| 973 | -/* Axis ETRAX. */ | |
| 974 | -extern QEMUMachine bareetraxfs_machine; | |
| 975 | - | |
| 976 | -/* pc.c */ | |
| 977 | -extern QEMUMachine pc_machine; | |
| 978 | -extern QEMUMachine isapc_machine; | |
| 979 | -extern int fd_bootchk; | |
| 980 | - | |
| 981 | -void ioport_set_a20(int enable); | |
| 982 | -int ioport_get_a20(void); | |
| 983 | - | |
| 984 | -/* ppc.c */ | |
| 985 | -extern QEMUMachine prep_machine; | |
| 986 | -extern QEMUMachine core99_machine; | |
| 987 | -extern QEMUMachine heathrow_machine; | |
| 988 | -extern QEMUMachine ref405ep_machine; | |
| 989 | -extern QEMUMachine taihu_machine; | |
| 990 | - | |
| 991 | -/* mips_r4k.c */ | |
| 992 | -extern QEMUMachine mips_machine; | |
| 993 | - | |
| 994 | -/* mips_malta.c */ | |
| 995 | -extern QEMUMachine mips_malta_machine; | |
| 996 | - | |
| 997 | -/* mips_pica61.c */ | |
| 998 | -extern QEMUMachine mips_pica61_machine; | |
| 999 | - | |
| 1000 | -/* mips_mipssim.c */ | |
| 1001 | -extern QEMUMachine mips_mipssim_machine; | |
| 1002 | - | |
| 1003 | -/* mips_int.c */ | |
| 1004 | -extern void cpu_mips_irq_init_cpu(CPUState *env); | |
| 1005 | - | |
| 1006 | -/* mips_timer.c */ | |
| 1007 | -extern void cpu_mips_clock_init(CPUState *); | |
| 1008 | -extern void cpu_mips_irqctrl_init (void); | |
| 1009 | - | |
| 1010 | -/* shix.c */ | |
| 1011 | -extern QEMUMachine shix_machine; | |
| 1012 | - | |
| 1013 | -/* r2d.c */ | |
| 1014 | -extern QEMUMachine r2d_machine; | |
| 1015 | - | |
| 1016 | -#ifdef TARGET_PPC | |
| 1017 | -/* PowerPC hardware exceptions management helpers */ | |
| 1018 | -typedef void (*clk_setup_cb)(void *opaque, uint32_t freq); | |
| 1019 | -typedef struct clk_setup_t clk_setup_t; | |
| 1020 | -struct clk_setup_t { | |
| 1021 | - clk_setup_cb cb; | |
| 1022 | - void *opaque; | |
| 1023 | -}; | |
| 1024 | -static inline void clk_setup (clk_setup_t *clk, uint32_t freq) | |
| 1025 | -{ | |
| 1026 | - if (clk->cb != NULL) | |
| 1027 | - (*clk->cb)(clk->opaque, freq); | |
| 1028 | -} | |
| 1029 | - | |
| 1030 | -clk_setup_cb cpu_ppc_tb_init (CPUState *env, uint32_t freq); | |
| 1031 | -/* Embedded PowerPC DCR management */ | |
| 1032 | -typedef target_ulong (*dcr_read_cb)(void *opaque, int dcrn); | |
| 1033 | -typedef void (*dcr_write_cb)(void *opaque, int dcrn, target_ulong val); | |
| 1034 | -int ppc_dcr_init (CPUState *env, int (*dcr_read_error)(int dcrn), | |
| 1035 | - int (*dcr_write_error)(int dcrn)); | |
| 1036 | -int ppc_dcr_register (CPUState *env, int dcrn, void *opaque, | |
| 1037 | - dcr_read_cb drc_read, dcr_write_cb dcr_write); | |
| 1038 | -clk_setup_cb ppc_emb_timers_init (CPUState *env, uint32_t freq); | |
| 1039 | -/* Embedded PowerPC reset */ | |
| 1040 | -void ppc40x_core_reset (CPUState *env); | |
| 1041 | -void ppc40x_chip_reset (CPUState *env); | |
| 1042 | -void ppc40x_system_reset (CPUState *env); | |
| 1043 | -void PREP_debug_write (void *opaque, uint32_t addr, uint32_t val); | |
| 1044 | - | |
| 1045 | -extern CPUWriteMemoryFunc *PPC_io_write[]; | |
| 1046 | -extern CPUReadMemoryFunc *PPC_io_read[]; | |
| 1047 | -void PPC_debug_write (void *opaque, uint32_t addr, uint32_t val); | |
| 1048 | -#endif | |
| 1049 | - | |
| 1050 | -/* sun4m.c */ | |
| 1051 | -extern QEMUMachine ss5_machine, ss10_machine, ss600mp_machine; | |
| 1052 | - | |
| 1053 | -/* iommu.c */ | |
| 1054 | -void *iommu_init(target_phys_addr_t addr, uint32_t version); | |
| 1055 | -void sparc_iommu_memory_rw(void *opaque, target_phys_addr_t addr, | |
| 1056 | - uint8_t *buf, int len, int is_write); | |
| 1057 | -static inline void sparc_iommu_memory_read(void *opaque, | |
| 1058 | - target_phys_addr_t addr, | |
| 1059 | - uint8_t *buf, int len) | |
| 1060 | -{ | |
| 1061 | - sparc_iommu_memory_rw(opaque, addr, buf, len, 0); | |
| 1062 | -} | |
| 1063 | - | |
| 1064 | -static inline void sparc_iommu_memory_write(void *opaque, | |
| 1065 | - target_phys_addr_t addr, | |
| 1066 | - uint8_t *buf, int len) | |
| 1067 | -{ | |
| 1068 | - sparc_iommu_memory_rw(opaque, addr, buf, len, 1); | |
| 1069 | -} | |
| 1070 | - | |
| 1071 | -/* tcx.c */ | |
| 1072 | -void tcx_init(DisplayState *ds, target_phys_addr_t addr, uint8_t *vram_base, | |
| 1073 | - unsigned long vram_offset, int vram_size, int width, int height, | |
| 1074 | - int depth); | |
| 1075 | - | |
| 1076 | -/* slavio_intctl.c */ | |
| 1077 | -void *slavio_intctl_init(target_phys_addr_t addr, target_phys_addr_t addrg, | |
| 1078 | - const uint32_t *intbit_to_level, | |
| 1079 | - qemu_irq **irq, qemu_irq **cpu_irq, | |
| 1080 | - qemu_irq **parent_irq, unsigned int cputimer); | |
| 1081 | -void slavio_pic_info(void *opaque); | |
| 1082 | -void slavio_irq_info(void *opaque); | |
| 1083 | - | |
| 1084 | -/* loader.c */ | |
| 1085 | -int get_image_size(const char *filename); | |
| 1086 | -int load_image(const char *filename, uint8_t *addr); | |
| 1087 | -int load_elf(const char *filename, int64_t virt_to_phys_addend, | |
| 1088 | - uint64_t *pentry, uint64_t *lowaddr, uint64_t *highaddr); | |
| 1089 | -int load_aout(const char *filename, uint8_t *addr); | |
| 1090 | -int load_uboot(const char *filename, target_ulong *ep, int *is_linux); | |
| 1091 | - | |
| 1092 | -/* slavio_timer.c */ | |
| 1093 | -void slavio_timer_init_all(target_phys_addr_t base, qemu_irq master_irq, | |
| 1094 | - qemu_irq *cpu_irqs); | |
| 1095 | - | |
| 1096 | -/* slavio_serial.c */ | |
| 1097 | -SerialState *slavio_serial_init(target_phys_addr_t base, qemu_irq irq, | |
| 1098 | - CharDriverState *chr1, CharDriverState *chr2); | |
| 1099 | -void slavio_serial_ms_kbd_init(target_phys_addr_t base, qemu_irq irq); | |
| 1100 | - | |
| 1101 | -/* slavio_misc.c */ | |
| 1102 | -void *slavio_misc_init(target_phys_addr_t base, target_phys_addr_t power_base, | |
| 1103 | - qemu_irq irq); | |
| 1104 | -void slavio_set_power_fail(void *opaque, int power_failing); | |
| 1105 | - | |
| 1106 | -/* esp.c */ | |
| 1107 | -void esp_scsi_attach(void *opaque, BlockDriverState *bd, int id); | |
| 1108 | -void *esp_init(BlockDriverState **bd, target_phys_addr_t espaddr, | |
| 1109 | - void *dma_opaque, qemu_irq irq, qemu_irq *reset); | |
| 1110 | - | |
| 1111 | -/* sparc32_dma.c */ | |
| 1112 | -void *sparc32_dma_init(target_phys_addr_t daddr, qemu_irq parent_irq, | |
| 1113 | - void *iommu, qemu_irq **dev_irq, qemu_irq **reset); | |
| 1114 | -void ledma_memory_read(void *opaque, target_phys_addr_t addr, | |
| 1115 | - uint8_t *buf, int len, int do_bswap); | |
| 1116 | -void ledma_memory_write(void *opaque, target_phys_addr_t addr, | |
| 1117 | - uint8_t *buf, int len, int do_bswap); | |
| 1118 | -void espdma_memory_read(void *opaque, uint8_t *buf, int len); | |
| 1119 | -void espdma_memory_write(void *opaque, uint8_t *buf, int len); | |
| 1120 | - | |
| 1121 | -/* cs4231.c */ | |
| 1122 | -void cs_init(target_phys_addr_t base, int irq, void *intctl); | |
| 1123 | - | |
| 1124 | -/* sun4u.c */ | |
| 1125 | -extern QEMUMachine sun4u_machine; | |
| 1126 | - | |
| 1127 | -/* NVRAM helpers */ | |
| 1128 | -typedef uint32_t (*nvram_read_t)(void *private, uint32_t addr); | |
| 1129 | -typedef void (*nvram_write_t)(void *private, uint32_t addr, uint32_t val); | |
| 1130 | -typedef struct nvram_t { | |
| 1131 | - void *opaque; | |
| 1132 | - nvram_read_t read_fn; | |
| 1133 | - nvram_write_t write_fn; | |
| 1134 | -} nvram_t; | |
| 1135 | - | |
| 1136 | -#include "hw/m48t59.h" | |
| 1137 | - | |
| 1138 | -void NVRAM_set_byte (nvram_t *nvram, uint32_t addr, uint8_t value); | |
| 1139 | -uint8_t NVRAM_get_byte (nvram_t *nvram, uint32_t addr); | |
| 1140 | -void NVRAM_set_word (nvram_t *nvram, uint32_t addr, uint16_t value); | |
| 1141 | -uint16_t NVRAM_get_word (nvram_t *nvram, uint32_t addr); | |
| 1142 | -void NVRAM_set_lword (nvram_t *nvram, uint32_t addr, uint32_t value); | |
| 1143 | -uint32_t NVRAM_get_lword (nvram_t *nvram, uint32_t addr); | |
| 1144 | -void NVRAM_set_string (nvram_t *nvram, uint32_t addr, | |
| 1145 | - const unsigned char *str, uint32_t max); | |
| 1146 | -int NVRAM_get_string (nvram_t *nvram, uint8_t *dst, uint16_t addr, int max); | |
| 1147 | -void NVRAM_set_crc (nvram_t *nvram, uint32_t addr, | |
| 1148 | - uint32_t start, uint32_t count); | |
| 1149 | -int PPC_NVRAM_set_params (nvram_t *nvram, uint16_t NVRAM_size, | |
| 1150 | - const unsigned char *arch, | |
| 1151 | - uint32_t RAM_size, int boot_device, | |
| 1152 | - uint32_t kernel_image, uint32_t kernel_size, | |
| 1153 | - const char *cmdline, | |
| 1154 | - uint32_t initrd_image, uint32_t initrd_size, | |
| 1155 | - uint32_t NVRAM_image, | |
| 1156 | - int width, int height, int depth); | |
| 1157 | - | |
| 1158 | -/* adb.c */ | |
| 1159 | - | |
| 1160 | -#define MAX_ADB_DEVICES 16 | |
| 1161 | - | |
| 1162 | -#define ADB_MAX_OUT_LEN 16 | |
| 1163 | - | |
| 1164 | -typedef struct ADBDevice ADBDevice; | |
| 1165 | - | |
| 1166 | -/* buf = NULL means polling */ | |
| 1167 | -typedef int ADBDeviceRequest(ADBDevice *d, uint8_t *buf_out, | |
| 1168 | - const uint8_t *buf, int len); | |
| 1169 | -typedef int ADBDeviceReset(ADBDevice *d); | |
| 1170 | - | |
| 1171 | -struct ADBDevice { | |
| 1172 | - struct ADBBusState *bus; | |
| 1173 | - int devaddr; | |
| 1174 | - int handler; | |
| 1175 | - ADBDeviceRequest *devreq; | |
| 1176 | - ADBDeviceReset *devreset; | |
| 1177 | - void *opaque; | |
| 1178 | -}; | |
| 1179 | - | |
| 1180 | -typedef struct ADBBusState { | |
| 1181 | - ADBDevice devices[MAX_ADB_DEVICES]; | |
| 1182 | - int nb_devices; | |
| 1183 | - int poll_index; | |
| 1184 | -} ADBBusState; | |
| 1185 | - | |
| 1186 | -int adb_request(ADBBusState *s, uint8_t *buf_out, | |
| 1187 | - const uint8_t *buf, int len); | |
| 1188 | -int adb_poll(ADBBusState *s, uint8_t *buf_out); | |
| 1189 | - | |
| 1190 | -ADBDevice *adb_register_device(ADBBusState *s, int devaddr, | |
| 1191 | - ADBDeviceRequest *devreq, | |
| 1192 | - ADBDeviceReset *devreset, | |
| 1193 | - void *opaque); | |
| 1194 | -void adb_kbd_init(ADBBusState *bus); | |
| 1195 | -void adb_mouse_init(ADBBusState *bus); | |
| 1196 | - | |
| 1197 | -extern ADBBusState adb_bus; | |
| 1198 | - | |
| 1199 | -#include "hw/usb.h" | |
| 1200 | - | |
| 1201 | -/* usb ports of the VM */ | |
| 1202 | - | |
| 1203 | -void qemu_register_usb_port(USBPort *port, void *opaque, int index, | |
| 1204 | - usb_attachfn attach); | |
| 1205 | - | |
| 1206 | -#define VM_USB_HUB_SIZE 8 | |
| 1207 | - | |
| 1208 | -void do_usb_add(const char *devname); | |
| 1209 | -void do_usb_del(const char *devname); | |
| 1210 | -void usb_info(void); | |
| 1211 | - | |
| 1212 | -/* scsi-disk.c */ | |
| 1213 | -enum scsi_reason { | |
| 1214 | - SCSI_REASON_DONE, /* Command complete. */ | |
| 1215 | - SCSI_REASON_DATA /* Transfer complete, more data required. */ | |
| 1216 | -}; | |
| 1217 | - | |
| 1218 | -typedef struct SCSIDevice SCSIDevice; | |
| 1219 | -typedef void (*scsi_completionfn)(void *opaque, int reason, uint32_t tag, | |
| 1220 | - uint32_t arg); | |
| 1221 | - | |
| 1222 | -SCSIDevice *scsi_disk_init(BlockDriverState *bdrv, | |
| 1223 | - int tcq, | |
| 1224 | - scsi_completionfn completion, | |
| 1225 | - void *opaque); | |
| 1226 | -void scsi_disk_destroy(SCSIDevice *s); | |
| 1227 | - | |
| 1228 | -int32_t scsi_send_command(SCSIDevice *s, uint32_t tag, uint8_t *buf, int lun); | |
| 1229 | -/* SCSI data transfers are asynchrnonous. However, unlike the block IO | |
| 1230 | - layer the completion routine may be called directly by | |
| 1231 | - scsi_{read,write}_data. */ | |
| 1232 | -void scsi_read_data(SCSIDevice *s, uint32_t tag); | |
| 1233 | -int scsi_write_data(SCSIDevice *s, uint32_t tag); | |
| 1234 | -void scsi_cancel_io(SCSIDevice *s, uint32_t tag); | |
| 1235 | -uint8_t *scsi_get_buf(SCSIDevice *s, uint32_t tag); | |
| 1236 | - | |
| 1237 | -/* lsi53c895a.c */ | |
| 1238 | -void lsi_scsi_attach(void *opaque, BlockDriverState *bd, int id); | |
| 1239 | -void *lsi_scsi_init(PCIBus *bus, int devfn); | |
| 1240 | - | |
| 1241 | -/* integratorcp.c */ | |
| 1242 | -extern QEMUMachine integratorcp_machine; | |
| 1243 | - | |
| 1244 | -/* versatilepb.c */ | |
| 1245 | -extern QEMUMachine versatilepb_machine; | |
| 1246 | -extern QEMUMachine versatileab_machine; | |
| 1247 | - | |
| 1248 | -/* realview.c */ | |
| 1249 | -extern QEMUMachine realview_machine; | |
| 1250 | - | |
| 1251 | -/* spitz.c */ | |
| 1252 | -extern QEMUMachine akitapda_machine; | |
| 1253 | -extern QEMUMachine spitzpda_machine; | |
| 1254 | -extern QEMUMachine borzoipda_machine; | |
| 1255 | -extern QEMUMachine terrierpda_machine; | |
| 1256 | - | |
| 1257 | -/* gumstix.c */ | |
| 1258 | -extern QEMUMachine connex_machine; | |
| 1259 | - | |
| 1260 | -/* palm.c */ | |
| 1261 | -extern QEMUMachine palmte_machine; | |
| 1262 | - | |
| 1263 | -/* armv7m.c */ | |
| 1264 | -qemu_irq *armv7m_init(int flash_size, int sram_size, | |
| 1265 | - const char *kernel_filename, const char *cpu_model); | |
| 1266 | - | |
| 1267 | -/* stellaris.c */ | |
| 1268 | -extern QEMUMachine lm3s811evb_machine; | |
| 1269 | -extern QEMUMachine lm3s6965evb_machine; | |
| 1270 | - | |
| 1271 | -/* ps2.c */ | |
| 1272 | -void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg); | |
| 1273 | -void *ps2_mouse_init(void (*update_irq)(void *, int), void *update_arg); | |
| 1274 | -void ps2_write_mouse(void *, int val); | |
| 1275 | -void ps2_write_keyboard(void *, int val); | |
| 1276 | -uint32_t ps2_read_data(void *); | |
| 1277 | -void ps2_queue(void *, int b); | |
| 1278 | -void ps2_keyboard_set_translation(void *opaque, int mode); | |
| 1279 | -void ps2_mouse_fake_event(void *opaque); | |
| 1280 | - | |
| 1281 | -/* smc91c111.c */ | |
| 1282 | -void smc91c111_init(NICInfo *, uint32_t, qemu_irq); | |
| 1283 | - | |
| 1284 | -/* pl031.c */ | |
| 1285 | -void pl031_init(uint32_t base, qemu_irq irq); | |
| 1286 | - | |
| 1287 | -/* pl110.c */ | |
| 1288 | -void *pl110_init(DisplayState *ds, uint32_t base, qemu_irq irq, int); | |
| 1289 | - | |
| 1290 | -/* pl011.c */ | |
| 1291 | -enum pl011_type { | |
| 1292 | - PL011_ARM, | |
| 1293 | - PL011_LUMINARY | |
| 1294 | -}; | |
| 1295 | - | |
| 1296 | -void pl011_init(uint32_t base, qemu_irq irq, CharDriverState *chr, | |
| 1297 | - enum pl011_type type); | |
| 1298 | - | |
| 1299 | -/* pl022.c */ | |
| 1300 | -void pl022_init(uint32_t base, qemu_irq irq, int (*xfer_cb)(void *, int), | |
| 1301 | - void *opaque); | |
| 1302 | - | |
| 1303 | -/* pl050.c */ | |
| 1304 | -void pl050_init(uint32_t base, qemu_irq irq, int is_mouse); | |
| 1305 | - | |
| 1306 | -/* pl061.c */ | |
| 1307 | -qemu_irq *pl061_init(uint32_t base, qemu_irq irq, qemu_irq **out); | |
| 1308 | - | |
| 1309 | -/* pl080.c */ | |
| 1310 | -void *pl080_init(uint32_t base, qemu_irq irq, int nchannels); | |
| 1311 | - | |
| 1312 | -/* pl181.c */ | |
| 1313 | -void pl181_init(uint32_t base, BlockDriverState *bd, | |
| 1314 | - qemu_irq irq0, qemu_irq irq1); | |
| 1315 | - | |
| 1316 | -/* pl190.c */ | |
| 1317 | -qemu_irq *pl190_init(uint32_t base, qemu_irq irq, qemu_irq fiq); | |
| 1318 | - | |
| 1319 | -/* arm-timer.c */ | |
| 1320 | -void sp804_init(uint32_t base, qemu_irq irq); | |
| 1321 | -void icp_pit_init(uint32_t base, qemu_irq *pic, int irq); | |
| 1322 | - | |
| 1323 | -/* arm_sysctl.c */ | |
| 1324 | -void arm_sysctl_init(uint32_t base, uint32_t sys_id); | |
| 1325 | - | |
| 1326 | -/* realview_gic.c */ | |
| 1327 | -qemu_irq *realview_gic_init(uint32_t base, qemu_irq parent_irq); | |
| 1328 | - | |
| 1329 | -/* mpcore.c */ | |
| 1330 | -extern qemu_irq *mpcore_irq_init(qemu_irq *cpu_irq); | |
| 1331 | - | |
| 1332 | -/* arm_boot.c */ | |
| 1333 | - | |
| 1334 | -void arm_load_kernel(CPUState *env, int ram_size, const char *kernel_filename, | |
| 1335 | - const char *kernel_cmdline, const char *initrd_filename, | |
| 1336 | - int board_id, target_phys_addr_t loader_start); | |
| 1337 | - | |
| 1338 | -/* armv7m_nvic.c */ | |
| 1339 | -qemu_irq *armv7m_nvic_init(CPUState *env); | |
| 1340 | - | |
| 1341 | -/* ssd0303.c */ | |
| 1342 | -void ssd0303_init(DisplayState *ds, i2c_bus *bus, int address); | |
| 1343 | - | |
| 1344 | -/* ssd0323.c */ | |
| 1345 | -int ssd0323_xfer_ssi(void *opaque, int data); | |
| 1346 | -void *ssd0323_init(DisplayState *ds, qemu_irq *cmd_p); | |
| 1347 | - | |
| 1348 | -/* sh7750.c */ | |
| 1349 | -struct SH7750State; | |
| 1350 | - | |
| 1351 | -struct SH7750State *sh7750_init(CPUState * cpu); | |
| 1352 | - | |
| 1353 | -typedef struct { | |
| 1354 | - /* The callback will be triggered if any of the designated lines change */ | |
| 1355 | - uint16_t portamask_trigger; | |
| 1356 | - uint16_t portbmask_trigger; | |
| 1357 | - /* Return 0 if no action was taken */ | |
| 1358 | - int (*port_change_cb) (uint16_t porta, uint16_t portb, | |
| 1359 | - uint16_t * periph_pdtra, | |
| 1360 | - uint16_t * periph_portdira, | |
| 1361 | - uint16_t * periph_pdtrb, | |
| 1362 | - uint16_t * periph_portdirb); | |
| 1363 | -} sh7750_io_device; | |
| 1364 | - | |
| 1365 | -int sh7750_register_io_device(struct SH7750State *s, | |
| 1366 | - sh7750_io_device * device); | |
| 1367 | -/* sh_timer.c */ | |
| 1368 | -#define TMU012_FEAT_TOCR (1 << 0) | |
| 1369 | -#define TMU012_FEAT_3CHAN (1 << 1) | |
| 1370 | -#define TMU012_FEAT_EXTCLK (1 << 2) | |
| 1371 | -void tmu012_init(uint32_t base, int feat, uint32_t freq); | |
| 1372 | - | |
| 1373 | -/* sh_serial.c */ | |
| 1374 | -#define SH_SERIAL_FEAT_SCIF (1 << 0) | |
| 1375 | -void sh_serial_init (target_phys_addr_t base, int feat, | |
| 1376 | - uint32_t freq, CharDriverState *chr); | |
| 1377 | - | |
| 1378 | -/* tc58128.c */ | |
| 1379 | -int tc58128_init(struct SH7750State *s, char *zone1, char *zone2); | |
| 1380 | - | |
| 1381 | -/* NOR flash devices */ | |
| 1382 | -#define MAX_PFLASH 4 | |
| 1383 | -extern BlockDriverState *pflash_table[MAX_PFLASH]; | |
| 1384 | -typedef struct pflash_t pflash_t; | |
| 1385 | - | |
| 1386 | -pflash_t *pflash_register (target_phys_addr_t base, ram_addr_t off, | |
| 1387 | - BlockDriverState *bs, | |
| 1388 | - uint32_t sector_len, int nb_blocs, int width, | |
| 1389 | - uint16_t id0, uint16_t id1, | |
| 1390 | - uint16_t id2, uint16_t id3); | |
| 1391 | - | |
| 1392 | -/* nand.c */ | |
| 1393 | -struct nand_flash_s; | |
| 1394 | -struct nand_flash_s *nand_init(int manf_id, int chip_id); | |
| 1395 | -void nand_done(struct nand_flash_s *s); | |
| 1396 | -void nand_setpins(struct nand_flash_s *s, | |
| 1397 | - int cle, int ale, int ce, int wp, int gnd); | |
| 1398 | -void nand_getpins(struct nand_flash_s *s, int *rb); | |
| 1399 | -void nand_setio(struct nand_flash_s *s, uint8_t value); | |
| 1400 | -uint8_t nand_getio(struct nand_flash_s *s); | |
| 1401 | - | |
| 1402 | -#define NAND_MFR_TOSHIBA 0x98 | |
| 1403 | -#define NAND_MFR_SAMSUNG 0xec | |
| 1404 | -#define NAND_MFR_FUJITSU 0x04 | |
| 1405 | -#define NAND_MFR_NATIONAL 0x8f | |
| 1406 | -#define NAND_MFR_RENESAS 0x07 | |
| 1407 | -#define NAND_MFR_STMICRO 0x20 | |
| 1408 | -#define NAND_MFR_HYNIX 0xad | |
| 1409 | -#define NAND_MFR_MICRON 0x2c | |
| 1410 | - | |
| 1411 | -/* ecc.c */ | |
| 1412 | -struct ecc_state_s { | |
| 1413 | - uint8_t cp; /* Column parity */ | |
| 1414 | - uint16_t lp[2]; /* Line parity */ | |
| 1415 | - uint16_t count; | |
| 1416 | -}; | |
| 1417 | - | |
| 1418 | -uint8_t ecc_digest(struct ecc_state_s *s, uint8_t sample); | |
| 1419 | -void ecc_reset(struct ecc_state_s *s); | |
| 1420 | -void ecc_put(QEMUFile *f, struct ecc_state_s *s); | |
| 1421 | -void ecc_get(QEMUFile *f, struct ecc_state_s *s); | |
| 1422 | - | |
| 1423 | -/* ads7846.c */ | |
| 1424 | -struct ads7846_state_s; | |
| 1425 | -uint32_t ads7846_read(void *opaque); | |
| 1426 | -void ads7846_write(void *opaque, uint32_t value); | |
| 1427 | -struct ads7846_state_s *ads7846_init(qemu_irq penirq); | |
| 1428 | - | |
| 1429 | -/* max111x.c */ | |
| 1430 | -struct max111x_s; | |
| 1431 | -uint32_t max111x_read(void *opaque); | |
| 1432 | -void max111x_write(void *opaque, uint32_t value); | |
| 1433 | -struct max111x_s *max1110_init(qemu_irq cb); | |
| 1434 | -struct max111x_s *max1111_init(qemu_irq cb); | |
| 1435 | -void max111x_set_input(struct max111x_s *s, int line, uint8_t value); | |
| 1436 | - | |
| 1437 | -/* PCMCIA/Cardbus */ | |
| 1438 | - | |
| 1439 | -struct pcmcia_socket_s { | |
| 1440 | - qemu_irq irq; | |
| 1441 | - int attached; | |
| 1442 | - const char *slot_string; | |
| 1443 | - const char *card_string; | |
| 1444 | -}; | |
| 1445 | - | |
| 1446 | -void pcmcia_socket_register(struct pcmcia_socket_s *socket); | |
| 1447 | -void pcmcia_socket_unregister(struct pcmcia_socket_s *socket); | |
| 1448 | -void pcmcia_info(void); | |
| 1449 | - | |
| 1450 | -struct pcmcia_card_s { | |
| 1451 | - void *state; | |
| 1452 | - struct pcmcia_socket_s *slot; | |
| 1453 | - int (*attach)(void *state); | |
| 1454 | - int (*detach)(void *state); | |
| 1455 | - const uint8_t *cis; | |
| 1456 | - int cis_len; | |
| 1457 | - | |
| 1458 | - /* Only valid if attached */ | |
| 1459 | - uint8_t (*attr_read)(void *state, uint32_t address); | |
| 1460 | - void (*attr_write)(void *state, uint32_t address, uint8_t value); | |
| 1461 | - uint16_t (*common_read)(void *state, uint32_t address); | |
| 1462 | - void (*common_write)(void *state, uint32_t address, uint16_t value); | |
| 1463 | - uint16_t (*io_read)(void *state, uint32_t address); | |
| 1464 | - void (*io_write)(void *state, uint32_t address, uint16_t value); | |
| 1465 | -}; | |
| 1466 | - | |
| 1467 | -#define CISTPL_DEVICE 0x01 /* 5V Device Information Tuple */ | |
| 1468 | -#define CISTPL_NO_LINK 0x14 /* No Link Tuple */ | |
| 1469 | -#define CISTPL_VERS_1 0x15 /* Level 1 Version Tuple */ | |
| 1470 | -#define CISTPL_JEDEC_C 0x18 /* JEDEC ID Tuple */ | |
| 1471 | -#define CISTPL_JEDEC_A 0x19 /* JEDEC ID Tuple */ | |
| 1472 | -#define CISTPL_CONFIG 0x1a /* Configuration Tuple */ | |
| 1473 | -#define CISTPL_CFTABLE_ENTRY 0x1b /* 16-bit PCCard Configuration */ | |
| 1474 | -#define CISTPL_DEVICE_OC 0x1c /* Additional Device Information */ | |
| 1475 | -#define CISTPL_DEVICE_OA 0x1d /* Additional Device Information */ | |
| 1476 | -#define CISTPL_DEVICE_GEO 0x1e /* Additional Device Information */ | |
| 1477 | -#define CISTPL_DEVICE_GEO_A 0x1f /* Additional Device Information */ | |
| 1478 | -#define CISTPL_MANFID 0x20 /* Manufacture ID Tuple */ | |
| 1479 | -#define CISTPL_FUNCID 0x21 /* Function ID Tuple */ | |
| 1480 | -#define CISTPL_FUNCE 0x22 /* Function Extension Tuple */ | |
| 1481 | -#define CISTPL_END 0xff /* Tuple End */ | |
| 1482 | -#define CISTPL_ENDMARK 0xff | |
| 1483 | - | |
| 1484 | -/* dscm1xxxx.c */ | |
| 1485 | -struct pcmcia_card_s *dscm1xxxx_init(BlockDriverState *bdrv); | |
| 1486 | - | |
| 1487 | -/* ptimer.c */ | |
| 1488 | -typedef struct ptimer_state ptimer_state; | |
| 1489 | -typedef void (*ptimer_cb)(void *opaque); | |
| 1490 | - | |
| 1491 | -ptimer_state *ptimer_init(QEMUBH *bh); | |
| 1492 | -void ptimer_set_period(ptimer_state *s, int64_t period); | |
| 1493 | -void ptimer_set_freq(ptimer_state *s, uint32_t freq); | |
| 1494 | -void ptimer_set_limit(ptimer_state *s, uint64_t limit, int reload); | |
| 1495 | -uint64_t ptimer_get_count(ptimer_state *s); | |
| 1496 | -void ptimer_set_count(ptimer_state *s, uint64_t count); | |
| 1497 | -void ptimer_run(ptimer_state *s, int oneshot); | |
| 1498 | -void ptimer_stop(ptimer_state *s); | |
| 1499 | -void qemu_put_ptimer(QEMUFile *f, ptimer_state *s); | |
| 1500 | -void qemu_get_ptimer(QEMUFile *f, ptimer_state *s); | |
| 1501 | - | |
| 1502 | -#include "hw/pxa.h" | |
| 1503 | - | |
| 1504 | -#include "hw/omap.h" | |
| 1505 | - | |
| 1506 | -/* tsc210x.c */ | |
| 1507 | -struct uwire_slave_s *tsc2102_init(qemu_irq pint, AudioState *audio); | |
| 1508 | -struct i2s_codec_s *tsc210x_codec(struct uwire_slave_s *chip); | |
| 1509 | - | |
| 1510 | -/* mcf_uart.c */ | |
| 1511 | -uint32_t mcf_uart_read(void *opaque, target_phys_addr_t addr); | |
| 1512 | -void mcf_uart_write(void *opaque, target_phys_addr_t addr, uint32_t val); | |
| 1513 | -void *mcf_uart_init(qemu_irq irq, CharDriverState *chr); | |
| 1514 | -void mcf_uart_mm_init(target_phys_addr_t base, qemu_irq irq, | |
| 1515 | - CharDriverState *chr); | |
| 1516 | - | |
| 1517 | -/* mcf_intc.c */ | |
| 1518 | -qemu_irq *mcf_intc_init(target_phys_addr_t base, CPUState *env); | |
| 1519 | - | |
| 1520 | -/* mcf_fec.c */ | |
| 1521 | -void mcf_fec_init(NICInfo *nd, target_phys_addr_t base, qemu_irq *irq); | |
| 1522 | - | |
| 1523 | -/* mcf5206.c */ | |
| 1524 | -qemu_irq *mcf5206_init(uint32_t base, CPUState *env); | |
| 1525 | - | |
| 1526 | -/* an5206.c */ | |
| 1527 | -extern QEMUMachine an5206_machine; | |
| 1528 | - | |
| 1529 | -/* mcf5208.c */ | |
| 1530 | -extern QEMUMachine mcf5208evb_machine; | |
| 1531 | - | |
| 1532 | -/* dummy_m68k.c */ | |
| 1533 | -extern QEMUMachine dummy_m68k_machine; | |
| 1534 | - | |
| 1535 | -#include "gdbstub.h" | |
| 1536 | - | |
| 1537 | -#endif /* defined(NEED_CPU_H) */ | |
| 1538 | -#endif /* VL_H */ |
vnc.c
x_keymap.c
| ... | ... | @@ -21,7 +21,8 @@ |
| 21 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | 22 | * THE SOFTWARE. |
| 23 | 23 | */ |
| 24 | -#include "vl.h" | |
| 24 | +#include "qemu-common.h" | |
| 25 | + | |
| 25 | 26 | static const uint8_t x_keycode_to_pc_keycode[115] = { |
| 26 | 27 | 0xc7, /* 97 Home */ |
| 27 | 28 | 0xc8, /* 98 Up */ | ... | ... |