static void vm_dev_init() { info->vm.dev.mem.a20 = 1; dev_kbd_init(&info->vm.dev.kbd); dev_uart_init(&info->vm.dev.uart, SERIAL_COM1); dev_ata_init(&info->vm.dev.ata[0], ATA1_START_PORT); /* proxify to detect rebase for uart irq injection */ info->vm.dev.pic1_icw2 = DFLT_PIC1_ICW2; __deny_io_range(PIC1_START_PORT, PIC1_END_PORT); /* lazzy emulation */ __deny_io_range(COM1_START_PORT, COM1_END_PORT); /* monitor reboot and A20 */ __deny_io_range(KBD_START_PORT, KBD_END_PORT); __deny_io(PS2_SYS_CTRL_PORT_A); /* ata filtering */ /* __deny_io(ATA1_CTRL_PORT); */ /* __deny_io_range(ATA1_START_PORT, ATA1_END_PORT); */ /* prevent PCI device detection */ #if defined(CONFIG_HAS_NET) || \ (defined(CONFIG_HAS_EHCI) && defined(CONFIG_EHCI_2ND)) __deny_io(PCI_CONFIG_ADDR); #endif #if defined(CONFIG_HAS_NET) && defined(CONFIG_HAS_E1000) { e1k_info_t *e1k = &info->hrd.dev.net.arch; npg_unmap(e1k->base.linear, e1k->base.linear + (128<<10)); debug(E1000, "protect e1000 mmio space [0x%X - 0x%X]\n" ,e1k->base.linear, e1k->base.linear + (128<<10)); } #endif /* super io */ __deny_io(SIO_INDEX); /* acpi PM1_CTL register */ __deny_io(info->hrd.acpi.pm1_ctl_port); }
/* Initialize the adm5120 Platform (MIPS) */ static int adm5120_init_platform (adm5120_t * adm5120) { struct vm_instance *vm = adm5120->vm; cpu_mips_t *cpu0; void *(*cpu_run_fn) (void *); vm_init_vtty (vm); /* Create a CPU group */ vm->cpu_group = cpu_group_create ("System CPU"); /* Initialize the virtual MIPS processor */ if (!(cpu0 = cpu_create (vm, CPU_TYPE_MIPS32, 0))) { vm_error (vm, "unable to create CPU0!\n"); return (-1); } /* Add this CPU to the system CPU group */ cpu_group_add (vm->cpu_group, cpu0); vm->boot_cpu = cpu0; cpu_run_fn = (void *) mips_exec_run_cpu; /* create the CPU thread execution */ if (pthread_create (&cpu0->cpu_thread, NULL, cpu_run_fn, cpu0) != 0) { fprintf (stderr, "cpu_create: unable to create thread for CPU%u\n", 0); free (cpu0); return (-1); } cpu0->addr_bus_mask = ADM5120_ADDR_BUS_MASK; /* Initialize RAM */ vm_ram_init (vm, 0x00000000ULL); /* Initialize ROM */ /*if (vm->rom_size!=0) * { * if (dev_rom_init(vm, "ROM")==-1) * return (-1); * } */ /* Initialize FLASH */ if ((vm->flash_size != 0) && (vm->flash_type == FLASH_TYPE_NOR_FLASH)) if (dev_nor_flash_4m_init (vm, "NORFLASH4M") == -1) return (-1); if (dev_sw_init (vm, "SW", ADM5120_SWCTRL_BASE, SW_INDEX_MAX * 4) == -1) return (-1); if (dev_mpmc_init (vm, "MPMC", ADM5120_MPMC_BASE, MPMC_INDEX_MAX * 4) == -1) return (-1); if (dev_intctrl_init (vm, "INT CTRL", ADM5120_INTC_BASE, INTCTRL_INDEX_MAX * 4) == -1) return (-1); if (dev_uart_init (vm, "UART 0", ADM5120_UART0_BASE, 0x24, vm->vtty_con1, 0) == -1) return (-1); if (dev_uart_init (vm, "UART 1", ADM5120_UART1_BASE, 0x24, vm->vtty_con2, 0) == -1) return (-1); if (dev_pci_init (vm, "PCI", ADM5120_PCI_BASE, PCI_INDEX_MAX * 4) == -1) return (-1); return (0); }