// 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);
}
}
}
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
static int nvram_init_device(struct vm_device * dev) {
-
+
struct nvram_internal * data = (struct nvram_internal *)dev->private_data;
PrintDebug("nvram: init_device\n");
// Would read state here
set_nvram_defaults(dev);
+
+
nvram_reset_device(dev);
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 = v3_create_device("NVRAM", &dev_ops, nvram_state);