Exemple #1
0
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);
}
Exemple #2
0
/* 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);
}