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 | # Makefile for QEMU. | 1 | # Makefile for QEMU. |
| 2 | 2 | ||
| 3 | +VPATH=$(SRC_PATH):$(SRC_PATH)/hw | ||
| 4 | + | ||
| 3 | include config-host.mak | 5 | include config-host.mak |
| 4 | 6 | ||
| 5 | .PHONY: all clean distclean dvi info install install-doc tar tarbin \ | 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,9 +49,15 @@ BLOCK_OBJS+=block-qcow2.o block-parallels.o | ||
| 47 | # CPUs and machines. | 49 | # CPUs and machines. |
| 48 | 50 | ||
| 49 | OBJS=$(BLOCK_OBJS) | 51 | OBJS=$(BLOCK_OBJS) |
| 50 | -OBJS+=readline.o console.o | 52 | +OBJS+=readline.o console.o |
| 51 | OBJS+=block.o | 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 | ifdef CONFIG_WIN32 | 61 | ifdef CONFIG_WIN32 |
| 54 | OBJS+=tap-win32.o | 62 | OBJS+=tap-win32.o |
| 55 | endif | 63 | endif |
Makefile.target
| @@ -399,7 +399,6 @@ endif | @@ -399,7 +399,6 @@ endif | ||
| 399 | VL_OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o | 399 | VL_OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o |
| 400 | # XXX: suppress QEMU_TOOL tests | 400 | # XXX: suppress QEMU_TOOL tests |
| 401 | VL_OBJS+=block-raw.o | 401 | VL_OBJS+=block-raw.o |
| 402 | -VL_OBJS+=irq.o | ||
| 403 | 402 | ||
| 404 | ifdef CONFIG_ALSA | 403 | ifdef CONFIG_ALSA |
| 405 | LIBS += -lasound | 404 | LIBS += -lasound |
| @@ -421,14 +420,11 @@ CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS) | @@ -421,14 +420,11 @@ CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS) | ||
| 421 | LIBS += $(CONFIG_VNC_TLS_LIBS) | 420 | LIBS += $(CONFIG_VNC_TLS_LIBS) |
| 422 | endif | 421 | endif |
| 423 | 422 | ||
| 424 | -VL_OBJS += i2c.o smbus.o | ||
| 425 | - | ||
| 426 | # SCSI layer | 423 | # SCSI layer |
| 427 | -VL_OBJS+= scsi-disk.o cdrom.o lsi53c895a.o | 424 | +VL_OBJS+= lsi53c895a.o |
| 428 | 425 | ||
| 429 | # USB layer | 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 | # EEPROM emulation | 429 | # EEPROM emulation |
| 434 | VL_OBJS += eeprom93xx.o | 430 | VL_OBJS += eeprom93xx.o |
| @@ -444,7 +440,7 @@ ifeq ($(TARGET_BASE_ARCH), i386) | @@ -444,7 +440,7 @@ ifeq ($(TARGET_BASE_ARCH), i386) | ||
| 444 | VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o | 440 | VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o |
| 445 | VL_OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o | 441 | VL_OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o |
| 446 | VL_OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o | 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 | CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE | 444 | CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE |
| 449 | endif | 445 | endif |
| 450 | ifeq ($(TARGET_BASE_ARCH), ppc) | 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,7 +464,7 @@ VL_OBJS+= mips_r4k.o mips_malta.o mips_pica61.o mips_mipssim.o | ||
| 468 | VL_OBJS+= mips_timer.o mips_int.o dma.o vga.o serial.o i8254.o i8259.o | 464 | VL_OBJS+= mips_timer.o mips_int.o dma.o vga.o serial.o i8254.o i8259.o |
| 469 | VL_OBJS+= jazz_led.o | 465 | VL_OBJS+= jazz_led.o |
| 470 | VL_OBJS+= ide.o gt64xxx.o pckbd.o ps2.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o | 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 | VL_OBJS+= mipsnet.o | 468 | VL_OBJS+= mipsnet.o |
| 473 | CPPFLAGS += -DHAS_AUDIO | 469 | CPPFLAGS += -DHAS_AUDIO |
| 474 | endif | 470 | endif |
| @@ -494,13 +490,13 @@ VL_OBJS+= integratorcp.o versatilepb.o ps2.o smc91c111.o arm_pic.o arm_timer.o | @@ -494,13 +490,13 @@ VL_OBJS+= integratorcp.o versatilepb.o ps2.o smc91c111.o arm_pic.o arm_timer.o | ||
| 494 | VL_OBJS+= arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o | 490 | VL_OBJS+= arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o |
| 495 | VL_OBJS+= versatile_pci.o sd.o ptimer.o | 491 | VL_OBJS+= versatile_pci.o sd.o ptimer.o |
| 496 | VL_OBJS+= realview_gic.o realview.o arm_sysctl.o mpcore.o | 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 | VL_OBJS+= arm-semi.o | 495 | VL_OBJS+= arm-semi.o |
| 500 | VL_OBJS+= pxa2xx.o pxa2xx_pic.o pxa2xx_gpio.o pxa2xx_timer.o pxa2xx_dma.o | 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 | VL_OBJS+= pflash_cfi01.o gumstix.o | 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 | VL_OBJS+= omap.o omap_lcdc.o omap1_clk.o omap_mmc.o omap_i2c.o | 500 | VL_OBJS+= omap.o omap_lcdc.o omap1_clk.o omap_mmc.o omap_i2c.o |
| 505 | VL_OBJS+= palm.o tsc210x.o | 501 | VL_OBJS+= palm.o tsc210x.o |
| 506 | CPPFLAGS += -DHAS_AUDIO | 502 | CPPFLAGS += -DHAS_AUDIO |
arm-semi.c
| @@ -33,7 +33,9 @@ | @@ -33,7 +33,9 @@ | ||
| 33 | 33 | ||
| 34 | #define ARM_ANGEL_HEAP_SIZE (128 * 1024 * 1024) | 34 | #define ARM_ANGEL_HEAP_SIZE (128 * 1024 * 1024) |
| 35 | #else | 35 | #else |
| 36 | -#include "vl.h" | 36 | +#include "qemu-common.h" |
| 37 | +#include "sysemu.h" | ||
| 38 | +#include "gdbstub.h" | ||
| 37 | #endif | 39 | #endif |
| 38 | 40 | ||
| 39 | #define SYS_OPEN 0x01 | 41 | #define SYS_OPEN 0x01 |
audio/audio.c
| @@ -21,7 +21,11 @@ | @@ -21,7 +21,11 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | #define AUDIO_CAP "audio" | 30 | #define AUDIO_CAP "audio" |
| 27 | #include "audio_int.h" | 31 | #include "audio_int.h" |
audio/audio.h
| @@ -73,7 +73,6 @@ typedef struct CaptureState { | @@ -73,7 +73,6 @@ typedef struct CaptureState { | ||
| 73 | LIST_ENTRY (CaptureState) entries; | 73 | LIST_ENTRY (CaptureState) entries; |
| 74 | } CaptureState; | 74 | } CaptureState; |
| 75 | 75 | ||
| 76 | -typedef struct AudioState AudioState; | ||
| 77 | typedef struct SWVoiceOut SWVoiceOut; | 76 | typedef struct SWVoiceOut SWVoiceOut; |
| 78 | typedef struct CaptureVoiceOut CaptureVoiceOut; | 77 | typedef struct CaptureVoiceOut CaptureVoiceOut; |
| 79 | typedef struct SWVoiceIn SWVoiceIn; | 78 | typedef struct SWVoiceIn SWVoiceIn; |
audio/mixeng.c
| @@ -22,7 +22,8 @@ | @@ -22,7 +22,8 @@ | ||
| 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | * THE SOFTWARE. | 23 | * THE SOFTWARE. |
| 24 | */ | 24 | */ |
| 25 | -#include "vl.h" | 25 | +#include "qemu-common.h" |
| 26 | +#include "audio.h" | ||
| 26 | 27 | ||
| 27 | #define AUDIO_CAP "mixeng" | 28 | #define AUDIO_CAP "mixeng" |
| 28 | #include "audio_int.h" | 29 | #include "audio_int.h" |
audio/noaudio.c
| @@ -21,7 +21,9 @@ | @@ -21,7 +21,9 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | #define AUDIO_CAP "noaudio" | 28 | #define AUDIO_CAP "noaudio" |
| 27 | #include "audio_int.h" | 29 | #include "audio_int.h" |
audio/ossaudio.c
| @@ -30,7 +30,8 @@ | @@ -30,7 +30,8 @@ | ||
| 30 | #else | 30 | #else |
| 31 | #include <sys/soundcard.h> | 31 | #include <sys/soundcard.h> |
| 32 | #endif | 32 | #endif |
| 33 | -#include "vl.h" | 33 | +#include "qemu-common.h" |
| 34 | +#include "audio.h" | ||
| 34 | 35 | ||
| 35 | #define AUDIO_CAP "oss" | 36 | #define AUDIO_CAP "oss" |
| 36 | #include "audio_int.h" | 37 | #include "audio_int.h" |
audio/sdlaudio.c
audio/wavaudio.c
| @@ -21,7 +21,9 @@ | @@ -21,7 +21,9 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | #define AUDIO_CAP "wav" | 28 | #define AUDIO_CAP "wav" |
| 27 | #include "audio_int.h" | 29 | #include "audio_int.h" |
audio/wavcapture.c
block-raw.c
| @@ -21,10 +21,9 @@ | @@ -21,10 +21,9 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#ifdef QEMU_IMG | ||
| 25 | #include "qemu-common.h" | 24 | #include "qemu-common.h" |
| 26 | -#else | ||
| 27 | -#include "vl.h" | 25 | +#ifndef QEMU_IMG |
| 26 | +#include "qemu-timer.h" | ||
| 28 | #include "exec-all.h" | 27 | #include "exec-all.h" |
| 29 | #endif | 28 | #endif |
| 30 | #include "block_int.h" | 29 | #include "block_int.h" |
block.c
| @@ -21,10 +21,9 @@ | @@ -21,10 +21,9 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#ifdef QEMU_IMG | ||
| 25 | #include "qemu-common.h" | 24 | #include "qemu-common.h" |
| 26 | -#else | ||
| 27 | -#include "vl.h" | 25 | +#ifndef QEMU_IMG |
| 26 | +#include "console.h" | ||
| 28 | #endif | 27 | #endif |
| 29 | #include "block_int.h" | 28 | #include "block_int.h" |
| 30 | 29 |
block.h
| @@ -2,7 +2,6 @@ | @@ -2,7 +2,6 @@ | ||
| 2 | #define BLOCK_H | 2 | #define BLOCK_H |
| 3 | 3 | ||
| 4 | /* block.c */ | 4 | /* block.c */ |
| 5 | -typedef struct BlockDriverState BlockDriverState; | ||
| 6 | typedef struct BlockDriver BlockDriver; | 5 | typedef struct BlockDriver BlockDriver; |
| 7 | 6 | ||
| 8 | extern BlockDriver bdrv_raw; | 7 | extern BlockDriver bdrv_raw; |
cocoa.m
| @@ -37,7 +37,9 @@ | @@ -37,7 +37,9 @@ | ||
| 37 | 37 | ||
| 38 | #import <Cocoa/Cocoa.h> | 38 | #import <Cocoa/Cocoa.h> |
| 39 | 39 | ||
| 40 | -#include "vl.h" | 40 | +#include "qemu-common.h" |
| 41 | +#include "console.h" | ||
| 42 | +#include "sysemu.h" | ||
| 41 | 43 | ||
| 42 | NSWindow *window = NULL; | 44 | NSWindow *window = NULL; |
| 43 | NSQuickDrawView *qd_view = NULL; | 45 | NSQuickDrawView *qd_view = NULL; |
console.c
| @@ -21,7 +21,9 @@ | @@ -21,7 +21,9 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | //#define DEBUG_CONSOLE | 28 | //#define DEBUG_CONSOLE |
| 27 | #define DEFAULT_BACKSCROLL 512 | 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
| @@ -20,6 +20,10 @@ | @@ -20,6 +20,10 @@ | ||
| 20 | #ifndef CPU_DEFS_H | 20 | #ifndef CPU_DEFS_H |
| 21 | #define CPU_DEFS_H | 21 | #define CPU_DEFS_H |
| 22 | 22 | ||
| 23 | +#ifndef NEED_CPU_H | ||
| 24 | +#error cpu.h included from common code | ||
| 25 | +#endif | ||
| 26 | + | ||
| 23 | #include "config.h" | 27 | #include "config.h" |
| 24 | #include <setjmp.h> | 28 | #include <setjmp.h> |
| 25 | #include <inttypes.h> | 29 | #include <inttypes.h> |
gdbstub.c
| @@ -29,7 +29,10 @@ | @@ -29,7 +29,10 @@ | ||
| 29 | 29 | ||
| 30 | #include "qemu.h" | 30 | #include "qemu.h" |
| 31 | #else | 31 | #else |
| 32 | -#include "vl.h" | 32 | +#include "qemu-common.h" |
| 33 | +#include "qemu-char.h" | ||
| 34 | +#include "sysemu.h" | ||
| 35 | +#include "gdbstub.h" | ||
| 33 | #endif | 36 | #endif |
| 34 | 37 | ||
| 35 | #include "qemu_socket.h" | 38 | #include "qemu_socket.h" |
hw/acpi.c
| @@ -16,7 +16,13 @@ | @@ -16,7 +16,13 @@ | ||
| 16 | * License along with this library; if not, write to the Free Software | 16 | * License along with this library; if not, write to the Free Software |
| 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 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 | //#define DEBUG | 27 | //#define DEBUG |
| 22 | 28 |
hw/adb.c
| @@ -21,7 +21,9 @@ | @@ -21,7 +21,9 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "ppc_mac.h" | ||
| 26 | +#include "console.h" | ||
| 25 | 27 | ||
| 26 | /* ADB commands */ | 28 | /* ADB commands */ |
| 27 | #define ADB_BUSRESET 0x00 | 29 | #define ADB_BUSRESET 0x00 |
hw/adlib.c
hw/ads7846.c
| @@ -7,7 +7,9 @@ | @@ -7,7 +7,9 @@ | ||
| 7 | * This code is licensed under the GNU GPL v2. | 7 | * This code is licensed under the GNU GPL v2. |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | -#include <vl.h> | 10 | +#include "hw.h" |
| 11 | +#include "devices.h" | ||
| 12 | +#include "console.h" | ||
| 11 | 13 | ||
| 12 | struct ads7846_state_s { | 14 | struct ads7846_state_s { |
| 13 | qemu_irq interrupt; | 15 | qemu_irq interrupt; |
hw/an5206.c
| @@ -6,7 +6,10 @@ | @@ -6,7 +6,10 @@ | ||
| 6 | * This code is licenced under the GPL | 6 | * This code is licenced under the GPL |
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| 9 | -#include "vl.h" | 9 | +#include "hw.h" |
| 10 | +#include "mcf.h" | ||
| 11 | +#include "sysemu.h" | ||
| 12 | +#include "boards.h" | ||
| 10 | 13 | ||
| 11 | #define KERNEL_LOAD_ADDR 0x10000 | 14 | #define KERNEL_LOAD_ADDR 0x10000 |
| 12 | #define AN5206_MBAR_ADDR 0x10000000 | 15 | #define AN5206_MBAR_ADDR 0x10000000 |
hw/apb_pci.c
| @@ -26,7 +26,8 @@ | @@ -26,7 +26,8 @@ | ||
| 26 | Ultrasparc PCI host is called the PCI Bus Module (PBM). The APB is | 26 | Ultrasparc PCI host is called the PCI Bus Module (PBM). The APB is |
| 27 | the secondary PCI bridge. */ | 27 | the secondary PCI bridge. */ |
| 28 | 28 | ||
| 29 | -#include "vl.h" | 29 | +#include "hw.h" |
| 30 | +#include "pci.h" | ||
| 30 | typedef target_phys_addr_t pci_addr_t; | 31 | typedef target_phys_addr_t pci_addr_t; |
| 31 | #include "pci_host.h" | 32 | #include "pci_host.h" |
| 32 | 33 |
hw/apic.c
| @@ -17,7 +17,9 @@ | @@ -17,7 +17,9 @@ | ||
| 17 | * License along with this library; if not, write to the Free Software | 17 | * License along with this library; if not, write to the Free Software |
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 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 | //#define DEBUG_APIC | 24 | //#define DEBUG_APIC |
| 23 | //#define DEBUG_IOAPIC | 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 | * Copyright (c) 2006 CodeSourcery. | 4 | * Copyright (c) 2006 CodeSourcery. |
| 5 | * Written by Paul Brook | 5 | * Written by Paul Brook |
| 6 | * | 6 | * |
| 7 | * This code is licenced under the LGPL. | 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 | /* The CPU is also modeled as an interrupt controller. */ | 14 | /* The CPU is also modeled as an interrupt controller. */ |
| 18 | #define ARM_PIC_CPU_IRQ 0 | 15 | #define ARM_PIC_CPU_IRQ 0 |
| 19 | #define ARM_PIC_CPU_FIQ 1 | 16 | #define ARM_PIC_CPU_FIQ 1 |
| 20 | qemu_irq *arm_pic_init_cpu(CPUState *env); | 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
| @@ -7,7 +7,9 @@ | @@ -7,7 +7,9 @@ | ||
| 7 | * This code is licenced under the GPL. | 7 | * This code is licenced under the GPL. |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | -#include "vl.h" | 10 | +#include "hw.h" |
| 11 | +#include "arm-misc.h" | ||
| 12 | +#include "sysemu.h" | ||
| 11 | 13 | ||
| 12 | #define KERNEL_ARGS_ADDR 0x100 | 14 | #define KERNEL_ARGS_ADDR 0x100 |
| 13 | #define KERNEL_LOAD_ADDR 0x00010000 | 15 | #define KERNEL_LOAD_ADDR 0x00010000 |
hw/arm_pic.c
| @@ -7,8 +7,8 @@ | @@ -7,8 +7,8 @@ | ||
| 7 | * This code is licenced under the LGPL | 7 | * This code is licenced under the LGPL |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | -#include "vl.h" | ||
| 11 | -#include "arm_pic.h" | 10 | +#include "hw.h" |
| 11 | +#include "arm-misc.h" | ||
| 12 | 12 | ||
| 13 | /* Stub functions for hardware that doesn't exist. */ | 13 | /* Stub functions for hardware that doesn't exist. */ |
| 14 | void pic_info(void) | 14 | void pic_info(void) |
hw/arm_sysctl.c
| @@ -7,8 +7,9 @@ | @@ -7,8 +7,9 @@ | ||
| 7 | * This code is licenced under the GPL. | 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 "sysemu.h" | ||
| 12 | 13 | ||
| 13 | #define LOCK_VALUE 0xa05f | 14 | #define LOCK_VALUE 0xa05f |
| 14 | 15 |
hw/arm_timer.c
| @@ -7,8 +7,9 @@ | @@ -7,8 +7,9 @@ | ||
| 7 | * This code is licenced under the GPL. | 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 "qemu-timer.h" | ||
| 12 | 13 | ||
| 13 | /* Common timer implementation. */ | 14 | /* Common timer implementation. */ |
| 14 | 15 |
hw/armv7m.c
| @@ -7,7 +7,9 @@ | @@ -7,7 +7,9 @@ | ||
| 7 | * This code is licenced under the GPL. | 7 | * This code is licenced under the GPL. |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | -#include "vl.h" | 10 | +#include "hw.h" |
| 11 | +#include "arm-misc.h" | ||
| 12 | +#include "sysemu.h" | ||
| 11 | 13 | ||
| 12 | /* Bitbanded IO. Each word corresponds to a single bit. */ | 14 | /* Bitbanded IO. Each word corresponds to a single bit. */ |
| 13 | 15 |
hw/armv7m_nvic.c
| @@ -10,8 +10,9 @@ | @@ -10,8 +10,9 @@ | ||
| 10 | * NVIC. Much of that is also implemented here. | 10 | * NVIC. Much of that is also implemented here. |
| 11 | */ | 11 | */ |
| 12 | 12 | ||
| 13 | -#include "vl.h" | ||
| 14 | -#include "arm_pic.h" | 13 | +#include "hw.h" |
| 14 | +#include "qemu-timer.h" | ||
| 15 | +#include "arm-misc.h" | ||
| 15 | 16 | ||
| 16 | #define GIC_NIRQ 64 | 17 | #define GIC_NIRQ 64 |
| 17 | #define NCPU 1 | 18 | #define NCPU 1 |
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
| @@ -25,7 +25,8 @@ | @@ -25,7 +25,8 @@ | ||
| 25 | /* ??? Most of the ATAPI emulation is still in ide.c. It should be moved | 25 | /* ??? Most of the ATAPI emulation is still in ide.c. It should be moved |
| 26 | here. */ | 26 | here. */ |
| 27 | 27 | ||
| 28 | -#include <vl.h> | 28 | +#include "qemu-common.h" |
| 29 | +#include "scsi-disk.h" | ||
| 29 | 30 | ||
| 30 | static void lba_to_msf(uint8_t *buf, int lba) | 31 | static void lba_to_msf(uint8_t *buf, int lba) |
| 31 | { | 32 | { |
hw/cirrus_vga.c
| @@ -26,7 +26,10 @@ | @@ -26,7 +26,10 @@ | ||
| 26 | * Reference: Finn Thogersons' VGADOC4b | 26 | * Reference: Finn Thogersons' VGADOC4b |
| 27 | * available at http://home.worldonline.dk/~finth/ | 27 | * available at http://home.worldonline.dk/~finth/ |
| 28 | */ | 28 | */ |
| 29 | -#include "vl.h" | 29 | +#include "hw.h" |
| 30 | +#include "pc.h" | ||
| 31 | +#include "pci.h" | ||
| 32 | +#include "console.h" | ||
| 30 | #include "vga_int.h" | 33 | #include "vga_int.h" |
| 31 | 34 | ||
| 32 | /* | 35 | /* |
hw/cs4231.c
| @@ -21,7 +21,8 @@ | @@ -21,7 +21,8 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "sun4m.h" | ||
| 25 | 26 | ||
| 26 | /* debug CS4231 */ | 27 | /* debug CS4231 */ |
| 27 | //#define DEBUG_CS | 28 | //#define DEBUG_CS |
hw/cuda.c
| @@ -22,8 +22,10 @@ | @@ -22,8 +22,10 @@ | ||
| 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | * THE SOFTWARE. | 23 | * THE SOFTWARE. |
| 24 | */ | 24 | */ |
| 25 | -#include "vl.h" | 25 | +#include "hw.h" |
| 26 | #include "ppc_mac.h" | 26 | #include "ppc_mac.h" |
| 27 | +#include "qemu-timer.h" | ||
| 28 | +#include "sysemu.h" | ||
| 27 | 29 | ||
| 28 | /* XXX: implement all timer modes */ | 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
| @@ -21,7 +21,8 @@ | @@ -21,7 +21,8 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "isa.h" | ||
| 25 | 26 | ||
| 26 | /* #define DEBUG_DMA */ | 27 | /* #define DEBUG_DMA */ |
| 27 | 28 |
hw/ds1225y.c
hw/dummy_m68k.c
hw/ecc.c
| @@ -8,7 +8,8 @@ | @@ -8,7 +8,8 @@ | ||
| 8 | * This code is licensed under the GNU GPL v2. | 8 | * This code is licensed under the GNU GPL v2. |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | -#include "vl.h" | 11 | +#include "hw.h" |
| 12 | +#include "flash.h" | ||
| 12 | 13 | ||
| 13 | /* | 14 | /* |
| 14 | * Pre-calculated 256-way 1 byte column parity. Table borrowed from Linux. | 15 | * Pre-calculated 256-way 1 byte column parity. Table borrowed from Linux. |
hw/eepro100.c
| @@ -40,7 +40,9 @@ | @@ -40,7 +40,9 @@ | ||
| 40 | 40 | ||
| 41 | #include <assert.h> | 41 | #include <assert.h> |
| 42 | #include <stddef.h> /* offsetof */ | 42 | #include <stddef.h> /* offsetof */ |
| 43 | -#include "vl.h" | 43 | +#include "hw.h" |
| 44 | +#include "pci.h" | ||
| 45 | +#include "net.h" | ||
| 44 | #include "eeprom93xx.h" | 46 | #include "eeprom93xx.h" |
| 45 | 47 | ||
| 46 | /* Common declarations for all PCI devices. */ | 48 | /* Common declarations for all PCI devices. */ |
hw/eeprom93xx.c
hw/eeprom93xx.h
| @@ -21,8 +21,6 @@ | @@ -21,8 +21,6 @@ | ||
| 21 | #ifndef EEPROM93XX_H | 21 | #ifndef EEPROM93XX_H |
| 22 | #define EEPROM93XX_H | 22 | #define EEPROM93XX_H |
| 23 | 23 | ||
| 24 | -#include "vl.h" | ||
| 25 | - | ||
| 26 | typedef struct _eeprom_t eeprom_t; | 24 | typedef struct _eeprom_t eeprom_t; |
| 27 | 25 | ||
| 28 | /* Create a new EEPROM with (nwords * 2) bytes. */ | 26 | /* Create a new EEPROM with (nwords * 2) bytes. */ |
hw/es1370.c
| @@ -26,7 +26,10 @@ | @@ -26,7 +26,10 @@ | ||
| 26 | /* #define VERBOSE_ES1370 */ | 26 | /* #define VERBOSE_ES1370 */ |
| 27 | #define SILENT_ES1370 | 27 | #define SILENT_ES1370 |
| 28 | 28 | ||
| 29 | -#include "vl.h" | 29 | +#include "hw.h" |
| 30 | +#include "audiodev.h" | ||
| 31 | +#include "audio/audio.h" | ||
| 32 | +#include "pci.h" | ||
| 30 | 33 | ||
| 31 | /* Missing stuff: | 34 | /* Missing stuff: |
| 32 | SCTRL_P[12](END|ST)INC | 35 | SCTRL_P[12](END|ST)INC |
hw/esp.c
| @@ -21,7 +21,12 @@ | @@ -21,7 +21,12 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | /* debug ESP card */ | 31 | /* debug ESP card */ |
| 27 | //#define DEBUG_ESP | 32 | //#define DEBUG_ESP |
hw/etraxfs.c
hw/etraxfs_ser.c
| @@ -24,7 +24,7 @@ | @@ -24,7 +24,7 @@ | ||
| 24 | 24 | ||
| 25 | #include <stdio.h> | 25 | #include <stdio.h> |
| 26 | #include <ctype.h> | 26 | #include <ctype.h> |
| 27 | -#include "vl.h" | 27 | +#include "hw.h" |
| 28 | 28 | ||
| 29 | #define RW_TR_DMA_EN 0xb0026004 | 29 | #define RW_TR_DMA_EN 0xb0026004 |
| 30 | #define RW_DOUT 0xb002601c | 30 | #define RW_DOUT 0xb002601c |
hw/etraxfs_timer.c
| @@ -23,7 +23,8 @@ | @@ -23,7 +23,8 @@ | ||
| 23 | */ | 23 | */ |
| 24 | #include <stdio.h> | 24 | #include <stdio.h> |
| 25 | #include <sys/time.h> | 25 | #include <sys/time.h> |
| 26 | -#include "vl.h" | 26 | +#include "hw.h" |
| 27 | +#include "qemu-timer.h" | ||
| 27 | 28 | ||
| 28 | void etrax_ack_irq(CPUState *env, uint32_t mask); | 29 | void etrax_ack_irq(CPUState *env, uint32_t mask); |
| 29 | 30 |
hw/fdc.c
| @@ -25,7 +25,11 @@ | @@ -25,7 +25,11 @@ | ||
| 25 | * The controller is used in Sun4m systems in a slightly different | 25 | * The controller is used in Sun4m systems in a slightly different |
| 26 | * way. There are changes in DOR register and DMA is not available. | 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 | /* debug Floppy devices */ | 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
| @@ -23,8 +23,10 @@ | @@ -23,8 +23,10 @@ | ||
| 23 | * THE SOFTWARE. | 23 | * THE SOFTWARE. |
| 24 | */ | 24 | */ |
| 25 | 25 | ||
| 26 | -#include "vl.h" | 26 | +#include "hw.h" |
| 27 | #include "ppc_mac.h" | 27 | #include "ppc_mac.h" |
| 28 | +#include "pci.h" | ||
| 29 | + | ||
| 28 | typedef target_phys_addr_t pci_addr_t; | 30 | typedef target_phys_addr_t pci_addr_t; |
| 29 | #include "pci_host.h" | 31 | #include "pci_host.h" |
| 30 | 32 |
hw/gt64xxx.c
| @@ -22,7 +22,10 @@ | @@ -22,7 +22,10 @@ | ||
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | 24 | ||
| 25 | -#include "vl.h" | 25 | +#include "hw.h" |
| 26 | +#include "mips.h" | ||
| 27 | +#include "pci.h" | ||
| 28 | +#include "pc.h" | ||
| 26 | 29 | ||
| 27 | typedef target_phys_addr_t pci_addr_t; | 30 | typedef target_phys_addr_t pci_addr_t; |
| 28 | #include "pci_host.h" | 31 | #include "pci_host.h" |
hw/gumstix.c
| @@ -8,7 +8,13 @@ | @@ -8,7 +8,13 @@ | ||
| 8 | * This code is licensed under the GNU GPL v2. | 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 | /* Board init. */ | 19 | /* Board init. */ |
| 14 | enum gumstix_model_e { connex }; | 20 | enum gumstix_model_e { connex }; |
hw/heathrow_pic.c
| @@ -22,7 +22,7 @@ | @@ -22,7 +22,7 @@ | ||
| 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | * THE SOFTWARE. | 23 | * THE SOFTWARE. |
| 24 | */ | 24 | */ |
| 25 | -#include "vl.h" | 25 | +#include "hw.h" |
| 26 | #include "ppc_mac.h" | 26 | #include "ppc_mac.h" |
| 27 | 27 | ||
| 28 | //#define DEBUG | 28 | //#define DEBUG |
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 +7,8 @@ | ||
| 7 | * This code is licenced under the LGPL. | 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 | struct i2c_bus | 13 | struct i2c_bus |
| 13 | { | 14 | { |
| @@ -30,7 +31,7 @@ i2c_slave *i2c_slave_init(i2c_bus *bus, int address, int size) | @@ -30,7 +31,7 @@ i2c_slave *i2c_slave_init(i2c_bus *bus, int address, int size) | ||
| 30 | i2c_slave *dev; | 31 | i2c_slave *dev; |
| 31 | 32 | ||
| 32 | if (size < sizeof(i2c_slave)) | 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 | dev = (i2c_slave *)qemu_mallocz(size); | 36 | dev = (i2c_slave *)qemu_mallocz(size); |
| 36 | dev->address = address; | 37 | dev->address = address; |
hw/i2c.h
| @@ -13,8 +13,6 @@ enum i2c_event { | @@ -13,8 +13,6 @@ enum i2c_event { | ||
| 13 | I2C_NACK /* Masker NACKed a receive byte. */ | 13 | I2C_NACK /* Masker NACKed a receive byte. */ |
| 14 | }; | 14 | }; |
| 15 | 15 | ||
| 16 | -typedef struct i2c_slave i2c_slave; | ||
| 17 | - | ||
| 18 | /* Master to slave. */ | 16 | /* Master to slave. */ |
| 19 | typedef int (*i2c_send_cb)(i2c_slave *s, uint8_t data); | 17 | typedef int (*i2c_send_cb)(i2c_slave *s, uint8_t data); |
| 20 | /* Slave to master. */ | 18 | /* Slave to master. */ |
| @@ -34,8 +32,6 @@ struct i2c_slave | @@ -34,8 +32,6 @@ struct i2c_slave | ||
| 34 | void *next; | 32 | void *next; |
| 35 | }; | 33 | }; |
| 36 | 34 | ||
| 37 | -typedef struct i2c_bus i2c_bus; | ||
| 38 | - | ||
| 39 | i2c_bus *i2c_init_bus(void); | 35 | i2c_bus *i2c_init_bus(void); |
| 40 | i2c_slave *i2c_slave_init(i2c_bus *bus, int address, int size); | 36 | i2c_slave *i2c_slave_init(i2c_bus *bus, int address, int size); |
| 41 | void i2c_set_slave_address(i2c_slave *dev, int address); | 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,6 +46,14 @@ void i2c_bus_load(QEMUFile *f, i2c_bus *bus); | ||
| 50 | void i2c_slave_save(QEMUFile *f, i2c_slave *dev); | 46 | void i2c_slave_save(QEMUFile *f, i2c_slave *dev); |
| 51 | void i2c_slave_load(QEMUFile *f, i2c_slave *dev); | 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 | /* max7310.c */ | 57 | /* max7310.c */ |
| 54 | i2c_slave *max7310_init(i2c_bus *bus); | 58 | i2c_slave *max7310_init(i2c_bus *bus); |
| 55 | void max7310_reset(i2c_slave *i2c); | 59 | void max7310_reset(i2c_slave *i2c); |
| @@ -64,4 +68,7 @@ void wm8750_data_req_set(i2c_slave *i2c, | @@ -64,4 +68,7 @@ void wm8750_data_req_set(i2c_slave *i2c, | ||
| 64 | void wm8750_dac_dat(void *opaque, uint32_t sample); | 68 | void wm8750_dac_dat(void *opaque, uint32_t sample); |
| 65 | uint32_t wm8750_adc_dat(void *opaque); | 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 | #endif | 74 | #endif |
hw/i8254.c
| @@ -21,7 +21,10 @@ | @@ -21,7 +21,10 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "pc.h" | ||
| 26 | +#include "isa.h" | ||
| 27 | +#include "qemu-timer.h" | ||
| 25 | 28 | ||
| 26 | //#define DEBUG_PIT | 29 | //#define DEBUG_PIT |
| 27 | 30 |
hw/i8259.c
| @@ -21,7 +21,10 @@ | @@ -21,7 +21,10 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | /* debug PIC */ | 29 | /* debug PIC */ |
| 27 | //#define DEBUG_PIC | 30 | //#define DEBUG_PIC |
hw/ide.c
| @@ -22,7 +22,14 @@ | @@ -22,7 +22,14 @@ | ||
| 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | * THE SOFTWARE. | 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 | /* debug IDE devices */ | 34 | /* debug IDE devices */ |
| 28 | //#define DEBUG_IDE | 35 | //#define DEBUG_IDE |
hw/integratorcp.c
| @@ -7,8 +7,13 @@ | @@ -7,8 +7,13 @@ | ||
| 7 | * This code is licenced under the GPL | 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 | void DMA_run (void) | 18 | void DMA_run (void) |
| 14 | { | 19 | { |
hw/iommu.c
| @@ -21,7 +21,8 @@ | @@ -21,7 +21,8 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "sun4m.h" | ||
| 25 | 26 | ||
| 26 | /* debug iommu */ | 27 | /* debug iommu */ |
| 27 | //#define DEBUG_IOMMU | 28 | //#define DEBUG_IOMMU |
hw/irq.c
| @@ -21,7 +21,8 @@ | @@ -21,7 +21,8 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "qemu-common.h" |
| 25 | +#include "irq.h" | ||
| 25 | 26 | ||
| 26 | struct IRQState { | 27 | struct IRQState { |
| 27 | qemu_irq_handler handler; | 28 | qemu_irq_handler handler; |
hw/irq.h
| 1 | +#ifndef QEMU_IRQ_H | ||
| 2 | +#define QEMU_IRQ_H | ||
| 3 | + | ||
| 1 | /* Generic IRQ/GPIO pin infrastructure. */ | 4 | /* Generic IRQ/GPIO pin infrastructure. */ |
| 2 | 5 | ||
| 6 | +/* FIXME: Rmove one of these. */ | ||
| 3 | typedef void (*qemu_irq_handler)(void *opaque, int n, int level); | 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 | void qemu_set_irq(qemu_irq irq, int level); | 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,3 +24,5 @@ qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n); | ||
| 21 | 24 | ||
| 22 | /* Returns a new IRQ with opposite polarity. */ | 25 | /* Returns a new IRQ with opposite polarity. */ |
| 23 | qemu_irq qemu_irq_invert(qemu_irq irq); | 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
| @@ -22,7 +22,8 @@ | @@ -22,7 +22,8 @@ | ||
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | 24 | ||
| 25 | -#include "vl.h" | 25 | +#include "hw.h" |
| 26 | +#include "isa.h" | ||
| 26 | 27 | ||
| 27 | static void isa_mmio_writeb (void *opaque, target_phys_addr_t addr, | 28 | static void isa_mmio_writeb (void *opaque, target_phys_addr_t addr, |
| 28 | uint32_t val) | 29 | uint32_t val) |
hw/jazz_led.c
hw/lsi53c895a.c
| @@ -10,7 +10,9 @@ | @@ -10,7 +10,9 @@ | ||
| 10 | /* ??? Need to check if the {read,write}[wl] routines work properly on | 10 | /* ??? Need to check if the {read,write}[wl] routines work properly on |
| 11 | big-endian targets. */ | 11 | big-endian targets. */ |
| 12 | 12 | ||
| 13 | -#include "vl.h" | 13 | +#include "hw.h" |
| 14 | +#include "pci.h" | ||
| 15 | +#include "scsi-disk.h" | ||
| 14 | 16 | ||
| 15 | //#define DEBUG_LSI | 17 | //#define DEBUG_LSI |
| 16 | //#define DEBUG_LSI_REG | 18 | //#define DEBUG_LSI_REG |
hw/m48t59.c
| @@ -21,8 +21,11 @@ | @@ -21,8 +21,11 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | //#define DEBUG_NVRAM | 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
| @@ -22,7 +22,7 @@ | @@ -22,7 +22,7 @@ | ||
| 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | * THE SOFTWARE. | 23 | * THE SOFTWARE. |
| 24 | */ | 24 | */ |
| 25 | -#include "vl.h" | 25 | +#include "hw.h" |
| 26 | #include "ppc_mac.h" | 26 | #include "ppc_mac.h" |
| 27 | 27 | ||
| 28 | /* DBDMA: currently no op - should suffice right now */ | 28 | /* DBDMA: currently no op - should suffice right now */ |
hw/mac_nvram.c
| @@ -22,7 +22,7 @@ | @@ -22,7 +22,7 @@ | ||
| 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | * THE SOFTWARE. | 23 | * THE SOFTWARE. |
| 24 | */ | 24 | */ |
| 25 | -#include "vl.h" | 25 | +#include "hw.h" |
| 26 | #include "ppc_mac.h" | 26 | #include "ppc_mac.h" |
| 27 | 27 | ||
| 28 | struct MacIONVRAMState { | 28 | struct MacIONVRAMState { |
hw/macio.c
| @@ -22,8 +22,9 @@ | @@ -22,8 +22,9 @@ | ||
| 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | * THE SOFTWARE. | 23 | * THE SOFTWARE. |
| 24 | */ | 24 | */ |
| 25 | -#include "vl.h" | 25 | +#include "hw.h" |
| 26 | #include "ppc_mac.h" | 26 | #include "ppc_mac.h" |
| 27 | +#include "pci.h" | ||
| 27 | 28 | ||
| 28 | typedef struct macio_state_t macio_state_t; | 29 | typedef struct macio_state_t macio_state_t; |
| 29 | struct macio_state_t { | 30 | struct macio_state_t { |
hw/max111x.c
hw/max7310.c
| @@ -7,7 +7,8 @@ | @@ -7,7 +7,8 @@ | ||
| 7 | * This file is licensed under GNU GPL. | 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 | struct max7310_s { | 13 | struct max7310_s { |
| 13 | i2c_slave i2c; | 14 | i2c_slave i2c; |
| @@ -182,7 +183,7 @@ static void max7310_gpio_set(void *opaque, int line, int level) | @@ -182,7 +183,7 @@ static void max7310_gpio_set(void *opaque, int line, int level) | ||
| 182 | { | 183 | { |
| 183 | struct max7310_s *s = (struct max7310_s *) opaque; | 184 | struct max7310_s *s = (struct max7310_s *) opaque; |
| 184 | if (line >= sizeof(s->handler) / sizeof(*s->handler) || line < 0) | 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 | if (level) | 188 | if (level) |
| 188 | s->level |= s->direction & (1 << line); | 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,7 +221,7 @@ void max7310_gpio_out_set(i2c_slave *i2c, int line, qemu_irq handler) | ||
| 220 | { | 221 | { |
| 221 | struct max7310_s *s = (struct max7310_s *) i2c; | 222 | struct max7310_s *s = (struct max7310_s *) i2c; |
| 222 | if (line >= sizeof(s->handler) / sizeof(*s->handler) || line < 0) | 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 | s->handler[line] = handler; | 226 | s->handler[line] = handler; |
| 226 | } | 227 | } |
hw/mc146818rtc.c
| @@ -21,7 +21,11 @@ | @@ -21,7 +21,11 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | //#define DEBUG_CMOS | 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
| @@ -5,7 +5,10 @@ | @@ -5,7 +5,10 @@ | ||
| 5 | * | 5 | * |
| 6 | * This code is licenced under the GPL | 6 | * This code is licenced under the GPL |
| 7 | */ | 7 | */ |
| 8 | -#include "vl.h" | 8 | +#include "hw.h" |
| 9 | +#include "mcf.h" | ||
| 10 | +#include "qemu-timer.h" | ||
| 11 | +#include "sysemu.h" | ||
| 9 | 12 | ||
| 10 | /* General purpose timer module. */ | 13 | /* General purpose timer module. */ |
| 11 | typedef struct { | 14 | typedef struct { |
hw/mcf5208.c
| @@ -5,7 +5,12 @@ | @@ -5,7 +5,12 @@ | ||
| 5 | * | 5 | * |
| 6 | * This code is licenced under the GPL | 6 | * This code is licenced under the GPL |
| 7 | */ | 7 | */ |
| 8 | -#include "vl.h" | 8 | +#include "hw.h" |
| 9 | +#include "mcf.h" | ||
| 10 | +#include "qemu-timer.h" | ||
| 11 | +#include "sysemu.h" | ||
| 12 | +#include "net.h" | ||
| 13 | +#include "boards.h" | ||
| 9 | 14 | ||
| 10 | #define SYS_FREQ 66000000 | 15 | #define SYS_FREQ 66000000 |
| 11 | 16 |
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,7 +22,17 @@ | ||
| 22 | * THE SOFTWARE. | 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 | #ifdef TARGET_WORDS_BIGENDIAN | 37 | #ifdef TARGET_WORDS_BIGENDIAN |
| 28 | #define BIOS_FILENAME "mips_bios.bin" | 38 | #define BIOS_FILENAME "mips_bios.bin" |
hw/mips_mipssim.c
| @@ -24,7 +24,13 @@ | @@ -24,7 +24,13 @@ | ||
| 24 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 24 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 25 | * THE SOFTWARE. | 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 | #ifdef TARGET_WORDS_BIGENDIAN | 35 | #ifdef TARGET_WORDS_BIGENDIAN |
| 30 | #define BIOS_FILENAME "mips_bios.bin" | 36 | #define BIOS_FILENAME "mips_bios.bin" |
hw/mips_pica61.c
| @@ -22,7 +22,13 @@ | @@ -22,7 +22,13 @@ | ||
| 22 | * THE SOFTWARE. | 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 | #ifdef TARGET_WORDS_BIGENDIAN | 33 | #ifdef TARGET_WORDS_BIGENDIAN |
| 28 | #define BIOS_FILENAME "mips_bios.bin" | 34 | #define BIOS_FILENAME "mips_bios.bin" |
hw/mips_r4k.c
| @@ -7,7 +7,13 @@ | @@ -7,7 +7,13 @@ | ||
| 7 | * All peripherial devices are attached to this "bus" with | 7 | * All peripherial devices are attached to this "bus" with |
| 8 | * the standard PC ISA addresses. | 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 | #ifdef TARGET_WORDS_BIGENDIAN | 18 | #ifdef TARGET_WORDS_BIGENDIAN |
| 13 | #define BIOS_FILENAME "mips_bios.bin" | 19 | #define BIOS_FILENAME "mips_bios.bin" |
hw/mips_timer.c
hw/mipsnet.c
hw/mpcore.c
| @@ -7,7 +7,9 @@ | @@ -7,7 +7,9 @@ | ||
| 7 | * This code is licenced under the GPL. | 7 | * This code is licenced under the GPL. |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | -#include "vl.h" | 10 | +#include "hw.h" |
| 11 | +#include "qemu-timer.h" | ||
| 12 | +#include "primecell.h" | ||
| 11 | 13 | ||
| 12 | #define MPCORE_PRIV_BASE 0x10100000 | 14 | #define MPCORE_PRIV_BASE 0x10100000 |
| 13 | #define NCPU 4 | 15 | #define NCPU 4 |
hw/nand.c
| @@ -11,7 +11,11 @@ | @@ -11,7 +11,11 @@ | ||
| 11 | 11 | ||
| 12 | #ifndef NAND_IO | 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 | # define NAND_CMD_READ0 0x00 | 20 | # define NAND_CMD_READ0 0x00 |
| 17 | # define NAND_CMD_READ1 0x01 | 21 | # define NAND_CMD_READ1 0x01 |
hw/ne2000.c
| @@ -21,7 +21,9 @@ | @@ -21,7 +21,9 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "pci.h" | ||
| 26 | +#include "net.h" | ||
| 25 | 27 | ||
| 26 | /* debug NE2000 card */ | 28 | /* debug NE2000 card */ |
| 27 | //#define DEBUG_NE2000 | 29 | //#define DEBUG_NE2000 |
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,8 +18,13 @@ | ||
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
| 19 | * MA 02111-1307 USA | 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 | /* Should signal the TCMI */ | 29 | /* Should signal the TCMI */ |
| 25 | uint32_t omap_badwidth_read8(void *opaque, target_phys_addr_t addr) | 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,7 +4721,7 @@ struct omap_mpu_state_s *omap310_mpu_init(unsigned long sdram_size, | ||
| 4716 | omap_dpll_init(&s->dpll[1], 0xfffed000, omap_findclk(s, "dpll2")); | 4721 | omap_dpll_init(&s->dpll[1], 0xfffed000, omap_findclk(s, "dpll2")); |
| 4717 | omap_dpll_init(&s->dpll[2], 0xfffed100, omap_findclk(s, "dpll3")); | 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 | &s->drq[OMAP_DMA_MMC_TX], omap_findclk(s, "mmc_ck")); | 4725 | &s->drq[OMAP_DMA_MMC_TX], omap_findclk(s, "mmc_ck")); |
| 4721 | 4726 | ||
| 4722 | s->mpuio = omap_mpuio_init(0xfffb5000, | 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,6 +513,7 @@ struct omap_lcd_panel_s *omap_lcdc_init(target_phys_addr_t base, qemu_irq irq, | ||
| 513 | /* omap_mmc.c */ | 513 | /* omap_mmc.c */ |
| 514 | struct omap_mmc_s; | 514 | struct omap_mmc_s; |
| 515 | struct omap_mmc_s *omap_mmc_init(target_phys_addr_t base, | 515 | struct omap_mmc_s *omap_mmc_init(target_phys_addr_t base, |
| 516 | + BlockDriverState *bd, | ||
| 516 | qemu_irq irq, qemu_irq dma[], omap_clk clk); | 517 | qemu_irq irq, qemu_irq dma[], omap_clk clk); |
| 517 | void omap_mmc_reset(struct omap_mmc_s *s); | 518 | void omap_mmc_reset(struct omap_mmc_s *s); |
| 518 | void omap_mmc_handlers(struct omap_mmc_s *s, qemu_irq ro, qemu_irq cover); | 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,4 +789,10 @@ inline static int debug_register_io_memory(int io_index, | ||
| 788 | # define cpu_register_io_memory debug_register_io_memory | 789 | # define cpu_register_io_memory debug_register_io_memory |
| 789 | # endif | 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 | #endif /* hw_omap_h */ | 798 | #endif /* hw_omap_h */ |
hw/omap1_clk.c
| @@ -20,7 +20,8 @@ | @@ -20,7 +20,8 @@ | ||
| 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
| 21 | * MA 02111-1307 USA | 21 | * MA 02111-1307 USA |
| 22 | */ | 22 | */ |
| 23 | -#include "vl.h" | 23 | +#include "hw.h" |
| 24 | +#include "omap.h" | ||
| 24 | 25 | ||
| 25 | struct clk { | 26 | struct clk { |
| 26 | const char *name; | 27 | const char *name; |
hw/omap_i2c.c
| @@ -18,7 +18,9 @@ | @@ -18,7 +18,9 @@ | ||
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
| 19 | * MA 02111-1307 USA | 19 | * MA 02111-1307 USA |
| 20 | */ | 20 | */ |
| 21 | -#include "vl.h" | 21 | +#include "hw.h" |
| 22 | +#include "i2c.h" | ||
| 23 | +#include "omap.h" | ||
| 22 | 24 | ||
| 23 | struct omap_i2c_s { | 25 | struct omap_i2c_s { |
| 24 | target_phys_addr_t base; | 26 | target_phys_addr_t base; |
hw/omap_lcdc.c
| @@ -18,7 +18,9 @@ | @@ -18,7 +18,9 @@ | ||
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
| 19 | * MA 02111-1307 USA | 19 | * MA 02111-1307 USA |
| 20 | */ | 20 | */ |
| 21 | -#include "vl.h" | 21 | +#include "hw.h" |
| 22 | +#include "console.h" | ||
| 23 | +#include "omap.h" | ||
| 22 | 24 | ||
| 23 | struct omap_lcd_panel_s { | 25 | struct omap_lcd_panel_s { |
| 24 | target_phys_addr_t base; | 26 | target_phys_addr_t base; |
hw/omap_mmc.c
| @@ -18,7 +18,8 @@ | @@ -18,7 +18,8 @@ | ||
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
| 19 | * MA 02111-1307 USA | 19 | * MA 02111-1307 USA |
| 20 | */ | 20 | */ |
| 21 | -#include "vl.h" | 21 | +#include "hw.h" |
| 22 | +#include "omap.h" | ||
| 22 | #include "sd.h" | 23 | #include "sd.h" |
| 23 | 24 | ||
| 24 | struct omap_mmc_s { | 25 | struct omap_mmc_s { |
| @@ -507,6 +508,7 @@ void omap_mmc_reset(struct omap_mmc_s *host) | @@ -507,6 +508,7 @@ void omap_mmc_reset(struct omap_mmc_s *host) | ||
| 507 | } | 508 | } |
| 508 | 509 | ||
| 509 | struct omap_mmc_s *omap_mmc_init(target_phys_addr_t base, | 510 | struct omap_mmc_s *omap_mmc_init(target_phys_addr_t base, |
| 511 | + BlockDriverState *bd, | ||
| 510 | qemu_irq irq, qemu_irq dma[], omap_clk clk) | 512 | qemu_irq irq, qemu_irq dma[], omap_clk clk) |
| 511 | { | 513 | { |
| 512 | int iomemtype; | 514 | int iomemtype; |
| @@ -523,7 +525,7 @@ struct omap_mmc_s *omap_mmc_init(target_phys_addr_t base, | @@ -523,7 +525,7 @@ struct omap_mmc_s *omap_mmc_init(target_phys_addr_t base, | ||
| 523 | cpu_register_physical_memory(s->base, 0x800, iomemtype); | 525 | cpu_register_physical_memory(s->base, 0x800, iomemtype); |
| 524 | 526 | ||
| 525 | /* Instantiate the storage */ | 527 | /* Instantiate the storage */ |
| 526 | - s->card = sd_init(sd_bdrv); | 528 | + s->card = sd_init(bd); |
| 527 | 529 | ||
| 528 | return s; | 530 | return s; |
| 529 | } | 531 | } |
hw/openpic.c
| @@ -32,7 +32,9 @@ | @@ -32,7 +32,9 @@ | ||
| 32 | * Serial interrupts, as implemented in Raven chipset are not supported yet. | 32 | * Serial interrupts, as implemented in Raven chipset are not supported yet. |
| 33 | * | 33 | * |
| 34 | */ | 34 | */ |
| 35 | -#include "vl.h" | 35 | +#include "hw.h" |
| 36 | +#include "ppc_mac.h" | ||
| 37 | +#include "pci.h" | ||
| 36 | 38 | ||
| 37 | //#define DEBUG_OPENPIC | 39 | //#define DEBUG_OPENPIC |
| 38 | 40 |
hw/palm.c
| @@ -18,7 +18,13 @@ | @@ -18,7 +18,13 @@ | ||
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
| 19 | * MA 02111-1307 USA | 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 | static uint32_t static_readb(void *opaque, target_phys_addr_t offset) | 29 | static uint32_t static_readb(void *opaque, target_phys_addr_t offset) |
| 24 | { | 30 | { |
hw/parallel.c
| @@ -22,7 +22,10 @@ | @@ -22,7 +22,10 @@ | ||
| 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | * THE SOFTWARE. | 23 | * THE SOFTWARE. |
| 24 | */ | 24 | */ |
| 25 | -#include "vl.h" | 25 | +#include "hw.h" |
| 26 | +#include "qemu-char.h" | ||
| 27 | +#include "isa.h" | ||
| 28 | +#include "pc.h" | ||
| 26 | 29 | ||
| 27 | //#define DEBUG_PARALLEL | 30 | //#define DEBUG_PARALLEL |
| 28 | 31 |
hw/pc.c
| @@ -21,7 +21,16 @@ | @@ -21,7 +21,16 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | /* output Bochs bios info messages */ | 35 | /* output Bochs bios info messages */ |
| 27 | //#define DEBUG_BIOS | 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
| @@ -21,7 +21,10 @@ | @@ -21,7 +21,10 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "pci.h" | ||
| 26 | +#include "console.h" | ||
| 27 | +#include "net.h" | ||
| 25 | 28 | ||
| 26 | //#define DEBUG_PCI | 29 | //#define DEBUG_PCI |
| 27 | 30 |
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,7 +21,11 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | /* debug PC keyboard */ | 30 | /* debug PC keyboard */ |
| 27 | //#define DEBUG_KBD | 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,7 +35,10 @@ | ||
| 35 | * http://www.ibiblio.org/pub/historic-linux/early-ports/Sparc/NCR/NCR92C990.txt | 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 | //#define PCNET_DEBUG | 43 | //#define PCNET_DEBUG |
| 41 | //#define PCNET_DEBUG_IO | 44 | //#define PCNET_DEBUG_IO |
| @@ -2008,6 +2011,7 @@ void pci_pcnet_init(PCIBus *bus, NICInfo *nd, int devfn) | @@ -2008,6 +2011,7 @@ void pci_pcnet_init(PCIBus *bus, NICInfo *nd, int devfn) | ||
| 2008 | /* SPARC32 interface */ | 2011 | /* SPARC32 interface */ |
| 2009 | 2012 | ||
| 2010 | #if defined (TARGET_SPARC) && !defined(TARGET_SPARC64) // Avoid compile failure | 2013 | #if defined (TARGET_SPARC) && !defined(TARGET_SPARC64) // Avoid compile failure |
| 2014 | +#include "sun4m.h" | ||
| 2011 | 2015 | ||
| 2012 | static void parent_lance_reset(void *opaque, int irq, int level) | 2016 | static void parent_lance_reset(void *opaque, int irq, int level) |
| 2013 | { | 2017 | { |
hw/pcspk.c
| @@ -22,7 +22,11 @@ | @@ -22,7 +22,11 @@ | ||
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | 24 | ||
| 25 | -#include "vl.h" | 25 | +#include "hw.h" |
| 26 | +#include "pc.h" | ||
| 27 | +#include "isa.h" | ||
| 28 | +#include "audio/audio.h" | ||
| 29 | +#include "qemu-timer.h" | ||
| 26 | 30 | ||
| 27 | #define PCSPK_BUF_LEN 1792 | 31 | #define PCSPK_BUF_LEN 1792 |
| 28 | #define PCSPK_SAMPLE_RATE 32000 | 32 | #define PCSPK_SAMPLE_RATE 32000 |
hw/pflash_cfi01.c
| @@ -37,7 +37,10 @@ | @@ -37,7 +37,10 @@ | ||
| 37 | * It does not implement much more ... | 37 | * It does not implement much more ... |
| 38 | */ | 38 | */ |
| 39 | 39 | ||
| 40 | -#include "vl.h" | 40 | +#include "hw.h" |
| 41 | +#include "flash.h" | ||
| 42 | +#include "block.h" | ||
| 43 | +#include "qemu-timer.h" | ||
| 41 | 44 | ||
| 42 | #define PFLASH_BUG(fmt, args...) \ | 45 | #define PFLASH_BUG(fmt, args...) \ |
| 43 | do { \ | 46 | do { \ |
hw/pflash_cfi02.c
| @@ -36,7 +36,10 @@ | @@ -36,7 +36,10 @@ | ||
| 36 | * It does not implement multiple sectors erase | 36 | * It does not implement multiple sectors erase |
| 37 | */ | 37 | */ |
| 38 | 38 | ||
| 39 | -#include "vl.h" | 39 | +#include "hw.h" |
| 40 | +#include "flash.h" | ||
| 41 | +#include "qemu-timer.h" | ||
| 42 | +#include "block.h" | ||
| 40 | 43 | ||
| 41 | //#define PFLASH_DEBUG | 44 | //#define PFLASH_DEBUG |
| 42 | #ifdef PFLASH_DEBUG | 45 | #ifdef PFLASH_DEBUG |
hw/piix_pci.c
hw/pl011.c
| @@ -7,7 +7,9 @@ | @@ -7,7 +7,9 @@ | ||
| 7 | * This code is licenced under the GPL. | 7 | * This code is licenced under the GPL. |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | -#include "vl.h" | 10 | +#include "hw.h" |
| 11 | +#include "qemu-char.h" | ||
| 12 | +#include "primecell.h" | ||
| 11 | 13 | ||
| 12 | typedef struct { | 14 | typedef struct { |
| 13 | uint32_t base; | 15 | uint32_t base; |
hw/pl022.c
hw/pl031.c
hw/pl050.c
hw/pl061.c
hw/pl080.c
| @@ -7,7 +7,8 @@ | @@ -7,7 +7,8 @@ | ||
| 7 | * This code is licenced under the GPL. | 7 | * This code is licenced under the GPL. |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | -#include "vl.h" | 10 | +#include "hw.h" |
| 11 | +#include "primecell.h" | ||
| 11 | 12 | ||
| 12 | #define PL080_MAX_CHANNELS 8 | 13 | #define PL080_MAX_CHANNELS 8 |
| 13 | #define PL080_CONF_E 0x1 | 14 | #define PL080_CONF_E 0x1 |
hw/pl110.c
| @@ -7,7 +7,9 @@ | @@ -7,7 +7,9 @@ | ||
| 7 | * This code is licenced under the GNU LGPL | 7 | * This code is licenced under the GNU LGPL |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | -#include "vl.h" | 10 | +#include "hw.h" |
| 11 | +#include "primecell.h" | ||
| 12 | +#include "console.h" | ||
| 11 | 13 | ||
| 12 | #define PL110_CR_EN 0x001 | 14 | #define PL110_CR_EN 0x001 |
| 13 | #define PL110_CR_BGR 0x100 | 15 | #define PL110_CR_BGR 0x100 |
hw/pl181.c
hw/pl190.c
| @@ -7,8 +7,9 @@ | @@ -7,8 +7,9 @@ | ||
| 7 | * This code is licenced under the GPL. | 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 | /* The number of virtual priority levels. 16 user vectors plus the | 14 | /* The number of virtual priority levels. 16 user vectors plus the |
| 14 | unvectored IRQ. Chained interrupts would require an additional level | 15 | unvectored IRQ. Chained interrupts would require an additional level |
hw/ppc.c
| @@ -21,7 +21,11 @@ | @@ -21,7 +21,11 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | //#define PPC_DEBUG_IRQ | 30 | //#define PPC_DEBUG_IRQ |
| 27 | //#define PPC_DEBUG_TB | 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,8 +21,14 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "ppc.h" | ||
| 25 | #include "ppc405.h" | 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 | extern int loglevel; | 33 | extern int loglevel; |
| 28 | extern FILE *logfile; | 34 | extern FILE *logfile; |
hw/ppc405_uc.c
| @@ -21,8 +21,12 @@ | @@ -21,8 +21,12 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "ppc.h" | ||
| 25 | #include "ppc405.h" | 26 | #include "ppc405.h" |
| 27 | +#include "pc.h" | ||
| 28 | +#include "qemu-timer.h" | ||
| 29 | +#include "sysemu.h" | ||
| 26 | 30 | ||
| 27 | extern int loglevel; | 31 | extern int loglevel; |
| 28 | extern FILE *logfile; | 32 | extern FILE *logfile; |
hw/ppc4xx_devs.c
| @@ -21,8 +21,10 @@ | @@ -21,8 +21,10 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "ppc.h" | ||
| 25 | #include "ppc4xx.h" | 26 | #include "ppc4xx.h" |
| 27 | +#include "sysemu.h" | ||
| 26 | 28 | ||
| 27 | extern int loglevel; | 29 | extern int loglevel; |
| 28 | extern FILE *logfile; | 30 | extern FILE *logfile; |
hw/ppc_chrp.c
| @@ -22,8 +22,15 @@ | @@ -22,8 +22,15 @@ | ||
| 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | * THE SOFTWARE. | 23 | * THE SOFTWARE. |
| 24 | */ | 24 | */ |
| 25 | -#include "vl.h" | 25 | +#include "hw.h" |
| 26 | +#include "ppc.h" | ||
| 26 | #include "ppc_mac.h" | 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 | /* UniN device */ | 35 | /* UniN device */ |
| 29 | static void unin_writel (void *opaque, target_phys_addr_t addr, uint32_t value) | 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,4 +68,58 @@ void pmac_format_nvram_partition (MacIONVRAMState *nvr, int len); | ||
| 68 | uint32_t macio_nvram_read (void *opaque, uint32_t addr); | 68 | uint32_t macio_nvram_read (void *opaque, uint32_t addr); |
| 69 | void macio_nvram_write (void *opaque, uint32_t addr, uint32_t val); | 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 | #endif /* !defined(__PPC_MAC_H__) */ | 125 | #endif /* !defined(__PPC_MAC_H__) */ |
hw/ppc_oldworld.c
| @@ -22,8 +22,16 @@ | @@ -22,8 +22,16 @@ | ||
| 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | * THE SOFTWARE. | 23 | * THE SOFTWARE. |
| 24 | */ | 24 | */ |
| 25 | -#include "vl.h" | 25 | +#include "hw.h" |
| 26 | +#include "ppc.h" | ||
| 26 | #include "ppc_mac.h" | 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 | /* temporary frame buffer OSI calls for the video.x driver. The right | 36 | /* temporary frame buffer OSI calls for the video.x driver. The right |
| 29 | solution is to modify the driver to use VGA PCI I/Os */ | 37 | solution is to modify the driver to use VGA PCI I/Os */ |
hw/ppc_prep.c
| @@ -21,7 +21,16 @@ | @@ -21,7 +21,16 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | //#define HARD_DEBUG_PPC_IO | 35 | //#define HARD_DEBUG_PPC_IO |
| 27 | //#define DEBUG_PPC_IO | 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
| @@ -21,7 +21,9 @@ | @@ -21,7 +21,9 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "ps2.h" | ||
| 26 | +#include "console.h" | ||
| 25 | 27 | ||
| 26 | /* debug PC keyboard */ | 28 | /* debug PC keyboard */ |
| 27 | //#define DEBUG_KBD | 29 | //#define DEBUG_KBD |
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,7 +95,7 @@ void pxa2xx_lcdc_oritentation(void *opaque, int angle); | ||
| 95 | /* pxa2xx_mmci.c */ | 95 | /* pxa2xx_mmci.c */ |
| 96 | struct pxa2xx_mmci_s; | 96 | struct pxa2xx_mmci_s; |
| 97 | struct pxa2xx_mmci_s *pxa2xx_mmci_init(target_phys_addr_t base, | 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 | void pxa2xx_mmci_handlers(struct pxa2xx_mmci_s *s, qemu_irq readonly, | 99 | void pxa2xx_mmci_handlers(struct pxa2xx_mmci_s *s, qemu_irq readonly, |
| 100 | qemu_irq coverswitch); | 100 | qemu_irq coverswitch); |
| 101 | 101 | ||
| @@ -207,4 +207,8 @@ struct pxa2xx_state_s *pxa270_init(unsigned int sdram_size, DisplayState *ds, | @@ -207,4 +207,8 @@ struct pxa2xx_state_s *pxa270_init(unsigned int sdram_size, DisplayState *ds, | ||
| 207 | const char *revision); | 207 | const char *revision); |
| 208 | struct pxa2xx_state_s *pxa255_init(unsigned int sdram_size, DisplayState *ds); | 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 | #endif /* PXA_H */ | 214 | #endif /* PXA_H */ |
hw/pxa2xx.c
| @@ -7,7 +7,13 @@ | @@ -7,7 +7,13 @@ | ||
| 7 | * This code is licenced under the GPL. | 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 | static struct { | 18 | static struct { |
| 13 | target_phys_addr_t io_base; | 19 | target_phys_addr_t io_base; |
| @@ -2064,7 +2070,8 @@ struct pxa2xx_state_s *pxa270_init(unsigned int sdram_size, | @@ -2064,7 +2070,8 @@ struct pxa2xx_state_s *pxa270_init(unsigned int sdram_size, | ||
| 2064 | 2070 | ||
| 2065 | s->gpio = pxa2xx_gpio_init(0x40e00000, s->env, s->pic, 121); | 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 | for (i = 0; pxa270_serial[i].io_base; i ++) | 2076 | for (i = 0; pxa270_serial[i].io_base; i ++) |
| 2070 | if (serial_hds[i]) | 2077 | if (serial_hds[i]) |
| @@ -2180,7 +2187,8 @@ struct pxa2xx_state_s *pxa255_init(unsigned int sdram_size, | @@ -2180,7 +2187,8 @@ struct pxa2xx_state_s *pxa255_init(unsigned int sdram_size, | ||
| 2180 | 2187 | ||
| 2181 | s->gpio = pxa2xx_gpio_init(0x40e00000, s->env, s->pic, 85); | 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 | for (i = 0; pxa255_serial[i].io_base; i ++) | 2193 | for (i = 0; pxa255_serial[i].io_base; i ++) |
| 2186 | if (serial_hds[i]) | 2194 | if (serial_hds[i]) |
hw/pxa2xx_dma.c
| @@ -8,7 +8,8 @@ | @@ -8,7 +8,8 @@ | ||
| 8 | * This code is licenced under the GPL. | 8 | * This code is licenced under the GPL. |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | -#include "vl.h" | 11 | +#include "hw.h" |
| 12 | +#include "pxa.h" | ||
| 12 | 13 | ||
| 13 | struct pxa2xx_dma_channel_s { | 14 | struct pxa2xx_dma_channel_s { |
| 14 | target_phys_addr_t descr; | 15 | target_phys_addr_t descr; |
hw/pxa2xx_gpio.c
hw/pxa2xx_lcd.c
| @@ -7,8 +7,12 @@ | @@ -7,8 +7,12 @@ | ||
| 7 | * This code is licensed under the GPLv2. | 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 | #include "pixel_ops.h" | 13 | #include "pixel_ops.h" |
| 14 | +/* FIXME: For graphic_rotate. Should probably be done in common code. */ | ||
| 15 | +#include "sysemu.h" | ||
| 12 | 16 | ||
| 13 | typedef void (*drawfn)(uint32_t *, uint8_t *, const uint8_t *, int, int); | 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 +7,8 @@ | ||
| 7 | * This code is licensed under the GPLv2. | 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 | #include "sd.h" | 12 | #include "sd.h" |
| 12 | 13 | ||
| 13 | struct pxa2xx_mmci_s { | 14 | struct pxa2xx_mmci_s { |
| @@ -522,7 +523,7 @@ static int pxa2xx_mmci_load(QEMUFile *f, void *opaque, int version_id) | @@ -522,7 +523,7 @@ static int pxa2xx_mmci_load(QEMUFile *f, void *opaque, int version_id) | ||
| 522 | } | 523 | } |
| 523 | 524 | ||
| 524 | struct pxa2xx_mmci_s *pxa2xx_mmci_init(target_phys_addr_t base, | 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 | int iomemtype; | 528 | int iomemtype; |
| 528 | struct pxa2xx_mmci_s *s; | 529 | struct pxa2xx_mmci_s *s; |
| @@ -537,7 +538,7 @@ struct pxa2xx_mmci_s *pxa2xx_mmci_init(target_phys_addr_t base, | @@ -537,7 +538,7 @@ struct pxa2xx_mmci_s *pxa2xx_mmci_init(target_phys_addr_t base, | ||
| 537 | cpu_register_physical_memory(base, 0x00100000, iomemtype); | 538 | cpu_register_physical_memory(base, 0x00100000, iomemtype); |
| 538 | 539 | ||
| 539 | /* Instantiate the actual storage */ | 540 | /* Instantiate the actual storage */ |
| 540 | - s->card = sd_init(sd_bdrv); | 541 | + s->card = sd_init(bd); |
| 541 | 542 | ||
| 542 | register_savevm("pxa2xx_mmci", 0, 0, | 543 | register_savevm("pxa2xx_mmci", 0, 0, |
| 543 | pxa2xx_mmci_save, pxa2xx_mmci_load, s); | 544 | pxa2xx_mmci_save, pxa2xx_mmci_load, s); |
hw/pxa2xx_pcmcia.c
| @@ -7,7 +7,8 @@ | @@ -7,7 +7,8 @@ | ||
| 7 | * This code is licensed under the GPLv2. | 7 | * This code is licensed under the GPLv2. |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | -#include "vl.h" | 10 | +#include "hw.h" |
| 11 | +#include "pcmcia.h" | ||
| 11 | 12 | ||
| 12 | struct pxa2xx_pcmcia_s { | 13 | struct pxa2xx_pcmcia_s { |
| 13 | struct pcmcia_socket_s slot; | 14 | struct pcmcia_socket_s slot; |
hw/pxa2xx_pic.c
| @@ -8,7 +8,8 @@ | @@ -8,7 +8,8 @@ | ||
| 8 | * This code is licenced under the GPL. | 8 | * This code is licenced under the GPL. |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | -#include "vl.h" | 11 | +#include "hw.h" |
| 12 | +#include "pxa.h" | ||
| 12 | 13 | ||
| 13 | #define ICIP 0x00 /* Interrupt Controller IRQ Pending register */ | 14 | #define ICIP 0x00 /* Interrupt Controller IRQ Pending register */ |
| 14 | #define ICMR 0x04 /* Interrupt Controller Mask register */ | 15 | #define ICMR 0x04 /* Interrupt Controller Mask register */ |
hw/pxa2xx_timer.c
| @@ -7,7 +7,10 @@ | @@ -7,7 +7,10 @@ | ||
| 7 | * This code is licenced under the GPL. | 7 | * This code is licenced under the GPL. |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | -#include "vl.h" | 10 | +#include "hw.h" |
| 11 | +#include "qemu-timer.h" | ||
| 12 | +#include "sysemu.h" | ||
| 13 | +#include "pxa.h" | ||
| 11 | 14 | ||
| 12 | #define OSMR0 0x00 | 15 | #define OSMR0 0x00 |
| 13 | #define OSMR1 0x04 | 16 | #define OSMR1 0x04 |
hw/r2d.c
| @@ -22,7 +22,10 @@ | @@ -22,7 +22,10 @@ | ||
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | 24 | ||
| 25 | -#include "vl.h" | 25 | +#include "hw.h" |
| 26 | +#include "sh.h" | ||
| 27 | +#include "sysemu.h" | ||
| 28 | +#include "boards.h" | ||
| 26 | 29 | ||
| 27 | #define SDRAM_BASE 0x0c000000 /* Physical location of SDRAM: Area 3 */ | 30 | #define SDRAM_BASE 0x0c000000 /* Physical location of SDRAM: Area 3 */ |
| 28 | #define SDRAM_SIZE 0x04000000 | 31 | #define SDRAM_SIZE 0x04000000 |
hw/realview.c
| @@ -7,8 +7,14 @@ | @@ -7,8 +7,14 @@ | ||
| 7 | * This code is licenced under the GPL. | 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 | /* Board init. */ | 19 | /* Board init. */ |
| 14 | 20 |
hw/realview_gic.c
| @@ -7,8 +7,8 @@ | @@ -7,8 +7,8 @@ | ||
| 7 | * This code is licenced under the GPL. | 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 | 12 | ||
| 13 | #define GIC_NIRQ 96 | 13 | #define GIC_NIRQ 96 |
| 14 | #define NCPU 1 | 14 | #define NCPU 1 |
hw/rtl8139.c
| @@ -43,7 +43,10 @@ | @@ -43,7 +43,10 @@ | ||
| 43 | * Added rx/tx buffer reset when enabling rx/tx operation | 43 | * Added rx/tx buffer reset when enabling rx/tx operation |
| 44 | */ | 44 | */ |
| 45 | 45 | ||
| 46 | -#include "vl.h" | 46 | +#include "hw.h" |
| 47 | +#include "pci.h" | ||
| 48 | +#include "qemu-timer.h" | ||
| 49 | +#include "net.h" | ||
| 47 | 50 | ||
| 48 | /* debug RTL8139 card */ | 51 | /* debug RTL8139 card */ |
| 49 | //#define DEBUG_RTL8139 1 | 52 | //#define DEBUG_RTL8139 1 |
hw/sb16.c
| @@ -21,7 +21,11 @@ | @@ -21,7 +21,11 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | #define LENOFA(a) ((int) (sizeof(a)/sizeof(a[0]))) | 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,7 +25,9 @@ do { printf("scsi-disk: " fmt , ##args); } while (0) | ||
| 25 | #define BADF(fmt, args...) \ | 25 | #define BADF(fmt, args...) \ |
| 26 | do { fprintf(stderr, "scsi-disk: " fmt , ##args); } while (0) | 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 | #define SENSE_NO_SENSE 0 | 32 | #define SENSE_NO_SENSE 0 |
| 31 | #define SENSE_NOT_READY 2 | 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
| @@ -29,6 +29,8 @@ | @@ -29,6 +29,8 @@ | ||
| 29 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 29 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 30 | */ | 30 | */ |
| 31 | 31 | ||
| 32 | +#include "hw.h" | ||
| 33 | +#include "block.h" | ||
| 32 | #include "sd.h" | 34 | #include "sd.h" |
| 33 | 35 | ||
| 34 | //#define DEBUG_SD 1 | 36 | //#define DEBUG_SD 1 |
hw/sd.h
| @@ -29,8 +29,6 @@ | @@ -29,8 +29,6 @@ | ||
| 29 | #ifndef __hw_sd_h | 29 | #ifndef __hw_sd_h |
| 30 | #define __hw_sd_h 1 | 30 | #define __hw_sd_h 1 |
| 31 | 31 | ||
| 32 | -#include <vl.h> | ||
| 33 | - | ||
| 34 | #define OUT_OF_RANGE (1 << 31) | 32 | #define OUT_OF_RANGE (1 << 31) |
| 35 | #define ADDRESS_ERROR (1 << 30) | 33 | #define ADDRESS_ERROR (1 << 30) |
| 36 | #define BLOCK_LEN_ERROR (1 << 29) | 34 | #define BLOCK_LEN_ERROR (1 << 29) |
hw/serial.c
| @@ -21,7 +21,10 @@ | @@ -21,7 +21,10 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "qemu-char.h" | ||
| 26 | +#include "isa.h" | ||
| 27 | +#include "pc.h" | ||
| 25 | 28 | ||
| 26 | //#define DEBUG_SERIAL | 29 | //#define DEBUG_SERIAL |
| 27 | 30 |
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
| @@ -24,7 +24,9 @@ | @@ -24,7 +24,9 @@ | ||
| 24 | */ | 24 | */ |
| 25 | #include <stdio.h> | 25 | #include <stdio.h> |
| 26 | #include <assert.h> | 26 | #include <assert.h> |
| 27 | -#include "vl.h" | 27 | +#include "hw.h" |
| 28 | +#include "sh.h" | ||
| 29 | +#include "sysemu.h" | ||
| 28 | #include "sh7750_regs.h" | 30 | #include "sh7750_regs.h" |
| 29 | #include "sh7750_regnames.h" | 31 | #include "sh7750_regnames.h" |
| 30 | #include "sh_intc.h" | 32 | #include "sh_intc.h" |
hw/sh7750_regnames.c
hw/sh_intc.c
hw/sh_serial.c
| @@ -24,7 +24,9 @@ | @@ -24,7 +24,9 @@ | ||
| 24 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 24 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 25 | * THE SOFTWARE. | 25 | * THE SOFTWARE. |
| 26 | */ | 26 | */ |
| 27 | -#include "vl.h" | 27 | +#include "hw.h" |
| 28 | +#include "sh.h" | ||
| 29 | +#include "qemu-char.h" | ||
| 28 | #include <assert.h> | 30 | #include <assert.h> |
| 29 | 31 | ||
| 30 | //#define DEBUG_SERIAL | 32 | //#define DEBUG_SERIAL |
hw/sh_timer.c
hw/shix.c
| @@ -27,7 +27,10 @@ | @@ -27,7 +27,10 @@ | ||
| 27 | 27 | ||
| 28 | More information in target-sh4/README.sh4 | 28 | More information in target-sh4/README.sh4 |
| 29 | */ | 29 | */ |
| 30 | -#include "vl.h" | 30 | +#include "hw.h" |
| 31 | +#include "sh.h" | ||
| 32 | +#include "sysemu.h" | ||
| 33 | +#include "boards.h" | ||
| 31 | 34 | ||
| 32 | #define BIOS_FILENAME "shix_bios.bin" | 35 | #define BIOS_FILENAME "shix_bios.bin" |
| 33 | #define BIOS_ADDRESS 0xA0000000 | 36 | #define BIOS_ADDRESS 0xA0000000 |
hw/slavio_intctl.c
| @@ -21,7 +21,10 @@ | @@ -21,7 +21,10 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "sun4m.h" | ||
| 26 | +#include "console.h" | ||
| 27 | + | ||
| 25 | //#define DEBUG_IRQ_COUNT | 28 | //#define DEBUG_IRQ_COUNT |
| 26 | //#define DEBUG_IRQ | 29 | //#define DEBUG_IRQ |
| 27 | 30 |
hw/slavio_misc.c
| @@ -21,7 +21,10 @@ | @@ -21,7 +21,10 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "sun4m.h" | ||
| 26 | +#include "sysemu.h" | ||
| 27 | + | ||
| 25 | /* debug misc */ | 28 | /* debug misc */ |
| 26 | //#define DEBUG_MISC | 29 | //#define DEBUG_MISC |
| 27 | 30 |
hw/slavio_serial.c
| @@ -21,7 +21,11 @@ | @@ -21,7 +21,11 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | /* debug serial */ | 29 | /* debug serial */ |
| 26 | //#define DEBUG_SERIAL | 30 | //#define DEBUG_SERIAL |
| 27 | 31 |
hw/slavio_timer.c
| @@ -21,7 +21,9 @@ | @@ -21,7 +21,9 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "sun4m.h" | ||
| 26 | +#include "qemu-timer.h" | ||
| 25 | 27 | ||
| 26 | //#define DEBUG_TIMER | 28 | //#define DEBUG_TIMER |
| 27 | 29 |
hw/smbus.c
| @@ -9,7 +9,9 @@ | @@ -9,7 +9,9 @@ | ||
| 9 | 9 | ||
| 10 | /* TODO: Implement PEC. */ | 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 | //#define DEBUG_SMBUS 1 | 16 | //#define DEBUG_SMBUS 1 |
| 15 | 17 | ||
| @@ -194,7 +196,7 @@ SMBusDevice *smbus_device_init(i2c_bus *bus, int address, int size) | @@ -194,7 +196,7 @@ SMBusDevice *smbus_device_init(i2c_bus *bus, int address, int size) | ||
| 194 | SMBusDevice *dev; | 196 | SMBusDevice *dev; |
| 195 | 197 | ||
| 196 | if (size < sizeof(SMBusDevice)) | 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 | dev = (SMBusDevice *)i2c_slave_init(bus, address, size); | 201 | dev = (SMBusDevice *)i2c_slave_init(bus, address, size); |
| 200 | dev->i2c.event = smbus_i2c_event; | 202 | dev->i2c.event = smbus_i2c_event; |
hw/smbus.h
| @@ -22,7 +22,7 @@ | @@ -22,7 +22,7 @@ | ||
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | 24 | ||
| 25 | -typedef struct SMBusDevice SMBusDevice; | 25 | +#include "i2c.h" |
| 26 | 26 | ||
| 27 | struct SMBusDevice { | 27 | struct SMBusDevice { |
| 28 | /* The SMBus protocol is implemented on top of I2C. */ | 28 | /* The SMBus protocol is implemented on top of I2C. */ |
hw/smbus_eeprom.c
hw/smc91c111.c
hw/sparc32_dma.c
| @@ -21,7 +21,9 @@ | @@ -21,7 +21,9 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "sparc32_dma.h" | ||
| 26 | +#include "sun4m.h" | ||
| 25 | 27 | ||
| 26 | /* debug DMA */ | 28 | /* debug DMA */ |
| 27 | //#define DEBUG_DMA | 29 | //#define DEBUG_DMA |
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 +7,19 @@ | ||
| 7 | * This code is licensed under the GNU GPL v2. | 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 | #define spitz_printf(format, ...) \ | 24 | #define spitz_printf(format, ...) \ |
| 13 | fprintf(stderr, "%s: " format, __FUNCTION__, ##__VA_ARGS__) | 25 | fprintf(stderr, "%s: " format, __FUNCTION__, ##__VA_ARGS__) |
hw/ssd0303.c
| @@ -10,7 +10,9 @@ | @@ -10,7 +10,9 @@ | ||
| 10 | /* The controller can support a variety of different displays, but we only | 10 | /* The controller can support a variety of different displays, but we only |
| 11 | implement one. Most of the commends relating to brightness and geometry | 11 | implement one. Most of the commends relating to brightness and geometry |
| 12 | setup are ignored. */ | 12 | setup are ignored. */ |
| 13 | -#include "vl.h" | 13 | +#include "hw.h" |
| 14 | +#include "i2c.h" | ||
| 15 | +#include "console.h" | ||
| 14 | 16 | ||
| 15 | //#define DEBUG_SSD0303 1 | 17 | //#define DEBUG_SSD0303 1 |
| 16 | 18 |
hw/ssd0323.c
| @@ -10,7 +10,9 @@ | @@ -10,7 +10,9 @@ | ||
| 10 | /* The controller can support a variety of different displays, but we only | 10 | /* The controller can support a variety of different displays, but we only |
| 11 | implement one. Most of the commends relating to brightness and geometry | 11 | implement one. Most of the commends relating to brightness and geometry |
| 12 | setup are ignored. */ | 12 | setup are ignored. */ |
| 13 | -#include "vl.h" | 13 | +#include "hw.h" |
| 14 | +#include "devices.h" | ||
| 15 | +#include "console.h" | ||
| 14 | 16 | ||
| 15 | //#define DEBUG_SSD0323 1 | 17 | //#define DEBUG_SSD0323 1 |
| 16 | 18 |
hw/stellaris.c
| @@ -7,8 +7,14 @@ | @@ -7,8 +7,14 @@ | ||
| 7 | * This code is licenced under the GPL. | 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 | typedef const struct { | 19 | typedef const struct { |
| 14 | const char *name; | 20 | const char *name; |
hw/sun4m.c
| @@ -21,8 +21,15 @@ | @@ -21,8 +21,15 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | #include "firmware_abi.h" | 33 | #include "firmware_abi.h" |
| 27 | 34 | ||
| 28 | //#define DEBUG_IRQ | 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,8 +21,15 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | #include "firmware_abi.h" | 33 | #include "firmware_abi.h" |
| 27 | 34 | ||
| 28 | #define KERNEL_LOAD_ADDR 0x00404000 | 35 | #define KERNEL_LOAD_ADDR 0x00404000 |
hw/tc58128.c
hw/tcx.c
| @@ -21,7 +21,9 @@ | @@ -21,7 +21,9 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "sun4m.h" | ||
| 26 | +#include "console.h" | ||
| 25 | #include "pixel_ops.h" | 27 | #include "pixel_ops.h" |
| 26 | 28 | ||
| 27 | #define MAXX 1024 | 29 | #define MAXX 1024 |
hw/tsc210x.c
| @@ -19,7 +19,11 @@ | @@ -19,7 +19,11 @@ | ||
| 19 | * MA 02111-1307 USA | 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 | #define TSC_DATA_REGISTERS_PAGE 0x0 | 28 | #define TSC_DATA_REGISTERS_PAGE 0x0 |
| 25 | #define TSC_CONTROL_REGISTERS_PAGE 0x1 | 29 | #define TSC_CONTROL_REGISTERS_PAGE 0x1 |
hw/unin_pci.c
| @@ -21,7 +21,10 @@ | @@ -21,7 +21,10 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "ppc_mac.h" | ||
| 26 | +#include "pci.h" | ||
| 27 | + | ||
| 25 | typedef target_phys_addr_t pci_addr_t; | 28 | typedef target_phys_addr_t pci_addr_t; |
| 26 | #include "pci_host.h" | 29 | #include "pci_host.h" |
| 27 | 30 |
hw/usb-hid.c
| @@ -22,7 +22,9 @@ | @@ -22,7 +22,9 @@ | ||
| 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | * THE SOFTWARE. | 23 | * THE SOFTWARE. |
| 24 | */ | 24 | */ |
| 25 | -#include "vl.h" | 25 | +#include "hw.h" |
| 26 | +#include "console.h" | ||
| 27 | +#include "usb.h" | ||
| 26 | 28 | ||
| 27 | /* HID interface requests */ | 29 | /* HID interface requests */ |
| 28 | #define GET_REPORT 0xa101 | 30 | #define GET_REPORT 0xa101 |
hw/usb-hub.c
| @@ -21,7 +21,8 @@ | @@ -21,7 +21,8 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "qemu-common.h" |
| 25 | +#include "usb.h" | ||
| 25 | 26 | ||
| 26 | //#define DEBUG | 27 | //#define DEBUG |
| 27 | 28 |
hw/usb-msd.c
| @@ -7,7 +7,10 @@ | @@ -7,7 +7,10 @@ | ||
| 7 | * This code is licenced under the LGPL. | 7 | * This code is licenced under the LGPL. |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | -#include "vl.h" | 10 | +#include "qemu-common.h" |
| 11 | +#include "usb.h" | ||
| 12 | +#include "block.h" | ||
| 13 | +#include "scsi-disk.h" | ||
| 11 | 14 | ||
| 12 | //#define DEBUG_MSD | 15 | //#define DEBUG_MSD |
| 13 | 16 |
hw/usb-ohci.c
| @@ -27,7 +27,10 @@ | @@ -27,7 +27,10 @@ | ||
| 27 | * o BIOS work to boot from USB storage | 27 | * o BIOS work to boot from USB storage |
| 28 | */ | 28 | */ |
| 29 | 29 | ||
| 30 | -#include "vl.h" | 30 | +#include "hw.h" |
| 31 | +#include "qemu-timer.h" | ||
| 32 | +#include "usb.h" | ||
| 33 | +#include "pci.h" | ||
| 31 | 34 | ||
| 32 | //#define DEBUG_OHCI | 35 | //#define DEBUG_OHCI |
| 33 | /* Dump packet contents. */ | 36 | /* Dump packet contents. */ |
hw/usb-uhci.c
| @@ -21,7 +21,10 @@ | @@ -21,7 +21,10 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | //#define DEBUG | 29 | //#define DEBUG |
| 27 | //#define DEBUG_PACKET | 30 | //#define DEBUG_PACKET |
hw/usb-wacom.c
| @@ -25,7 +25,9 @@ | @@ -25,7 +25,9 @@ | ||
| 25 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 25 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 26 | * THE SOFTWARE. | 26 | * THE SOFTWARE. |
| 27 | */ | 27 | */ |
| 28 | -#include "vl.h" | 28 | +#include "hw.h" |
| 29 | +#include "console.h" | ||
| 30 | +#include "usb.h" | ||
| 29 | 31 | ||
| 30 | /* Interface requests */ | 32 | /* Interface requests */ |
| 31 | #define WACOM_GET_REPORT 0x2101 | 33 | #define WACOM_GET_REPORT 0x2101 |
hw/usb.c
| @@ -21,7 +21,8 @@ | @@ -21,7 +21,8 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "qemu-common.h" |
| 25 | +#include "usb.h" | ||
| 25 | 26 | ||
| 26 | void usb_attach(USBPort *port, USBDevice *dev) | 27 | void usb_attach(USBPort *port, USBDevice *dev) |
| 27 | { | 28 | { |
hw/usb.h
| @@ -202,15 +202,6 @@ void usb_packet_complete(USBPacket *p); | @@ -202,15 +202,6 @@ void usb_packet_complete(USBPacket *p); | ||
| 202 | /* usb hub */ | 202 | /* usb hub */ |
| 203 | USBDevice *usb_hub_init(int nb_ports); | 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 | /* usb-linux.c */ | 205 | /* usb-linux.c */ |
| 215 | USBDevice *usb_host_device_open(const char *devname); | 206 | USBDevice *usb_host_device_open(const char *devname); |
| 216 | void usb_host_info(void); | 207 | void usb_host_info(void); |
| @@ -225,3 +216,11 @@ USBDevice *usb_msd_init(const char *filename); | @@ -225,3 +216,11 @@ USBDevice *usb_msd_init(const char *filename); | ||
| 225 | 216 | ||
| 226 | /* usb-wacom.c */ | 217 | /* usb-wacom.c */ |
| 227 | USBDevice *usb_wacom_init(void); | 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
| @@ -7,7 +7,9 @@ | @@ -7,7 +7,9 @@ | ||
| 7 | * This code is licenced under the LGPL. | 7 | * This code is licenced under the LGPL. |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | -#include "vl.h" | 10 | +#include "hw.h" |
| 11 | +#include "pci.h" | ||
| 12 | +#include "primecell.h" | ||
| 11 | 13 | ||
| 12 | static inline uint32_t vpb_pci_config_addr(target_phys_addr_t addr) | 14 | static inline uint32_t vpb_pci_config_addr(target_phys_addr_t addr) |
| 13 | { | 15 | { |
hw/versatilepb.c
| @@ -7,8 +7,14 @@ | @@ -7,8 +7,14 @@ | ||
| 7 | * This code is licenced under the GPL. | 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 | /* Primary interrupt controller. */ | 19 | /* Primary interrupt controller. */ |
| 14 | 20 |
hw/vga.c
| @@ -21,7 +21,10 @@ | @@ -21,7 +21,10 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | #include "vga_int.h" | 28 | #include "vga_int.h" |
| 26 | #include "pixel_ops.h" | 29 | #include "pixel_ops.h" |
| 27 | 30 |
hw/vmmouse.c
| @@ -21,7 +21,10 @@ | @@ -21,7 +21,10 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | /* debug only vmmouse */ | 29 | /* debug only vmmouse */ |
| 27 | //#define DEBUG_VMMOUSE | 30 | //#define DEBUG_VMMOUSE |
hw/vmport.c
| @@ -21,8 +21,10 @@ | @@ -21,8 +21,10 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | #define VMPORT_CMD_GETVERSION 0x0a | 29 | #define VMPORT_CMD_GETVERSION 0x0a |
| 28 | #define VMPORT_CMD_GETRAMSIZE 0x14 | 30 | #define VMPORT_CMD_GETRAMSIZE 0x14 |
hw/vmware_vga.c
| @@ -21,7 +21,9 @@ | @@ -21,7 +21,9 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "hw.h" |
| 25 | +#include "console.h" | ||
| 26 | +#include "pci.h" | ||
| 25 | 27 | ||
| 26 | #define VERBOSE | 28 | #define VERBOSE |
| 27 | #define EMBED_STDVGA | 29 | #define EMBED_STDVGA |
hw/wm8750.c
| @@ -7,7 +7,9 @@ | @@ -7,7 +7,9 @@ | ||
| 7 | * This file is licensed under GNU GPL. | 7 | * This file is licensed under GNU GPL. |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | -#include "vl.h" | 10 | +#include "hw.h" |
| 11 | +#include "i2c.h" | ||
| 12 | +#include "audio/audio.h" | ||
| 11 | 13 | ||
| 12 | #define IN_PORT_N 3 | 14 | #define IN_PORT_N 3 |
| 13 | #define OUT_PORT_N 3 | 15 | #define OUT_PORT_N 3 |
loader.c
| @@ -21,7 +21,7 @@ | @@ -21,7 +21,7 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "qemu-common.h" |
| 25 | #include "disas.h" | 25 | #include "disas.h" |
| 26 | #include "uboot_image.h" | 26 | #include "uboot_image.h" |
| 27 | 27 |
m68k-semi.c
| @@ -33,7 +33,9 @@ | @@ -33,7 +33,9 @@ | ||
| 33 | #include "qemu.h" | 33 | #include "qemu.h" |
| 34 | #define SEMIHOSTING_HEAP_SIZE (128 * 1024 * 1024) | 34 | #define SEMIHOSTING_HEAP_SIZE (128 * 1024 * 1024) |
| 35 | #else | 35 | #else |
| 36 | -#include "vl.h" | 36 | +#include "qemu-common.h" |
| 37 | +#include "sysemu.h" | ||
| 38 | +#include "gdbstub.h" | ||
| 37 | #include "softmmu-semi.h" | 39 | #include "softmmu-semi.h" |
| 38 | #endif | 40 | #endif |
| 39 | 41 |
monitor.c
| @@ -21,7 +21,18 @@ | @@ -21,7 +21,18 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | #include "disas.h" | 36 | #include "disas.h" |
| 26 | #include <dirent.h> | 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
| @@ -33,10 +33,8 @@ | @@ -33,10 +33,8 @@ | ||
| 33 | #include <sys/statvfs.h> | 33 | #include <sys/statvfs.h> |
| 34 | #endif | 34 | #endif |
| 35 | 35 | ||
| 36 | -#include "cpu.h" | ||
| 37 | -#if defined(USE_KQEMU) | ||
| 38 | -#include "vl.h" | ||
| 39 | -#endif | 36 | +#include "qemu-common.h" |
| 37 | +#include "sysemu.h" | ||
| 40 | 38 | ||
| 41 | #ifdef _WIN32 | 39 | #ifdef _WIN32 |
| 42 | #include <windows.h> | 40 | #include <windows.h> |
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,6 +62,37 @@ static inline char *realpath(const char *path, char *resolved_path) | ||
| 62 | 62 | ||
| 63 | #endif /* !defined(NEED_CPU_H) */ | 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 | /* bottom halves */ | 96 | /* bottom halves */ |
| 66 | typedef struct QEMUBH QEMUBH; | 97 | typedef struct QEMUBH QEMUBH; |
| 67 | 98 | ||
| @@ -73,6 +104,8 @@ void qemu_bh_cancel(QEMUBH *bh); | @@ -73,6 +104,8 @@ void qemu_bh_cancel(QEMUBH *bh); | ||
| 73 | void qemu_bh_delete(QEMUBH *bh); | 104 | void qemu_bh_delete(QEMUBH *bh); |
| 74 | int qemu_bh_poll(void); | 105 | int qemu_bh_poll(void); |
| 75 | 106 | ||
| 107 | +uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c); | ||
| 108 | + | ||
| 76 | /* cutils.c */ | 109 | /* cutils.c */ |
| 77 | void pstrcpy(char *buf, int buf_size, const char *str); | 110 | void pstrcpy(char *buf, int buf_size, const char *str); |
| 78 | char *pstrcat(char *buf, int buf_size, const char *s); | 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,4 +113,42 @@ int strstart(const char *str, const char *val, const char **ptr); | ||
| 80 | int stristart(const char *str, const char *val, const char **ptr); | 113 | int stristart(const char *str, const char *val, const char **ptr); |
| 81 | time_t mktimegm(struct tm *tm); | 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 | #endif | 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
| @@ -21,7 +21,8 @@ | @@ -21,7 +21,8 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "qemu-common.h" |
| 25 | +#include "console.h" | ||
| 25 | 26 | ||
| 26 | #define TERM_CMD_BUF_SIZE 4095 | 27 | #define TERM_CMD_BUF_SIZE 4095 |
| 27 | #define TERM_MAX_CMDS 64 | 28 | #define TERM_MAX_CMDS 64 |
sdl.c
| @@ -21,7 +21,9 @@ | @@ -21,7 +21,9 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "qemu-common.h" |
| 25 | +#include "console.h" | ||
| 26 | +#include "sysemu.h" | ||
| 25 | 27 | ||
| 26 | #include <SDL.h> | 28 | #include <SDL.h> |
| 27 | 29 |
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,7 +26,9 @@ | ||
| 26 | * distribution); if not, write to the Free Software Foundation, Inc., | 26 | * distribution); if not, write to the Free Software Foundation, Inc., |
| 27 | * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 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 | #include <stdio.h> | 32 | #include <stdio.h> |
| 31 | #include <windows.h> | 33 | #include <windows.h> |
| 32 | 34 |
target-sparc/helper.c
| @@ -604,3 +604,34 @@ void memcpy32(target_ulong *dst, const target_ulong *src) | @@ -604,3 +604,34 @@ void memcpy32(target_ulong *dst, const target_ulong *src) | ||
| 604 | dst[6] = src[6]; | 604 | dst[6] = src[6]; |
| 605 | dst[7] = src[7]; | 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,27 +1804,3 @@ void do_unassigned_access(target_phys_addr_t addr, int is_write, int is_exec, | ||
| 1804 | } | 1804 | } |
| 1805 | #endif | 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,7 +21,9 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | #if defined(__linux__) | 28 | #if defined(__linux__) |
| 27 | #include <dirent.h> | 29 | #include <dirent.h> |
vl.c
| @@ -21,7 +21,22 @@ | @@ -21,7 +21,22 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 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 | #include <unistd.h> | 41 | #include <unistd.h> |
| 27 | #include <fcntl.h> | 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
| @@ -23,8 +23,11 @@ | @@ -23,8 +23,11 @@ | ||
| 23 | * THE SOFTWARE. | 23 | * THE SOFTWARE. |
| 24 | */ | 24 | */ |
| 25 | 25 | ||
| 26 | -#include "vl.h" | 26 | +#include "qemu-common.h" |
| 27 | +#include "console.h" | ||
| 28 | +#include "sysemu.h" | ||
| 27 | #include "qemu_socket.h" | 29 | #include "qemu_socket.h" |
| 30 | +#include "qemu-timer.h" | ||
| 28 | 31 | ||
| 29 | #define VNC_REFRESH_INTERVAL (1000 / 30) | 32 | #define VNC_REFRESH_INTERVAL (1000 / 30) |
| 30 | 33 |
x_keymap.c
| @@ -21,7 +21,8 @@ | @@ -21,7 +21,8 @@ | ||
| 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 22 | * THE SOFTWARE. | 22 | * THE SOFTWARE. |
| 23 | */ | 23 | */ |
| 24 | -#include "vl.h" | 24 | +#include "qemu-common.h" |
| 25 | + | ||
| 25 | static const uint8_t x_keycode_to_pc_keycode[115] = { | 26 | static const uint8_t x_keycode_to_pc_keycode[115] = { |
| 26 | 0xc7, /* 97 Home */ | 27 | 0xc7, /* 97 Home */ |
| 27 | 0xc8, /* 98 Up */ | 28 | 0xc8, /* 98 Up */ |