Register reset handlers
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6136 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
		
							parent
							
								
									b4e237aae7
								
							
						
					
					
						commit
						6e6b736313
					
				
							
								
								
									
										4
									
								
								hw/adb.c
								
								
								
								
							
							
						
						
									
										4
									
								
								hw/adb.c
								
								
								
								
							|  | @ -122,6 +122,8 @@ ADBDevice *adb_register_device(ADBBusState *s, int devaddr, | ||||||
|     d->devreq = devreq; |     d->devreq = devreq; | ||||||
|     d->devreset = devreset; |     d->devreset = devreset; | ||||||
|     d->opaque = opaque; |     d->opaque = opaque; | ||||||
|  |     qemu_register_reset(devreset, d); | ||||||
|  |     d->devreset(d); | ||||||
|     return d; |     return d; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -278,7 +280,6 @@ void adb_kbd_init(ADBBusState *bus) | ||||||
|     s = qemu_mallocz(sizeof(KBDState)); |     s = qemu_mallocz(sizeof(KBDState)); | ||||||
|     d = adb_register_device(bus, ADB_KEYBOARD, adb_kbd_request, |     d = adb_register_device(bus, ADB_KEYBOARD, adb_kbd_request, | ||||||
|                             adb_kbd_reset, s); |                             adb_kbd_reset, s); | ||||||
|     adb_kbd_reset(d); |  | ||||||
|     qemu_add_kbd_event_handler(adb_kbd_put_keycode, d); |     qemu_add_kbd_event_handler(adb_kbd_put_keycode, d); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -420,6 +421,5 @@ void adb_mouse_init(ADBBusState *bus) | ||||||
|     s = qemu_mallocz(sizeof(MouseState)); |     s = qemu_mallocz(sizeof(MouseState)); | ||||||
|     d = adb_register_device(bus, ADB_MOUSE, adb_mouse_request, |     d = adb_register_device(bus, ADB_MOUSE, adb_mouse_request, | ||||||
|                             adb_mouse_reset, s); |                             adb_mouse_reset, s); | ||||||
|     adb_mouse_reset(d); |  | ||||||
|     qemu_add_mouse_event_handler(adb_mouse_event, d, 0, "QEMU ADB Mouse"); |     qemu_add_mouse_event_handler(adb_mouse_event, d, 0, "QEMU ADB Mouse"); | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										35
									
								
								hw/cuda.c
								
								
								
								
							
							
						
						
									
										35
									
								
								hw/cuda.c
								
								
								
								
							|  | @ -633,6 +633,33 @@ static CPUReadMemoryFunc *cuda_read[] = { | ||||||
|     &cuda_readl, |     &cuda_readl, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | static void cuda_reset(void *opaque) | ||||||
|  | { | ||||||
|  |     CUDAState *s = opaque; | ||||||
|  | 
 | ||||||
|  |     s->b = 0; | ||||||
|  |     s->a = 0; | ||||||
|  |     s->dirb = 0; | ||||||
|  |     s->dira = 0; | ||||||
|  |     s->sr = 0; | ||||||
|  |     s->acr = 0; | ||||||
|  |     s->pcr = 0; | ||||||
|  |     s->ifr = 0; | ||||||
|  |     s->ier = 0; | ||||||
|  |     //    s->ier = T1_INT | SR_INT;
 | ||||||
|  |     s->anh = 0; | ||||||
|  |     s->data_in_size = 0; | ||||||
|  |     s->data_in_index = 0; | ||||||
|  |     s->data_out_index = 0; | ||||||
|  |     s->autopoll = 0; | ||||||
|  | 
 | ||||||
|  |     s->timers[0].latch = 0xffff; | ||||||
|  |     set_counter(s, &s->timers[0], 0xffff); | ||||||
|  | 
 | ||||||
|  |     s->timers[1].latch = 0; | ||||||
|  |     set_counter(s, &s->timers[1], 0xffff); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void cuda_init (int *cuda_mem_index, qemu_irq irq) | void cuda_init (int *cuda_mem_index, qemu_irq irq) | ||||||
| { | { | ||||||
|     CUDAState *s = &cuda_state; |     CUDAState *s = &cuda_state; | ||||||
|  | @ -641,15 +668,11 @@ void cuda_init (int *cuda_mem_index, qemu_irq irq) | ||||||
| 
 | 
 | ||||||
|     s->timers[0].index = 0; |     s->timers[0].index = 0; | ||||||
|     s->timers[0].timer = qemu_new_timer(vm_clock, cuda_timer1, s); |     s->timers[0].timer = qemu_new_timer(vm_clock, cuda_timer1, s); | ||||||
|     s->timers[0].latch = 0xffff; |  | ||||||
|     set_counter(s, &s->timers[0], 0xffff); |  | ||||||
| 
 | 
 | ||||||
|     s->timers[1].index = 1; |     s->timers[1].index = 1; | ||||||
|     s->timers[1].latch = 0; |  | ||||||
|     //    s->ier = T1_INT | SR_INT;
 |  | ||||||
|     s->ier = 0; |  | ||||||
|     set_counter(s, &s->timers[1], 0xffff); |  | ||||||
| 
 | 
 | ||||||
|     s->adb_poll_timer = qemu_new_timer(vm_clock, cuda_adb_poll, s); |     s->adb_poll_timer = qemu_new_timer(vm_clock, cuda_adb_poll, s); | ||||||
|     *cuda_mem_index = cpu_register_io_memory(0, cuda_read, cuda_write, s); |     *cuda_mem_index = cpu_register_io_memory(0, cuda_read, cuda_write, s); | ||||||
|  |     qemu_register_reset(cuda_reset, s); | ||||||
|  |     cuda_reset(s); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -105,6 +105,10 @@ static void pci_grackle_set_irq(qemu_irq *pic, int irq_num, int level) | ||||||
|     qemu_set_irq(pic[irq_num + 0x15], level); |     qemu_set_irq(pic[irq_num + 0x15], level); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static void pci_grackle_reset(void *opaque) | ||||||
|  | { | ||||||
|  | } | ||||||
|  | 
 | ||||||
| PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic) | PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic) | ||||||
| { | { | ||||||
|     GrackleState *s; |     GrackleState *s; | ||||||
|  | @ -160,5 +164,8 @@ PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic) | ||||||
|     d->config[0x26] = 0x00; // prefetchable_memory_limit
 |     d->config[0x26] = 0x00; // prefetchable_memory_limit
 | ||||||
|     d->config[0x27] = 0x85; |     d->config[0x27] = 0x85; | ||||||
| #endif | #endif | ||||||
|  |     qemu_register_reset(pci_grackle_reset, d); | ||||||
|  |     pci_grackle_reset(d); | ||||||
|  | 
 | ||||||
|     return s->bus; |     return s->bus; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -165,17 +165,33 @@ static void heathrow_pic_set_irq(void *opaque, int num, int level) | ||||||
|     heathrow_pic_update(s); |     heathrow_pic_update(s); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static void heathrow_pic_reset_one(HeathrowPIC *s) | ||||||
|  | { | ||||||
|  |     memset(s, '\0', sizeof(HeathrowPIC)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | static void heathrow_pic_reset(void *opaque) | ||||||
|  | { | ||||||
|  |     HeathrowPICS *s = opaque; | ||||||
|  | 
 | ||||||
|  |     heathrow_pic_reset_one(&s->pics[0]); | ||||||
|  |     heathrow_pic_reset_one(&s->pics[1]); | ||||||
|  | 
 | ||||||
|  |     s->pics[0].level_triggered = 0; | ||||||
|  |     s->pics[1].level_triggered = 0x1ff00000; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| qemu_irq *heathrow_pic_init(int *pmem_index, | qemu_irq *heathrow_pic_init(int *pmem_index, | ||||||
|                             int nb_cpus, qemu_irq **irqs) |                             int nb_cpus, qemu_irq **irqs) | ||||||
| { | { | ||||||
|     HeathrowPICS *s; |     HeathrowPICS *s; | ||||||
| 
 | 
 | ||||||
|     s = qemu_mallocz(sizeof(HeathrowPICS)); |     s = qemu_mallocz(sizeof(HeathrowPICS)); | ||||||
|     s->pics[0].level_triggered = 0; |  | ||||||
|     s->pics[1].level_triggered = 0x1ff00000; |  | ||||||
|     /* only 1 CPU */ |     /* only 1 CPU */ | ||||||
|     s->irqs = irqs[0]; |     s->irqs = irqs[0]; | ||||||
|     *pmem_index = cpu_register_io_memory(0, pic_read, pic_write, s); |     *pmem_index = cpu_register_io_memory(0, pic_read, pic_write, s); | ||||||
| 
 | 
 | ||||||
|  |     qemu_register_reset(heathrow_pic_reset, s); | ||||||
|  |     heathrow_pic_reset(s); | ||||||
|     return qemu_allocate_irqs(heathrow_pic_set_irq, s, 64); |     return qemu_allocate_irqs(heathrow_pic_set_irq, s, 64); | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										22
									
								
								hw/ide.c
								
								
								
								
							
							
						
						
									
										22
									
								
								hw/ide.c
								
								
								
								
							|  | @ -3084,6 +3084,15 @@ static void cmd646_set_irq(void *opaque, int channel, int level) | ||||||
|     cmd646_update_irq(d); |     cmd646_update_irq(d); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | static void cmd646_reset(void *opaque) | ||||||
|  | { | ||||||
|  |     PCIIDEState *d = opaque; | ||||||
|  |     unsigned int i; | ||||||
|  | 
 | ||||||
|  |     for (i = 0; i < 2; i++) | ||||||
|  |         ide_dma_cancel(&d->bmdma[i]); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /* CMD646 PCI IDE controller */ | /* CMD646 PCI IDE controller */ | ||||||
| void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table, | void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table, | ||||||
|                          int secondary_ide_enabled) |                          int secondary_ide_enabled) | ||||||
|  | @ -3135,6 +3144,9 @@ void pci_cmd646_ide_init(PCIBus *bus, BlockDriverState **hd_table, | ||||||
|     irq = qemu_allocate_irqs(cmd646_set_irq, d, 2); |     irq = qemu_allocate_irqs(cmd646_set_irq, d, 2); | ||||||
|     ide_init2(&d->ide_if[0], hd_table[0], hd_table[1], irq[0]); |     ide_init2(&d->ide_if[0], hd_table[0], hd_table[1], irq[0]); | ||||||
|     ide_init2(&d->ide_if[2], hd_table[2], hd_table[3], irq[1]); |     ide_init2(&d->ide_if[2], hd_table[2], hd_table[3], irq[1]); | ||||||
|  | 
 | ||||||
|  |     qemu_register_reset(cmd646_reset, d); | ||||||
|  |     cmd646_reset(d); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void pci_ide_save(QEMUFile* f, void *opaque) | static void pci_ide_save(QEMUFile* f, void *opaque) | ||||||
|  | @ -3405,6 +3417,14 @@ static CPUReadMemoryFunc *pmac_ide_read[] = { | ||||||
|     pmac_ide_readl, |     pmac_ide_readl, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | static void pmac_ide_reset(void *opaque) | ||||||
|  | { | ||||||
|  |     IDEState *s = (IDEState *)opaque; | ||||||
|  | 
 | ||||||
|  |     ide_reset(&s[0]); | ||||||
|  |     ide_reset(&s[1]); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /* hd_table must contain 4 block drivers */ | /* hd_table must contain 4 block drivers */ | ||||||
| /* PowerMac uses memory mapped registers, not I/O. Return the memory
 | /* PowerMac uses memory mapped registers, not I/O. Return the memory
 | ||||||
|    I/O index to access the ide. */ |    I/O index to access the ide. */ | ||||||
|  | @ -3418,6 +3438,8 @@ int pmac_ide_init (BlockDriverState **hd_table, qemu_irq irq) | ||||||
| 
 | 
 | ||||||
|     pmac_ide_memory = cpu_register_io_memory(0, pmac_ide_read, |     pmac_ide_memory = cpu_register_io_memory(0, pmac_ide_read, | ||||||
|                                              pmac_ide_write, &ide_if[0]); |                                              pmac_ide_write, &ide_if[0]); | ||||||
|  |     qemu_register_reset(pmac_ide_reset, &ide_if[0]); | ||||||
|  |     pmac_ide_reset(&ide_if[0]); | ||||||
|     return pmac_ide_memory; |     return pmac_ide_memory; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -604,6 +604,8 @@ static void m48t59_reset(void *opaque) | ||||||
| { | { | ||||||
|     m48t59_t *NVRAM = opaque; |     m48t59_t *NVRAM = opaque; | ||||||
| 
 | 
 | ||||||
|  |     NVRAM->addr = 0; | ||||||
|  |     NVRAM->lock = 0; | ||||||
|     if (NVRAM->alrm_timer != NULL) |     if (NVRAM->alrm_timer != NULL) | ||||||
|         qemu_del_timer(NVRAM->alrm_timer); |         qemu_del_timer(NVRAM->alrm_timer); | ||||||
| 
 | 
 | ||||||
|  | @ -630,7 +632,6 @@ m48t59_t *m48t59_init (qemu_irq IRQ, target_phys_addr_t mem_base, | ||||||
|     s->IRQ = IRQ; |     s->IRQ = IRQ; | ||||||
|     s->size = size; |     s->size = size; | ||||||
|     s->io_base = io_base; |     s->io_base = io_base; | ||||||
|     s->addr = 0; |  | ||||||
|     s->type = type; |     s->type = type; | ||||||
|     if (io_base != 0) { |     if (io_base != 0) { | ||||||
|         register_ioport_read(io_base, 0x04, 1, NVRAM_readb, s); |         register_ioport_read(io_base, 0x04, 1, NVRAM_readb, s); | ||||||
|  | @ -644,7 +645,6 @@ m48t59_t *m48t59_init (qemu_irq IRQ, target_phys_addr_t mem_base, | ||||||
|         s->alrm_timer = qemu_new_timer(vm_clock, &alarm_cb, s); |         s->alrm_timer = qemu_new_timer(vm_clock, &alarm_cb, s); | ||||||
|         s->wd_timer = qemu_new_timer(vm_clock, &watchdog_cb, s); |         s->wd_timer = qemu_new_timer(vm_clock, &watchdog_cb, s); | ||||||
|     } |     } | ||||||
|     s->lock = 0; |  | ||||||
|     qemu_get_timedate(&s->alarm, 0); |     qemu_get_timedate(&s->alarm, 0); | ||||||
| 
 | 
 | ||||||
|     qemu_register_reset(m48t59_reset, s); |     qemu_register_reset(m48t59_reset, s); | ||||||
|  |  | ||||||
|  | @ -88,7 +88,13 @@ static CPUReadMemoryFunc *dbdma_read[] = { | ||||||
|     &dbdma_readl, |     &dbdma_readl, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | static void dbdma_reset(void *opaque) | ||||||
|  | { | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void dbdma_init (int *dbdma_mem_index) | void dbdma_init (int *dbdma_mem_index) | ||||||
| { | { | ||||||
|     *dbdma_mem_index = cpu_register_io_memory(0, dbdma_read, dbdma_write, NULL); |     *dbdma_mem_index = cpu_register_io_memory(0, dbdma_read, dbdma_write, NULL); | ||||||
|  |     qemu_register_reset(dbdma_reset, NULL); | ||||||
|  |     dbdma_reset(NULL); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -104,6 +104,10 @@ static CPUReadMemoryFunc *nvram_read[] = { | ||||||
|     &macio_nvram_readb, |     &macio_nvram_readb, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | static void macio_nvram_reset(void *opaque) | ||||||
|  | { | ||||||
|  | } | ||||||
|  | 
 | ||||||
| MacIONVRAMState *macio_nvram_init (int *mem_index, target_phys_addr_t size) | MacIONVRAMState *macio_nvram_init (int *mem_index, target_phys_addr_t size) | ||||||
| { | { | ||||||
|     MacIONVRAMState *s; |     MacIONVRAMState *s; | ||||||
|  | @ -120,6 +124,8 @@ MacIONVRAMState *macio_nvram_init (int *mem_index, target_phys_addr_t size) | ||||||
| 
 | 
 | ||||||
|     s->mem_index = cpu_register_io_memory(0, nvram_read, nvram_write, s); |     s->mem_index = cpu_register_io_memory(0, nvram_read, nvram_write, s); | ||||||
|     *mem_index = s->mem_index; |     *mem_index = s->mem_index; | ||||||
|  |     qemu_register_reset(macio_nvram_reset, s); | ||||||
|  |     macio_nvram_reset(s); | ||||||
| 
 | 
 | ||||||
|     return s; |     return s; | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										74
									
								
								hw/vga.c
								
								
								
								
							
							
						
						
									
										74
									
								
								hw/vga.c
								
								
								
								
							|  | @ -1826,10 +1826,73 @@ static void vga_invalidate_display(void *opaque) | ||||||
|     s->last_height = -1; |     s->last_height = -1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void vga_reset(VGAState *s) | static void vga_reset(void *opaque) | ||||||
| { | { | ||||||
|     memset(s, 0, sizeof(VGAState)); |     VGAState *s = (VGAState *) opaque; | ||||||
|  | 
 | ||||||
|  |     s->lfb_addr = 0; | ||||||
|  |     s->lfb_end = 0; | ||||||
|  |     s->map_addr = 0; | ||||||
|  |     s->map_end = 0; | ||||||
|  |     s->lfb_vram_mapped = 0; | ||||||
|  |     s->bios_offset = 0; | ||||||
|  |     s->bios_size = 0; | ||||||
|  |     s->sr_index = 0; | ||||||
|  |     memset(s->sr, '\0', sizeof(s->sr)); | ||||||
|  |     s->gr_index = 0; | ||||||
|  |     memset(s->gr, '\0', sizeof(s->gr)); | ||||||
|  |     s->ar_index = 0; | ||||||
|  |     memset(s->ar, '\0', sizeof(s->ar)); | ||||||
|  |     s->ar_flip_flop = 0; | ||||||
|  |     s->cr_index = 0; | ||||||
|  |     memset(s->cr, '\0', sizeof(s->cr)); | ||||||
|  |     s->msr = 0; | ||||||
|  |     s->fcr = 0; | ||||||
|  |     s->st00 = 0; | ||||||
|  |     s->st01 = 0; | ||||||
|  |     s->dac_state = 0; | ||||||
|  |     s->dac_sub_index = 0; | ||||||
|  |     s->dac_read_index = 0; | ||||||
|  |     s->dac_write_index = 0; | ||||||
|  |     memset(s->dac_cache, '\0', sizeof(s->dac_cache)); | ||||||
|  |     s->dac_8bit = 0; | ||||||
|  |     memset(s->palette, '\0', sizeof(s->palette)); | ||||||
|  |     s->bank_offset = 0; | ||||||
|  | #ifdef CONFIG_BOCHS_VBE | ||||||
|  |     s->vbe_index = 0; | ||||||
|  |     memset(s->vbe_regs, '\0', sizeof(s->vbe_regs)); | ||||||
|  |     s->vbe_regs[VBE_DISPI_INDEX_ID] = VBE_DISPI_ID0; | ||||||
|  |     s->vbe_start_addr = 0; | ||||||
|  |     s->vbe_line_offset = 0; | ||||||
|  |     s->vbe_bank_mask = (s->vram_size >> 16) - 1; | ||||||
|  | #endif | ||||||
|  |     memset(s->font_offsets, '\0', sizeof(s->font_offsets)); | ||||||
|     s->graphic_mode = -1; /* force full update */ |     s->graphic_mode = -1; /* force full update */ | ||||||
|  |     s->shift_control = 0; | ||||||
|  |     s->double_scan = 0; | ||||||
|  |     s->line_offset = 0; | ||||||
|  |     s->line_compare = 0; | ||||||
|  |     s->start_addr = 0; | ||||||
|  |     s->plane_updated = 0; | ||||||
|  |     s->last_cw = 0; | ||||||
|  |     s->last_ch = 0; | ||||||
|  |     s->last_width = 0; | ||||||
|  |     s->last_height = 0; | ||||||
|  |     s->last_scr_width = 0; | ||||||
|  |     s->last_scr_height = 0; | ||||||
|  |     s->cursor_start = 0; | ||||||
|  |     s->cursor_end = 0; | ||||||
|  |     s->cursor_offset = 0; | ||||||
|  |     memset(s->invalidated_y_table, '\0', sizeof(s->invalidated_y_table)); | ||||||
|  |     memset(s->last_palette, '\0', sizeof(s->last_palette)); | ||||||
|  |     memset(s->last_ch_attr, '\0', sizeof(s->last_ch_attr)); | ||||||
|  |     switch (vga_retrace_method) { | ||||||
|  |     case VGA_RETRACE_DUMB: | ||||||
|  |         break; | ||||||
|  |     case VGA_RETRACE_PRECISE: | ||||||
|  |         memset(&s->retrace_info, 0, sizeof (s->retrace_info)); | ||||||
|  |         break; | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #define TEXTMODE_X(x)	((x) % width) | #define TEXTMODE_X(x)	((x) % width) | ||||||
|  | @ -2179,8 +2242,6 @@ void vga_common_init(VGAState *s, DisplayState *ds, uint8_t *vga_ram_base, | ||||||
|         expand4to8[i] = v; |         expand4to8[i] = v; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     vga_reset(s); |  | ||||||
| 
 |  | ||||||
|     s->vram_ptr = vga_ram_base; |     s->vram_ptr = vga_ram_base; | ||||||
|     s->vram_offset = vga_ram_offset; |     s->vram_offset = vga_ram_offset; | ||||||
|     s->vram_size = vga_ram_size; |     s->vram_size = vga_ram_size; | ||||||
|  | @ -2201,9 +2262,10 @@ void vga_common_init(VGAState *s, DisplayState *ds, uint8_t *vga_ram_base, | ||||||
|     case VGA_RETRACE_PRECISE: |     case VGA_RETRACE_PRECISE: | ||||||
|         s->retrace = vga_precise_retrace; |         s->retrace = vga_precise_retrace; | ||||||
|         s->update_retrace_info = vga_precise_update_retrace_info; |         s->update_retrace_info = vga_precise_update_retrace_info; | ||||||
|         memset(&s->retrace_info, 0, sizeof (s->retrace_info)); |  | ||||||
|         break; |         break; | ||||||
|     } |     } | ||||||
|  |     qemu_register_reset(vga_reset, s); | ||||||
|  |     vga_reset(s); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* used by both ISA and PCI */ | /* used by both ISA and PCI */ | ||||||
|  | @ -2229,8 +2291,6 @@ void vga_init(VGAState *s) | ||||||
|     s->bank_offset = 0; |     s->bank_offset = 0; | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_BOCHS_VBE | #ifdef CONFIG_BOCHS_VBE | ||||||
|     s->vbe_regs[VBE_DISPI_INDEX_ID] = VBE_DISPI_ID0; |  | ||||||
|     s->vbe_bank_mask = ((s->vram_size >> 16) - 1); |  | ||||||
| #if defined (TARGET_I386) | #if defined (TARGET_I386) | ||||||
|     register_ioport_read(0x1ce, 1, 2, vbe_ioport_read_index, s); |     register_ioport_read(0x1ce, 1, 2, vbe_ioport_read_index, s); | ||||||
|     register_ioport_read(0x1cf, 1, 2, vbe_ioport_read_data, s); |     register_ioport_read(0x1cf, 1, 2, vbe_ioport_read_data, s); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 blueswir1
						blueswir1