Skip to content

Commit

Permalink
Compile ide/core only once
Browse files Browse the repository at this point in the history
Make win2k install hack unconditional as it is still restricted to
x86 only in vl.c.

Replace TARGET_PAGE_SIZE and 4096 with PAGE_SIZE.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
  • Loading branch information
blueswirl committed Mar 27, 2010
1 parent b305b9d commit f7736b9
Show file tree
Hide file tree
Showing 17 changed files with 24 additions and 17 deletions.
1 change: 1 addition & 0 deletions Makefile.objs
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ hw-obj-$(CONFIG_LAN9118) += lan9118.o
hw-obj-$(CONFIG_NE2000_ISA) += ne2000-isa.o

# IDE
hw-obj-$(CONFIG_IDE_CORE) += ide/core.o
hw-obj-$(CONFIG_IDE_QDEV) += ide/qdev.o
hw-obj-$(CONFIG_IDE_PCI) += ide/pci.o
hw-obj-$(CONFIG_IDE_ISA) += ide/isa.o
Expand Down
11 changes: 4 additions & 7 deletions Makefile.target
Original file line number Diff line number Diff line change
Expand Up @@ -181,8 +181,7 @@ obj-y += rtl8139.o
obj-y += e1000.o

# Hardware support
obj-i386-y = ide/core.o
obj-i386-y += pckbd.o dma.o
obj-i386-y = pckbd.o dma.o
obj-i386-y += vga.o
obj-i386-y += mc146818rtc.o i8259.o pc.o
obj-i386-y += cirrus_vga.o apic.o ioapic.o acpi.o piix_pci.o
Expand All @@ -191,7 +190,7 @@ obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o wdt_ib700.o
obj-i386-y += debugcon.o multiboot.o

# shared objects
obj-ppc-y = ppc.o ide/core.o ide/macio.o
obj-ppc-y = ppc.o ide/macio.o
obj-ppc-y += vga.o dma.o openpic.o
# PREP target
obj-ppc-y += pckbd.o i8259.o mc146818rtc.o
Expand All @@ -215,7 +214,6 @@ obj-mips-y += mips_addr.o mips_timer.o mips_int.o
obj-mips-y += dma.o vga.o i8259.o rc4030.o
obj-mips-y += vga-isa-mm.o
obj-mips-y += g364fb.o jazz_led.o dp8393x.o
obj-mips-y += ide/core.o
obj-mips-y += gt64xxx.o pckbd.o mc146818rtc.o acpi.o ds1225y.o
obj-mips-y += piix4.o cirrus_vga.o
obj-mips-y += mipsnet.o
Expand Down Expand Up @@ -248,7 +246,6 @@ obj-cris-y += pflash_cfi02.o

ifeq ($(TARGET_ARCH), sparc64)
obj-sparc-y = sun4u.o pckbd.o apb_pci.o
obj-sparc-y += ide/core.o
obj-sparc-y += vga.o
obj-sparc-y += mc146818rtc.o
obj-sparc-y += cirrus_vga.o
Expand All @@ -268,7 +265,7 @@ obj-arm-y += arm-semi.o
obj-arm-y += pxa2xx.o pxa2xx_pic.o pxa2xx_gpio.o pxa2xx_timer.o pxa2xx_dma.o
obj-arm-y += pxa2xx_lcd.o pxa2xx_mmci.o pxa2xx_pcmcia.o pxa2xx_keypad.o
obj-arm-y += pflash_cfi01.o gumstix.o
obj-arm-y += zaurus.o ide/core.o ide/microdrive.o spitz.o tosa.o tc6393xb.o
obj-arm-y += zaurus.o ide/microdrive.o spitz.o tosa.o tc6393xb.o
obj-arm-y += omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o
obj-arm-y += omap2.o omap_dss.o soc_dma.o
obj-arm-y += omap_sx1.o palm.o tsc210x.o
Expand All @@ -282,7 +279,7 @@ obj-arm-y += syborg_virtio.o

obj-sh4-y = shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o
obj-sh4-y += sh_timer.o sh_serial.o sh_intc.o sh_pci.o sm501.o
obj-sh4-y += ide/core.o ide/mmio.o
obj-sh4-y += ide/mmio.o

obj-m68k-y = an5206.o mcf5206.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o
obj-m68k-y += m68k-semi.o dummy_m68k.o
Expand Down
1 change: 1 addition & 0 deletions default-configs/arm-softmmu.mak
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ CONFIG_ECC=y
CONFIG_SERIAL=y
CONFIG_PTIMER=y
CONFIG_SD=y
CONFIG_IDE_CORE=y
CONFIG_MAX7310=y
CONFIG_WM8750=y
CONFIG_TWL92230=y
Expand Down
1 change: 1 addition & 0 deletions default-configs/i386-softmmu.mak
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ CONFIG_I8254=y
CONFIG_PCSPK=y
CONFIG_USB_UHCI=y
CONFIG_FDC=y
CONFIG_IDE_CORE=y
CONFIG_IDE_QDEV=y
CONFIG_IDE_PCI=y
CONFIG_IDE_ISA=y
Expand Down
1 change: 1 addition & 0 deletions default-configs/mips-softmmu.mak
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ CONFIG_I8254=y
CONFIG_PCSPK=y
CONFIG_USB_UHCI=y
CONFIG_FDC=y
CONFIG_IDE_CORE=y
CONFIG_IDE_QDEV=y
CONFIG_IDE_PCI=y
CONFIG_IDE_ISA=y
Expand Down
1 change: 1 addition & 0 deletions default-configs/mips64-softmmu.mak
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ CONFIG_I8254=y
CONFIG_PCSPK=y
CONFIG_USB_UHCI=y
CONFIG_FDC=y
CONFIG_IDE_CORE=y
CONFIG_IDE_QDEV=y
CONFIG_IDE_PCI=y
CONFIG_IDE_ISA=y
Expand Down
1 change: 1 addition & 0 deletions default-configs/mips64el-softmmu.mak
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ CONFIG_I8254=y
CONFIG_PCSPK=y
CONFIG_USB_UHCI=y
CONFIG_FDC=y
CONFIG_IDE_CORE=y
CONFIG_IDE_QDEV=y
CONFIG_IDE_PCI=y
CONFIG_IDE_ISA=y
Expand Down
1 change: 1 addition & 0 deletions default-configs/mipsel-softmmu.mak
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ CONFIG_I8254=y
CONFIG_PCSPK=y
CONFIG_USB_UHCI=y
CONFIG_FDC=y
CONFIG_IDE_CORE=y
CONFIG_IDE_QDEV=y
CONFIG_IDE_PCI=y
CONFIG_IDE_ISA=y
Expand Down
1 change: 1 addition & 0 deletions default-configs/ppc-softmmu.mak
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ CONFIG_VGA_PCI=y
CONFIG_SERIAL=y
CONFIG_I8254=y
CONFIG_FDC=y
CONFIG_IDE_CORE=y
CONFIG_IDE_QDEV=y
CONFIG_IDE_PCI=y
CONFIG_IDE_ISA=y
Expand Down
1 change: 1 addition & 0 deletions default-configs/ppc64-softmmu.mak
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ CONFIG_VGA_PCI=y
CONFIG_SERIAL=y
CONFIG_I8254=y
CONFIG_FDC=y
CONFIG_IDE_CORE=y
CONFIG_IDE_QDEV=y
CONFIG_IDE_PCI=y
CONFIG_IDE_ISA=y
Expand Down
1 change: 1 addition & 0 deletions default-configs/ppcemb-softmmu.mak
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ CONFIG_VGA_PCI=y
CONFIG_SERIAL=y
CONFIG_I8254=y
CONFIG_FDC=y
CONFIG_IDE_CORE=y
CONFIG_IDE_QDEV=y
CONFIG_IDE_PCI=y
CONFIG_IDE_ISA=y
Expand Down
1 change: 1 addition & 0 deletions default-configs/sh4-softmmu.mak
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ CONFIG_USB_OHCI=y
CONFIG_SERIAL=y
CONFIG_PTIMER=y
CONFIG_VIRTIO_PCI=y
CONFIG_IDE_CORE=y
1 change: 1 addition & 0 deletions default-configs/sh4eb-softmmu.mak
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ CONFIG_USB_OHCI=y
CONFIG_SERIAL=y
CONFIG_PTIMER=y
CONFIG_VIRTIO_PCI=y
CONFIG_IDE_CORE=y
1 change: 1 addition & 0 deletions default-configs/sparc64-softmmu.mak
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ CONFIG_VGA_PCI=y
CONFIG_SERIAL=y
CONFIG_PARALLEL=y
CONFIG_FDC=y
CONFIG_IDE_CORE=y
CONFIG_IDE_QDEV=y
CONFIG_IDE_PCI=y
CONFIG_IDE_ISA=y
Expand Down
1 change: 1 addition & 0 deletions default-configs/x86_64-softmmu.mak
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ CONFIG_I8254=y
CONFIG_PCSPK=y
CONFIG_USB_UHCI=y
CONFIG_FDC=y
CONFIG_IDE_CORE=y
CONFIG_IDE_QDEV=y
CONFIG_IDE_PCI=y
CONFIG_IDE_ISA=y
Expand Down
14 changes: 5 additions & 9 deletions hw/ide/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
#include <hw/pc.h>
#include <hw/pci.h>
#include <hw/scsi.h>
#include <hw/sh.h>
#include "block.h"
#include "block_int.h"
#include "qemu-timer.h"
Expand Down Expand Up @@ -434,13 +433,13 @@ static int dma_buf_prepare(BMDMAState *bm, int is_write)
} prd;
int l, len;

qemu_sglist_init(&s->sg, s->nsector / (TARGET_PAGE_SIZE/512) + 1);
qemu_sglist_init(&s->sg, s->nsector / (PAGE_SIZE / 512) + 1);
s->io_buffer_size = 0;
for(;;) {
if (bm->cur_prd_len == 0) {
/* end of table (with a fail safe of one page) */
if (bm->cur_prd_last ||
(bm->cur_addr - bm->addr) >= 4096)
(bm->cur_addr - bm->addr) >= PAGE_SIZE)
return s->io_buffer_size != 0;
cpu_physical_memory_read(bm->cur_addr, (uint8_t *)&prd, 8);
bm->cur_addr += 8;
Expand Down Expand Up @@ -523,7 +522,7 @@ static int dma_buf_rw(BMDMAState *bm, int is_write)
if (bm->cur_prd_len == 0) {
/* end of table (with a fail safe of one page) */
if (bm->cur_prd_last ||
(bm->cur_addr - bm->addr) >= 4096)
(bm->cur_addr - bm->addr) >= PAGE_SIZE)
return 0;
cpu_physical_memory_read(bm->cur_addr, (uint8_t *)&prd, 8);
bm->cur_addr += 8;
Expand Down Expand Up @@ -651,19 +650,16 @@ static void ide_sector_write(IDEState *s)
}
ide_set_sector(s, sector_num + n);

#ifdef TARGET_I386
if (win2k_install_hack && ((++s->irq_count % 16) == 0)) {
/* It seems there is a bug in the Windows 2000 installer HDD
IDE driver which fills the disk with empty logs when the
IDE write IRQ comes too early. This hack tries to correct
that at the expense of slower write performances. Use this
option _only_ to install Windows 2000. You must disable it
for normal use. */
qemu_mod_timer(s->sector_write_timer,
qemu_mod_timer(s->sector_write_timer,
qemu_get_clock(vm_clock) + (get_ticks_per_sec() / 1000));
} else
#endif
{
} else {
ide_set_irq(s->bus);
}
}
Expand Down
2 changes: 1 addition & 1 deletion vl.c
Original file line number Diff line number Diff line change
Expand Up @@ -207,8 +207,8 @@ int no_quit = 0;
CharDriverState *serial_hds[MAX_SERIAL_PORTS];
CharDriverState *parallel_hds[MAX_PARALLEL_PORTS];
CharDriverState *virtcon_hds[MAX_VIRTIO_CONSOLES];
#ifdef TARGET_I386
int win2k_install_hack = 0;
#ifdef TARGET_I386
int rtc_td_hack = 0;
#endif
int usb_enabled = 0;
Expand Down

0 comments on commit f7736b9

Please sign in to comment.