X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fdevices%2Fnvram.c;h=5d433bbacc5b0730a43b8fc6a236811b3998c4da;hb=736bdf20ee47fff0e95a62dda22d627da556425f;hp=d4a30fa08702c0965041c17bb9fdeceb8567fde2;hpb=a46778669bb94bcf6b0a05646123ff748cfe86be;p=palacios.git diff --git a/palacios/src/devices/nvram.c b/palacios/src/devices/nvram.c index d4a30fa..5d433bb 100644 --- a/palacios/src/devices/nvram.c +++ b/palacios/src/devices/nvram.c @@ -409,12 +409,12 @@ static void update_time(struct vm_device * dev, uint_t period_us) { // Interrupt associated VM, if needed if (statc->irq) { PrintDebug("nvram: injecting interrupt\n"); - dev->vm->vm_ops.raise_irq(dev->vm, NVRAM_RTC_IRQ); + v3_raise_irq(dev->vm, NVRAM_RTC_IRQ); } } -int handle_timer_event(struct guest_info * info, +static int handle_timer_event(struct guest_info * info, struct v3_timer_event * evt, void * priv_data) { @@ -428,7 +428,15 @@ int handle_timer_event(struct guest_info * info, } static int set_nvram_defaults(struct vm_device * dev) { + struct guest_info * info = dev->vm; struct nvram_internal * nvram_state = (struct nvram_internal *)dev->private_data; + + /* TODO: + * The amount of ram in the system is stored in info->mem_size + * We need to reflect that value correctly here + */ + PrintError("TODO: Set the nvram memory register to reflect info->mem_size (%p)\n", (void *)(info->mem_size)); + // // 2 1.44 MB floppy drives @@ -516,7 +524,7 @@ static int set_nvram_defaults(struct vm_device * dev) { } -int nvram_reset_device(struct vm_device * dev) { +static int nvram_reset_device(struct vm_device * dev) { struct nvram_internal * data = (struct nvram_internal *) dev->private_data; PrintDebug("nvram: reset device\n"); @@ -531,13 +539,13 @@ int nvram_reset_device(struct vm_device * dev) { -int nvram_start_device(struct vm_device * dev) { +static int nvram_start_device(struct vm_device * dev) { PrintDebug("nvram: start device\n"); return 0; } -int nvram_stop_device(struct vm_device * dev) { +static int nvram_stop_device(struct vm_device * dev) { PrintDebug("nvram: stop device\n"); return 0; } @@ -545,10 +553,10 @@ int nvram_stop_device(struct vm_device * dev) { -int nvram_write_reg_port(ushort_t port, - void * src, - uint_t length, - struct vm_device * dev) { +static int nvram_write_reg_port(ushort_t port, + void * src, + uint_t length, + struct vm_device * dev) { struct nvram_internal * data = (struct nvram_internal *)dev->private_data; memcpy(&(data->thereg), src, 1); @@ -558,10 +566,10 @@ int nvram_write_reg_port(ushort_t port, return 1; } -int nvram_read_data_port(ushort_t port, - void * dst, - uint_t length, - struct vm_device * dev) { +static int nvram_read_data_port(ushort_t port, + void * dst, + uint_t length, + struct vm_device * dev) { struct nvram_internal * data = (struct nvram_internal *)dev->private_data; memcpy(dst, &(data->mem_state[data->thereg]), 1); @@ -577,10 +585,10 @@ int nvram_read_data_port(ushort_t port, return 1; } -int nvram_write_data_port(ushort_t port, - void * src, - uint_t length, - struct vm_device * dev) { +static int nvram_write_data_port(ushort_t port, + void * src, + uint_t length, + struct vm_device * dev) { struct nvram_internal * data = (struct nvram_internal *)dev->private_data; memcpy(&(data->mem_state[data->thereg]), src, 1); @@ -592,8 +600,8 @@ int nvram_write_data_port(ushort_t port, -int nvram_init_device(struct vm_device * dev) { - +static int nvram_init_device(struct vm_device * dev) { + struct nvram_internal * data = (struct nvram_internal *)dev->private_data; PrintDebug("nvram: init_device\n"); @@ -602,21 +610,23 @@ int nvram_init_device(struct vm_device * dev) { // Would read state here set_nvram_defaults(dev); + + nvram_reset_device(dev); // hook ports - dev_hook_io(dev, NVRAM_REG_PORT, NULL, &nvram_write_reg_port); - dev_hook_io(dev, NVRAM_DATA_PORT, &nvram_read_data_port, &nvram_write_data_port); + v3_dev_hook_io(dev, NVRAM_REG_PORT, NULL, &nvram_write_reg_port); + v3_dev_hook_io(dev, NVRAM_DATA_PORT, &nvram_read_data_port, &nvram_write_data_port); v3_hook_host_event(dev->vm, HOST_TIMER_EVT, V3_HOST_EVENT_HANDLER(handle_timer_event), dev); return 0; } -int nvram_deinit_device(struct vm_device * dev) { - dev_unhook_io(dev, NVRAM_REG_PORT); - dev_unhook_io(dev, NVRAM_DATA_PORT); +static int nvram_deinit_device(struct vm_device * dev) { + v3_dev_unhook_io(dev, NVRAM_REG_PORT); + v3_dev_unhook_io(dev, NVRAM_DATA_PORT); nvram_reset_device(dev); return 0; @@ -637,14 +647,14 @@ static struct vm_device_ops dev_ops = { -struct vm_device * create_nvram() { +struct vm_device * v3_create_nvram() { struct nvram_internal * nvram_state = NULL; nvram_state = (struct nvram_internal *)V3_Malloc(sizeof(struct nvram_internal) + 1000); - PrintDebug("nvram: internal at %x\n", nvram_state); + PrintDebug("nvram: internal at %p\n", (void *)nvram_state); - struct vm_device * device = create_device("NVRAM", &dev_ops, nvram_state); + struct vm_device * device = v3_create_device("NVRAM", &dev_ops, nvram_state); return device; }