X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fdevices%2Fi440fx.c;h=618a8ca6df22487f21efdfb39fafd7b0896cba34;hb=8300df0450154d7a2db08a7afbd2aca32ce38f70;hp=8621d3336f1f79426bce3f5fca8502bcceaa96e6;hpb=37c18b2c2335a41c68c2f0b779fd2b7d51ab216d;p=palacios.git diff --git a/palacios/src/devices/i440fx.c b/palacios/src/devices/i440fx.c index 8621d33..618a8ca 100644 --- a/palacios/src/devices/i440fx.c +++ b/palacios/src/devices/i440fx.c @@ -21,17 +21,20 @@ #include #include + +// We Have to setup some sort of PIC interrupt mapping here.... + struct i440_state { struct vm_device * pci; }; -static int io_read(ushort_t port, void * dst, uint_t length, struct vm_device * dev) { +static int io_read(struct guest_info * core, ushort_t port, void * dst, uint_t length, struct vm_device * dev) { PrintError("Unhandled read on port %x\n", port); return -1; } -static int io_write(ushort_t port, void * src, uint_t length, struct vm_device * dev) { +static int io_write(struct guest_info * core, ushort_t port, void * src, uint_t length, struct vm_device * dev) { PrintError("Unhandled write on port %x\n", port); return -1; } @@ -54,12 +57,13 @@ static struct v3_device_ops dev_ops = { -static int i440_init(struct guest_info * vm, void * cfg_data) { +static int i440_init(struct v3_vm_info * vm, v3_cfg_tree_t * cfg) { struct pci_device * pci_dev = NULL; struct v3_pci_bar bars[6]; int i; struct i440_state * state = NULL; - struct vm_device * pci = v3_find_dev(vm, (char *)cfg_data); + struct vm_device * pci = v3_find_dev(vm, v3_cfg_val(cfg, "bus")); + char * name = v3_cfg_val(cfg, "name"); if (!pci) { PrintError("could not find PCI Device\n"); @@ -70,10 +74,10 @@ static int i440_init(struct guest_info * vm, void * cfg_data) { state->pci = pci; - struct vm_device * dev = v3_allocate_device("i440FX", &dev_ops, state); + struct vm_device * dev = v3_allocate_device(name, &dev_ops, state); if (v3_attach_device(vm, dev) == -1) { - PrintError("Could not attach device %s\n", "i440FX"); + PrintError("Could not attach device %s\n", name); return -1; } @@ -89,7 +93,8 @@ static int i440_init(struct guest_info * vm, void * cfg_data) { bars[i].type = PCI_BAR_NONE; } - pci_dev = v3_pci_register_device(state->pci, PCI_STD_DEVICE, 0, 0, 0, "i440FX", bars, + pci_dev = v3_pci_register_device(state->pci, PCI_STD_DEVICE, + 0, 0, 0, "i440FX", bars, NULL, NULL, NULL, dev); if (!pci_dev) {