X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=vl.h;h=58a7877d101f0b637902c78f97fa91e6e9858de7;hb=7ef4da1c3a753888e2678388150f1b846b025168;hp=7a107281d65cb805c7ccdd9f42a74aa08cb21dbc;hpb=6a36d84e1024ce41860751b449727f4ddca91aa2;p=qemu diff --git a/vl.h b/vl.h index 7a10728..58a7877 100644 --- a/vl.h +++ b/vl.h @@ -82,13 +82,18 @@ static inline char *realpath(const char *path, char *resolved_path) #define tostring(s) #s #endif +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif + /* vl.c */ uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c); void hw_error(const char *fmt, ...); -int get_image_size(const char *filename); -int load_image(const char *filename, uint8_t *addr); extern const char *bios_dir; void pstrcpy(char *buf, int buf_size, const char *str); @@ -158,10 +163,11 @@ typedef void QEMUPutKBDEvent(void *opaque, int keycode); typedef void QEMUPutMouseEvent(void *opaque, int dx, int dy, int dz, int buttons_state); void qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque); -void qemu_add_mouse_event_handler(QEMUPutMouseEvent *func, void *opaque); +void qemu_add_mouse_event_handler(QEMUPutMouseEvent *func, void *opaque, int absolute); void kbd_put_keycode(int keycode); void kbd_mouse_event(int dx, int dy, int dz, int buttons_state); +int kbd_mouse_is_absolute(void); /* keysym is a unicode code except for special keys (see QEMU_KEY_xxx constants) */ @@ -204,6 +210,14 @@ int qemu_set_fd_handler(int fd, IOHandler *fd_write, void *opaque); +/* Polling handling */ + +/* return TRUE if no sleep should be done afterwards */ +typedef int PollingFunc(void *opaque); + +int qemu_add_polling_cb(PollingFunc *func, void *opaque); +void qemu_del_polling_cb(PollingFunc *func, void *opaque); + /* character device */ #define CHR_EVENT_BREAK 0 /* serial break char */ @@ -237,6 +251,7 @@ typedef struct CharDriverState { int (*chr_ioctl)(struct CharDriverState *s, int cmd, void *arg); IOEventHandler *chr_event; void (*chr_send_event)(struct CharDriverState *chr, int event); + void (*chr_close)(struct CharDriverState *chr); void *opaque; } CharDriverState; @@ -254,10 +269,19 @@ int qemu_chr_ioctl(CharDriverState *s, int cmd, void *arg); typedef struct DisplayState DisplayState; typedef struct TextConsole TextConsole; -extern TextConsole *vga_console; +typedef void (*vga_hw_update_ptr)(void *); +typedef void (*vga_hw_invalidate_ptr)(void *); +typedef void (*vga_hw_screen_dump_ptr)(void *, const char *); + +TextConsole *graphic_console_init(DisplayState *ds, vga_hw_update_ptr update, + vga_hw_invalidate_ptr invalidate, + vga_hw_screen_dump_ptr screen_dump, + void *opaque); +void vga_hw_update(void); +void vga_hw_invalidate(void); +void vga_hw_screen_dump(const char *filename); -TextConsole *graphic_console_init(DisplayState *ds); -int is_active_console(TextConsole *s); +int is_graphic_console(void); CharDriverState *text_console_init(DisplayState *ds); void console_select(unsigned int index); @@ -279,6 +303,9 @@ typedef struct VLANClientState VLANClientState; struct VLANClientState { IOReadHandler *fd_read; + /* Packets may still be sent if this returns zero. It's used to + rate-limit the slirp code. */ + IOCanRWHandler *fd_can_read; void *opaque; struct VLANClientState *next; struct VLANState *vlan; @@ -293,17 +320,26 @@ typedef struct VLANState { VLANState *qemu_find_vlan(int id); VLANClientState *qemu_new_vlan_client(VLANState *vlan, - IOReadHandler *fd_read, void *opaque); + IOReadHandler *fd_read, + IOCanRWHandler *fd_can_read, + void *opaque); +int qemu_can_send_packet(VLANClientState *vc); void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size); +void qemu_handler_true(void *opaque); void do_info_network(void); +/* TAP win32 */ +int tap_win32_init(VLANState *vlan, const char *ifname); +void tap_win32_poll(void); + /* NIC info */ #define MAX_NICS 8 typedef struct NICInfo { uint8_t macaddr[6]; + const char *model; VLANState *vlan; } NICInfo; @@ -605,6 +641,8 @@ PCIBus *pci_grackle_init(uint32_t base); PCIBus *pci_pmac_init(void); PCIBus *pci_apb_init(target_ulong special_base, target_ulong mem_base); +void pci_nic_init(PCIBus *bus, NICInfo *nd); + /* openpic.c */ typedef struct openpic_t openpic_t; void openpic_set_irq(void *opaque, int n_IRQ, int level); @@ -641,9 +679,12 @@ struct DisplayState { int depth; int width; int height; + void *opaque; + void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h); void (*dpy_resize)(struct DisplayState *s, int w, int h); void (*dpy_refresh)(struct DisplayState *s); + void (*dpy_copy)(struct DisplayState *s, int src_x, int src_y, int dst_x, int dst_y, int w, int h); }; static inline void dpy_update(DisplayState *s, int x, int y, int w, int h) @@ -659,9 +700,6 @@ static inline void dpy_resize(DisplayState *s, int w, int h) int vga_initialize(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, unsigned long vga_ram_offset, int vga_ram_size, unsigned long vga_bios_offset, int vga_bios_size); -void vga_update_display(void); -void vga_invalidate_display(void); -void vga_screen_dump(const char *filename); /* cirrus_vga.c */ void pci_cirrus_vga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base, @@ -675,6 +713,9 @@ void sdl_display_init(DisplayState *ds, int full_screen); /* cocoa.m */ void cocoa_display_init(DisplayState *ds, int full_screen); +/* vnc.c */ +void vnc_display_init(DisplayState *ds, int display); + /* ide.c */ #define MAX_DISKS 4 @@ -729,6 +770,10 @@ int fdctrl_get_drive_type(fdctrl_t *fdctrl, int drive_num); void isa_ne2000_init(int base, int irq, NICInfo *nd); void pci_ne2000_init(PCIBus *bus, NICInfo *nd); +/* rtl8139.c */ + +void pci_rtl8139_init(PCIBus *bus, NICInfo *nd); + /* pckbd.c */ void kbd_init(void); @@ -787,8 +832,19 @@ typedef struct PITState PITState; PITState *pit_init(int base, int irq); void pit_set_gate(PITState *pit, int channel, int val); int pit_get_gate(PITState *pit, int channel); +int pit_get_initial_count(PITState *pit, int channel); +int pit_get_mode(PITState *pit, int channel); int pit_get_out(PITState *pit, int channel, int64_t current_time); +/* pcspk.c */ +void pcspk_init(PITState *); +int pcspk_audio_init(AudioState *); + +/* acpi.c */ +extern int acpi_enabled; +void piix4_pm_init(PCIBus *bus); +void acpi_bios_init(void); + /* pc.c */ extern QEMUMachine pc_machine; extern QEMUMachine isapc_machine; @@ -804,6 +860,9 @@ extern QEMUMachine heathrow_machine; /* mips_r4k.c */ extern QEMUMachine mips_machine; +/* shix.c */ +extern QEMUMachine shix_machine; + #ifdef TARGET_PPC ppc_tb_t *cpu_ppc_tb_init (CPUState *env, uint32_t freq); #endif @@ -826,11 +885,8 @@ uint32_t iommu_translate_local(void *opaque, uint32_t addr); void lance_init(NICInfo *nd, int irq, uint32_t leaddr, uint32_t ledaddr); /* tcx.c */ -void *tcx_init(DisplayState *ds, uint32_t addr, uint8_t *vram_base, +void tcx_init(DisplayState *ds, uint32_t addr, uint8_t *vram_base, unsigned long vram_offset, int vram_size, int width, int height); -void tcx_update_display(void *opaque); -void tcx_invalidate_display(void *opaque); -void tcx_screen_dump(void *opaque, const char *filename); /* slavio_intctl.c */ void *slavio_intctl_init(); @@ -840,8 +896,10 @@ void slavio_irq_info(void *opaque); void slavio_pic_set_irq(void *opaque, int irq, int level); void slavio_pic_set_irq_cpu(void *opaque, int irq, int level, unsigned int cpu); -/* magic-load.c */ -int load_elf(const char *filename, uint8_t *addr); +/* loader.c */ +int get_image_size(const char *filename); +int load_image(const char *filename, uint8_t *addr); +int load_elf(const char *filename, int64_t virt_to_phys_addend, uint64_t *pentry); int load_aout(const char *filename, uint8_t *addr); /* slavio_timer.c */ @@ -942,7 +1000,12 @@ void do_usb_del(const char *devname); void usb_info(void); /* integratorcp.c */ -extern QEMUMachine integratorcp_machine; +extern QEMUMachine integratorcp926_machine; +extern QEMUMachine integratorcp1026_machine; + +/* versatilepb.c */ +extern QEMUMachine versatilepb_machine; +extern QEMUMachine versatileab_machine; /* ps2.c */ void *ps2_kbd_init(void (*update_irq)(void *, int), void *update_arg); @@ -951,10 +1014,58 @@ void ps2_write_mouse(void *, int val); void ps2_write_keyboard(void *, int val); uint32_t ps2_read_data(void *); void ps2_queue(void *, int b); +void ps2_keyboard_set_translation(void *opaque, int mode); /* smc91c111.c */ void smc91c111_init(NICInfo *, uint32_t, void *, int); +/* pl110.c */ +void *pl110_init(DisplayState *ds, uint32_t base, void *pic, int irq, int); + +/* pl011.c */ +void pl011_init(uint32_t base, void *pic, int irq, CharDriverState *chr); + +/* pl050.c */ +void pl050_init(uint32_t base, void *pic, int irq, int is_mouse); + +/* pl080.c */ +void *pl080_init(uint32_t base, void *pic, int irq); + +/* pl190.c */ +void *pl190_init(uint32_t base, void *parent, int irq, int fiq); + +/* arm-timer.c */ +void sp804_init(uint32_t base, void *pic, int irq); +void icp_pit_init(uint32_t base, void *pic, int irq); + +/* arm_boot.c */ + +void arm_load_kernel(int ram_size, const char *kernel_filename, + const char *kernel_cmdline, const char *initrd_filename, + int board_id); + +/* sh7750.c */ +struct SH7750State; + +struct SH7750State *sh7750_init(CPUState * cpu); + +typedef struct { + /* The callback will be triggered if any of the designated lines change */ + uint16_t portamask_trigger; + uint16_t portbmask_trigger; + /* Return 0 if no action was taken */ + int (*port_change_cb) (uint16_t porta, uint16_t portb, + uint16_t * periph_pdtra, + uint16_t * periph_portdira, + uint16_t * periph_pdtrb, + uint16_t * periph_portdirb); +} sh7750_io_device; + +int sh7750_register_io_device(struct SH7750State *s, + sh7750_io_device * device); +/* tc58128.c */ +int tc58128_init(struct SH7750State *s, char *zone1, char *zone2); + #endif /* defined(QEMU_TOOL) */ /* monitor.c */