Hi, Avi Due to last merge with Qemu upstream, some interfaces are changed, and leads to build fail , this patch fixed them. Xiantao From: Zhang Xiantao <[EMAIL PROTECTED]> Date: Fri, 21 Dec 2007 22:47:52 +0800 Subject: [PATCH] kvm: qemu : Fix ia64 build on latest source.
Due to last merge with qemu upstream, ia64 build is broken. This patch fix it. Signed-off-by: Zhang Xiantao <[EMAIL PROTECTED]> --- qemu/hw/boards.h | 3 + qemu/hw/ipf.c | 553 +++++++++++++++++++++++------------------- qemu/qemu-kvm-ia64.c | 2 +- qemu/sysemu.h | 5 + qemu/target-ia64/cpu.h | 10 +- qemu/target-ia64/firmware.c | 1 - qemu/target-ia64/op_helper.c | 2 +- 7 files changed, 325 insertions(+), 251 deletions(-) diff --git a/qemu/hw/boards.h b/qemu/hw/boards.h index 079760d..3285e6e 100644 --- a/qemu/hw/boards.h +++ b/qemu/hw/boards.h @@ -96,4 +96,7 @@ extern QEMUMachine dummy_m68k_machine; /* mainstone.c */ extern QEMUMachine mainstone2_machine; +/* ipf.c */ +extern QEMUMachine ipf_machine; + #endif diff --git a/qemu/hw/ipf.c b/qemu/hw/ipf.c index 9bcdb85..9c74531 100644 --- a/qemu/hw/ipf.c +++ b/qemu/hw/ipf.c @@ -24,9 +24,20 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -#include "vl.h" + +#include "hw.h" +#include "pc.h" +#include "fdc.h" +#include "pci.h" +#include "block.h" +#include "sysemu.h" +#include "audio/audio.h" +#include "net.h" +#include "smbus.h" +#include "boards.h" #include "firmware.h" #include "ia64intrin.h" +#include "dyngen.h" #include <unistd.h> #ifdef USE_KVM @@ -34,34 +45,23 @@ extern int kvm_allowed; #endif -/* output Bochs bios info messages */ -//#define DEBUG_BIOS - #define FW_FILENAME "Flash.fd" /* Leave a chunk of memory at the top of RAM for the BIOS ACPI tables. */ #define ACPI_DATA_SIZE 0x10000 +#define MAX_IDE_BUS 2 + static fdctrl_t *floppy_controller; static RTCState *rtc_state; static PCIDevice *i440fx_state; -static const int ide_iobase[2] = { 0x1f0, 0x170 }; -static const int ide_iobase2[2] = { 0x3f6, 0x376 }; -static const int ide_irq[2] = { 14, 15 }; - -#define NE2000_NB_MAX 6 - -static int ne2000_io[NE2000_NB_MAX] = { 0x300, 0x320, 0x340, 0x360, 0x280, 0x380 }; -static int ne2000_irq[NE2000_NB_MAX] = { 9, 10, 11, 3, 4, 5 }; - -static int serial_io[MAX_SERIAL_PORTS] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8 }; -static int serial_irq[MAX_SERIAL_PORTS] = { 4, 3, 4, 3 }; - -static int parallel_io[MAX_PARALLEL_PORTS] = { 0x378, 0x278, 0x3bc }; -static int parallel_irq[MAX_PARALLEL_PORTS] = { 7, 7, 7 }; +static void pic_irq_request(void *opaque, int irq, int level) +{ + fprintf(stderr,"pic_irq_request called!\n"); +} -/* cmos mappings */ +/* PC cmos mappings */ #define REG_EQUIPMENT_BYTE 0x14 @@ -106,10 +106,30 @@ static void cmos_init_hd(int type_ofs, int info_ofs, BlockDriverState *hd) rtc_set_memory(s, info_ofs + 8, sectors); } +/* convert boot_device letter to something recognizable by the bios */ +static int boot_device2nibble(char boot_device) +{ + switch(boot_device) { + case 'a': + case 'b': + return 0x01; /* floppy boot */ + case 'c': + return 0x02; /* hard drive boot */ + case 'd': + return 0x03; /* CD-ROM boot */ + case 'n': + return 0x04; /* Network boot */ + } + return 0; +} + /* hd_table must contain 4 block drivers */ -static void cmos_init(ram_addr_t ram_size, ram_addr_t above_4g_mem_size, int boot_device, BlockDriverState **hd_table, int smp_cpus) +static void cmos_init(ram_addr_t ram_size, ram_addr_t above_4g_mem_size, + const char *boot_device, BlockDriverState **hd_table, + int smp_cpus) { RTCState *s = rtc_state; + int nbds, bds[3] = { 0, }; int val; int fd0, fd1, nb; int i; @@ -145,24 +165,23 @@ static void cmos_init(ram_addr_t ram_size, ram_addr_t above_4g_mem_size, int boo rtc_set_memory(s, 0x34, val); rtc_set_memory(s, 0x35, val >> 8); - switch(boot_device) { - case 'a': - case 'b': - rtc_set_memory(s, 0x3d, 0x01); /* floppy boot */ - if (!fd_bootchk) - rtc_set_memory(s, 0x38, 0x01); /* disable signature check */ - break; - default: - case 'c': - rtc_set_memory(s, 0x3d, 0x02); /* hard drive boot */ - break; - case 'd': - rtc_set_memory(s, 0x3d, 0x03); /* CD-ROM boot */ - break; - case 'n': - rtc_set_memory(s, 0x3d, 0x04); /* Network boot */ - break; + /* set boot devices, and disable floppy signature check if requested */ +#define PC_MAX_BOOT_DEVICES 3 + nbds = strlen(boot_device); + if (nbds > PC_MAX_BOOT_DEVICES) { + fprintf(stderr, "Too many boot devices for PC\n"); + exit(1); + } + for (i = 0; i < nbds; i++) { + bds[i] = boot_device2nibble(boot_device[i]); + if (bds[i] == 0) { + fprintf(stderr, "Invalid boot device for PC: '%c'\n", + boot_device[i]); + exit(1); + } } + rtc_set_memory(s, 0x3d, (bds[1] << 4) | bds[0]); + rtc_set_memory(s, 0x38, (bds[2] << 4) | (fd_bootchk ? 0x0 : 0x1)); /* floppy type */ @@ -227,47 +246,67 @@ static void cmos_init(ram_addr_t ram_size, ram_addr_t above_4g_mem_size, int boo rtc_set_memory(s, 0x39, val); } +static void main_cpu_reset(void *opaque) +{ + CPUState *env = opaque; + cpu_reset(env); +} + +static const int ide_iobase[2] = { 0x1f0, 0x170 }; +static const int ide_iobase2[2] = { 0x3f6, 0x376 }; +static const int ide_irq[2] = { 14, 15 }; + +#define NE2000_NB_MAX 6 + +static int ne2000_io[NE2000_NB_MAX] = { 0x300, 0x320, 0x340, 0x360, 0x280, 0x380 }; +static int ne2000_irq[NE2000_NB_MAX] = { 9, 10, 11, 3, 4, 5 }; + +static int serial_io[MAX_SERIAL_PORTS] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8 }; +static int serial_irq[MAX_SERIAL_PORTS] = { 4, 3, 4, 3 }; + +static int parallel_io[MAX_PARALLEL_PORTS] = { 0x378, 0x278, 0x3bc }; +static int parallel_irq[MAX_PARALLEL_PORTS] = { 7, 7, 7 }; #ifdef HAS_AUDIO static void audio_init (PCIBus *pci_bus, qemu_irq *pic) { - struct soundhw *c; - int audio_enabled = 0; + struct soundhw *c; + int audio_enabled = 0; - for (c = soundhw; !audio_enabled && c->name; ++c) { - audio_enabled = c->enabled; - } + for (c = soundhw; !audio_enabled && c->name; ++c) { + audio_enabled = c->enabled; + } - if (audio_enabled) { - AudioState *s; - - s = AUD_init (); - if (s) { - for (c = soundhw; c->name; ++c) { - if (c->enabled) { - if (c->isa) { - c->init.init_isa (s, pic); - } - else { - if (pci_bus) { - c->init.init_pci (pci_bus, s); - } - } - } - } - } - } + if (audio_enabled) { + AudioState *s; + + s = AUD_init (); + if (s) { + for (c = soundhw; c->name; ++c) { + if (c->enabled) { + if (c->isa) { + c->init.init_isa (s, pic); + } + else { + if (pci_bus) { + c->init.init_pci (pci_bus, s); + } + } + } + } + } + } } #endif static void pc_init_ne2k_isa(NICInfo *nd, qemu_irq *pic) { - static int nb_ne2k = 0; + static int nb_ne2k = 0; - if (nb_ne2k == NE2000_NB_MAX) - return; - isa_ne2000_init(ne2000_io[nb_ne2k], pic[ne2000_irq[nb_ne2k]], nd); - nb_ne2k++; + if (nb_ne2k == NE2000_NB_MAX) + return; + isa_ne2000_init(ne2000_io[nb_ne2k], pic[ne2000_irq[nb_ne2k]], nd); + nb_ne2k++; } #ifdef USE_KVM @@ -275,55 +314,57 @@ extern kvm_context_t kvm_context; extern int kvm_allowed; #endif -static void main_cpu_reset(void *opaque) -{ - CPUState *env = opaque; - cpu_reset(env); -} -static void pic_irq_request(void *opaque, int irq, int level) -{ - fprintf(stderr,"pic_irq_request called!\n"); -} - -/* IPF hardware initialisation */ -static void ipf_init1(ram_addr_t ram_size, int vga_ram_size, int boot_device, - DisplayState *ds, const char **fd_filename, int snapshot, - const char *kernel_filename, const char *kernel_cmdline, - const char *initrd_filename, - int pci_enabled) +/* Itanium hardware initialisation */ +static void ipf_init1(ram_addr_t ram_size, int vga_ram_size, + const char *boot_device, DisplayState *ds, + const char *kernel_filename, const char *kernel_cmdline, + const char *initrd_filename, + int pci_enabled, const char *cpu_model) { - char buf[1024]; - int i; - ram_addr_t ram_addr, vga_ram_addr; - ram_addr_t above_4g_mem_size = 0; - PCIBus *pci_bus; - int piix3_devfn = -1; - CPUState *env; - NICInfo *nd; - qemu_irq *cpu_irq; - qemu_irq *i8259; - int page_size; - - page_size = getpagesize(); - if (page_size != TARGET_PAGE_SIZE) { - fprintf(stderr,"Error! Host page size != qemu target page size," - " you may need to change TARGET_PAGE_BITS in qemu!\n"); + char buf[1024]; + int i; + ram_addr_t ram_addr, vga_ram_addr; + ram_addr_t above_4g_mem_size = 0; + PCIBus *pci_bus; + int piix3_devfn = -1; + CPUState *env; + NICInfo *nd; + qemu_irq *cpu_irq; + qemu_irq *i8259; + int page_size; + int index; + BlockDriverState *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; + BlockDriverState *fd[MAX_FD]; + + page_size = getpagesize(); + if (page_size != TARGET_PAGE_SIZE) { + fprintf(stderr,"Error! Host page size != qemu target page size," + " you may need to change TARGET_PAGE_BITS in qemu!" + "host page size:0x%x\n", page_size); exit(-1); - } + }; - if (ram_size >= 0xc0000000 ) { - above_4g_mem_size = ram_size - 0xc0000000; - ram_size = 0xc0000000; - } + if (ram_size >= 0xc0000000 ) { + above_4g_mem_size = ram_size - 0xc0000000; + ram_size = 0xc0000000; + } - /* init CPUs */ - for(i = 0; i < smp_cpus; i++) { - env = cpu_init(); - if (i != 0) - env->hflags |= HF_HALTED_MASK; - register_savevm("cpu", i, 4, cpu_save, cpu_load, env); - qemu_register_reset(main_cpu_reset, env); - } + /* init CPUs */ + if (cpu_model == NULL) { + cpu_model = "IA64"; + } + + for(i = 0; i < smp_cpus; i++) { + env = cpu_init(cpu_model); + if (!env) { + fprintf(stderr, "Unable to find CPU definition\n"); + exit(1); + } + if (i != 0) + env->hflags |= HF_HALTED_MASK; + register_savevm("cpu", i, 4, cpu_save, cpu_load, env); + qemu_register_reset(main_cpu_reset, env); + } /* allocate RAM */ #ifdef USE_KVM @@ -346,20 +387,20 @@ static void ipf_init1(ram_addr_t ram_size, int vga_ram_size, int boot_device, } else #endif #endif - { - ram_addr = qemu_ram_alloc(ram_size); - cpu_register_physical_memory(0, ram_size, ram_addr); - } - /* allocate VGA RAM */ - vga_ram_addr = qemu_ram_alloc(vga_ram_size); + { + ram_addr = qemu_ram_alloc(ram_size); + cpu_register_physical_memory(0, ram_size, ram_addr); + } + /* allocate VGA RAM */ + vga_ram_addr = qemu_ram_alloc(vga_ram_size); /* above 4giga memory allocation */ if (above_4g_mem_size > 0) { ram_addr = qemu_ram_alloc(above_4g_mem_size); cpu_register_physical_memory(0x100000000, above_4g_mem_size, ram_addr); #ifdef USE_KVM - if (kvm_allowed) - kvm_cpu_register_physical_memory(0x100000000, above_4g_mem_size, + if (kvm_allowed) + kvm_cpu_register_physical_memory(0x100000000, above_4g_mem_size, ram_addr); #endif } @@ -400,158 +441,180 @@ static void ipf_init1(ram_addr_t ram_size, int vga_ram_size, int boot_device, memcpy(fw_image_start, image, image_size); } free(image); - kvm_sync_icache((unsigned long)fw_image_start, image_size); + flush_icache_range((unsigned long)fw_image_start, + (unsigned long)fw_image_start + image_size); kvm_ia64_build_hob(ram_size, smp_cpus, fw_start); } #endif - cpu_irq = qemu_allocate_irqs(pic_irq_request, first_cpu, 1); - i8259 = i8259_init(cpu_irq[0]); + cpu_irq = qemu_allocate_irqs(pic_irq_request, first_cpu, 1); + i8259 = i8259_init(cpu_irq[0]); - if (pci_enabled) { - pci_bus = i440fx_init(&i440fx_state, i8259); - piix3_devfn = piix3_init(pci_bus, -1); - } else { - pci_bus = NULL; - } + if (pci_enabled) { + pci_bus = i440fx_init(&i440fx_state, i8259); + piix3_devfn = piix3_init(pci_bus, -1); + } else { + pci_bus = NULL; + } - if (cirrus_vga_enabled) { - if (pci_enabled) { - pci_cirrus_vga_init(pci_bus, - ds, phys_ram_base + vga_ram_addr, - vga_ram_addr, vga_ram_size); - } else { - isa_cirrus_vga_init(ds, phys_ram_base + vga_ram_addr, - vga_ram_addr, vga_ram_size); - } - } else { - if (pci_enabled) { - pci_vga_init(pci_bus, ds, phys_ram_base + vga_ram_addr, - vga_ram_addr, vga_ram_size, 0, 0); - } else { - isa_vga_init(ds, phys_ram_base + vga_ram_addr, - vga_ram_addr, vga_ram_size); - } - } - rtc_state = rtc_init(0x70, i8259[8]); + if (cirrus_vga_enabled) { + if (pci_enabled) { + pci_cirrus_vga_init(pci_bus, + ds, phys_ram_base + vga_ram_addr, + vga_ram_addr, vga_ram_size); + } else { + isa_cirrus_vga_init(ds, phys_ram_base + vga_ram_addr, + vga_ram_addr, vga_ram_size); + } + } else { + if (pci_enabled) { + pci_vga_init(pci_bus, ds, phys_ram_base + vga_ram_addr, + vga_ram_addr, vga_ram_size, 0, 0); + } else { + isa_vga_init(ds, phys_ram_base + vga_ram_addr, + vga_ram_addr, vga_ram_size); + } + } - if (pci_enabled) { - pic_set_alt_irq_func(isa_pic, NULL, NULL); - } + rtc_state = rtc_init(0x70, i8259[8]); - for(i = 0; i < MAX_SERIAL_PORTS; i++) { - if (serial_hds[i]) { - serial_init(serial_io[i], i8259[serial_irq[i]], serial_hds[i]); - } - } + if (pci_enabled) { + pic_set_alt_irq_func(isa_pic, NULL, NULL); + } - for(i = 0; i < MAX_PARALLEL_PORTS; i++) { - if (parallel_hds[i]) { - parallel_init(parallel_io[i], i8259[parallel_irq[i]], - parallel_hds[i]); - } - } + for(i = 0; i < MAX_SERIAL_PORTS; i++) { + if (serial_hds[i]) { + serial_init(serial_io[i], i8259[serial_irq[i]], serial_hds[i]); + } + } - for(i = 0; i < nb_nics; i++) { - nd = &nd_table[i]; - if (!nd->model) { - if (pci_enabled) { - nd->model = "ne2k_pci"; - } else { - nd->model = "ne2k_isa"; - } - } - if (strcmp(nd->model, "ne2k_isa") == 0) { - pc_init_ne2k_isa(nd, i8259); - } else if (pci_enabled) { - if (strcmp(nd->model, "?") == 0) - fprintf(stderr, "qemu: Supported ISA NICs: ne2k_isa\n"); - pci_nic_init(pci_bus, nd, -1); - } else if (strcmp(nd->model, "?") == 0) { - fprintf(stderr, "qemu: Supported ISA NICs: ne2k_isa\n"); - exit(1); - } else { - fprintf(stderr, "qemu: Unsupported NIC: %s\n", nd->model); - exit(1); - } - } + for(i = 0; i < MAX_PARALLEL_PORTS; i++) { + if (parallel_hds[i]) { + parallel_init(parallel_io[i], i8259[parallel_irq[i]], + parallel_hds[i]); + } + } -#undef USE_HYPERCALL // Disable hypercall now, due to shor of support for VT-i. + for(i = 0; i < nb_nics; i++) { + nd = &nd_table[i]; + if (!nd->model) { + if (pci_enabled) { + nd->model = "ne2k_pci"; + } else { + nd->model = "ne2k_isa"; + } + } + if (strcmp(nd->model, "ne2k_isa") == 0) { + pc_init_ne2k_isa(nd, i8259); + } else if (pci_enabled) { + if (strcmp(nd->model, "?") == 0) + fprintf(stderr, "qemu: Supported ISA NICs: ne2k_isa\n"); + pci_nic_init(pci_bus, nd, -1); + } else if (strcmp(nd->model, "?") == 0) { + fprintf(stderr, "qemu: Supported ISA NICs: ne2k_isa\n"); + exit(1); + } else { + fprintf(stderr, "qemu: Unsupported NIC: %s\n", nd->model); + exit(1); + } + } + +#undef USE_HYPERCALL //Disable it now, need to implement later! #ifdef USE_HYPERCALL - pci_hypercall_init(pci_bus); + pci_hypercall_init(pci_bus); #endif - if (pci_enabled) { - pci_piix3_ide_init(pci_bus, bs_table, piix3_devfn + 1, i8259); - } else { - for(i = 0; i < 2; i++) { - isa_ide_init(ide_iobase[i], ide_iobase2[i], i8259[ide_irq[i]], - bs_table[2 * i], bs_table[2 * i + 1]); - } - } - i8042_init(i8259[1], i8259[12], 0x60); - DMA_init(0); + if (drive_get_max_bus(IF_IDE) >= MAX_IDE_BUS) { + fprintf(stderr, "qemu: too many IDE bus\n"); + exit(1); + } + + for(i = 0; i < MAX_IDE_BUS * MAX_IDE_DEVS; i++) { + index = drive_get_index(IF_IDE, i / MAX_IDE_DEVS, i % MAX_IDE_DEVS); + if (index != -1) + hd[i] = drives_table[index].bdrv; + else + hd[i] = NULL; + } + + if (pci_enabled) { + pci_piix3_ide_init(pci_bus, hd, piix3_devfn + 1, i8259); + } else { + for(i = 0; i < MAX_IDE_BUS; i++) { + isa_ide_init(ide_iobase[i], ide_iobase2[i], i8259[ide_irq[i]], + hd[MAX_IDE_DEVS * i], hd[MAX_IDE_DEVS * i + 1]); + } + } + + i8042_init(i8259[1], i8259[12], 0x60); + DMA_init(0); #ifdef HAS_AUDIO - audio_init(pci_enabled ? pci_bus : NULL, i8259); + audio_init(pci_enabled ? pci_bus : NULL, i8259); #endif - floppy_controller = fdctrl_init(i8259[6], 2, 0, 0x3f0, fd_table); + for(i = 0; i < MAX_FD; i++) { + index = drive_get_index(IF_FLOPPY, 0, i); + if (index != -1) + fd[i] = drives_table[index].bdrv; + else + fd[i] = NULL; + } + floppy_controller = fdctrl_init(i8259[6], 2, 0, 0x3f0, fd); - cmos_init(ram_size, above_4g_mem_size, boot_device, bs_table, smp_cpus); + cmos_init(ram_size, above_4g_mem_size, boot_device, hd, smp_cpus); - if (pci_enabled && usb_enabled) { - usb_uhci_piix3_init(pci_bus, piix3_devfn + 2); - } + if (pci_enabled && usb_enabled) { + usb_uhci_piix3_init(pci_bus, piix3_devfn + 2); + } - if (pci_enabled && acpi_enabled) { - uint8_t *eeprom_buf = qemu_mallocz(8 * 256); /* XXX: make this persistent */ - i2c_bus *smbus; + if (pci_enabled && acpi_enabled) { + uint8_t *eeprom_buf = qemu_mallocz(8 * 256); /* XXX: make this persistent */ + i2c_bus *smbus; - /* TODO: Populate SPD eeprom data. */ - smbus = piix4_pm_init(pci_bus, piix3_devfn + 3, 0xb100); - for (i = 0; i < 8; i++) { - smbus_eeprom_device_init(smbus, 0x50 + i, eeprom_buf + (i * 256)); - } - } + /* TODO: Populate SPD eeprom data. */ + smbus = piix4_pm_init(pci_bus, piix3_devfn + 3, 0xb100); + for (i = 0; i < 8; i++) { + smbus_eeprom_device_init(smbus, 0x50 + i, eeprom_buf + (i * 256)); + } + } - if (i440fx_state) { - i440fx_init_memory_mappings(i440fx_state); - } -#if 0 - /* ??? Need to figure out some way for the user to - specify SCSI devices. */ - if (pci_enabled) { - void *scsi; - BlockDriverState *bdrv; - - scsi = lsi_scsi_init(pci_bus, -1); - bdrv = bdrv_new("scsidisk"); - bdrv_open(bdrv, "scsi_disk.img", 0); - lsi_scsi_attach(scsi, bdrv, -1); - bdrv = bdrv_new("scsicd"); - bdrv_open(bdrv, "scsi_cd.iso", 0); - bdrv_set_type_hint(bdrv, BDRV_TYPE_CDROM); - lsi_scsi_attach(scsi, bdrv, -1); - } -#endif + if (i440fx_state) { + i440fx_init_memory_mappings(i440fx_state); + } + + if (pci_enabled) { + int max_bus; + int bus, unit; + void *scsi; + + max_bus = drive_get_max_bus(IF_SCSI); + + for (bus = 0; bus <= max_bus; bus++) { + scsi = lsi_scsi_init(pci_bus, -1); + for (unit = 0; unit < LSI_MAX_DEVS; unit++) { + index = drive_get_index(IF_SCSI, bus, unit); + if (index == -1) + continue; + lsi_scsi_attach(scsi, drives_table[index].bdrv, unit); + } + } + } } -static void ipf_init_pci(ram_addr_t ram_size, int vga_ram_size, int boot_device, - DisplayState *ds, const char **fd_filename, - int snapshot, - const char *kernel_filename, - const char *kernel_cmdline, - const char *initrd_filename, - const char *cpu_model) +static void ipf_init_pci(ram_addr_t ram_size, int vga_ram_size, + const char *boot_device, DisplayState *ds, + const char *kernel_filename, + const char *kernel_cmdline, + const char *initrd_filename, + const char *cpu_model) { - ipf_init1(ram_size, vga_ram_size, boot_device, - ds, fd_filename, snapshot, - kernel_filename, kernel_cmdline, - initrd_filename, 1); + ipf_init1(ram_size, vga_ram_size, boot_device, ds, + kernel_filename, kernel_cmdline, + initrd_filename, 1, cpu_model); } QEMUMachine ipf_machine = { - "itanium", - "Itanium Platform", - ipf_init_pci, + "itanium", + "Itanium Platform", + ipf_init_pci, }; diff --git a/qemu/qemu-kvm-ia64.c b/qemu/qemu-kvm-ia64.c index 0029a43..d3d6ac7 100644 --- a/qemu/qemu-kvm-ia64.c +++ b/qemu/qemu-kvm-ia64.c @@ -8,8 +8,8 @@ extern int kvm_irqchip; #ifdef USE_KVM #include <string.h> -#include "vl.h" +#include "hw/hw.h" #include "qemu-kvm.h" #include <libkvm.h> #include <pthread.h> diff --git a/qemu/sysemu.h b/qemu/sysemu.h index 1f5b093..87098ae 100644 --- a/qemu/sysemu.h +++ b/qemu/sysemu.h @@ -107,7 +107,12 @@ extern unsigned int nb_prom_envs; #endif /* XXX: make it dynamic */ +#ifndef TARGET_IA64 #define MAX_BIOS_SIZE (4 * 1024 * 1024) +#else +#define MAX_BIOS_SIZE (16 * 1024 * 1024) +#endif + #if defined (TARGET_PPC) #define BIOS_SIZE (1024 * 1024) #elif defined (TARGET_SPARC64) diff --git a/qemu/target-ia64/cpu.h b/qemu/target-ia64/cpu.h index be409c7..2d91cb9 100644 --- a/qemu/target-ia64/cpu.h +++ b/qemu/target-ia64/cpu.h @@ -30,11 +30,11 @@ #define TARGET_LONG_BITS 64 - -#define TARGET_PAGE_BITS 14 +#define TARGET_PAGE_BITS 16 #define ELF_MACHINE EM_IA_64 +#define NB_MMU_MODES 2 #define CPU_PAL_HALT 1 #define HF_HALTED_MASK (1 << CPU_PAL_HALT) @@ -69,7 +69,11 @@ void cpu_dump_state(CPUState *env, FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...), int flags); -CPUState *cpu_ia64_init(void); +CPUState *cpu_ia64_init(char * cpu_model); +static inline int cpu_mmu_index (CPUState *env) +{ + return 0; +} #include "cpu-all.h" diff --git a/qemu/target-ia64/firmware.c b/qemu/target-ia64/firmware.c index 2469350..51650c8 100644 --- a/qemu/target-ia64/firmware.c +++ b/qemu/target-ia64/firmware.c @@ -253,7 +253,6 @@ load_hob(void *hob_buf, return 0; } -#define MIN(x, y) ((x) < (y)) ? (x) : (y) static int add_mem_hob(void* hob_buf, unsigned long dom_mem_size) { diff --git a/qemu/target-ia64/op_helper.c b/qemu/target-ia64/op_helper.c index 1b8226a..5138af5 100644 --- a/qemu/target-ia64/op_helper.c +++ b/qemu/target-ia64/op_helper.c @@ -26,7 +26,7 @@ extern int kvm_allowed; -CPUState *cpu_ia64_init(void){ +CPUState *cpu_ia64_init(char *cpu_model){ CPUState *env; env = qemu_mallocz(sizeof(CPUState)); if (!env) -- 1.5.2
0001-kvm-qemu-Fix-ia64-build-on-latest-source.patch
Description: 0001-kvm-qemu-Fix-ia64-build-on-latest-source.patch
------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel