⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dev_c7200.c

📁 思科路由器仿真器,用来仿7200系列得,可以在电脑上模拟路由器
💻 C
📖 第 1 页 / 共 5 页
字号:
   /* PCI bridges for PA Bays 1 to 6 */   c7200_pa_init_pci_bridge(router,1,vm->pci_bus_pool[24],1);   c7200_pa_init_pci_bridge(router,3,vm->pci_bus_pool[24],2);   c7200_pa_init_pci_bridge(router,5,vm->pci_bus_pool[24],3);   c7200_pa_init_pci_bridge(router,2,vm->pci_bus_pool[25],1);   c7200_pa_init_pci_bridge(router,4,vm->pci_bus_pool[25],2);   c7200_pa_init_pci_bridge(router,6,vm->pci_bus_pool[25],3);   return(0);}/* Initialize an NPE-150 board */int c7200_init_npe150(c7200_t *router){   vm_instance_t *vm = router->vm;   m_uint32_t bank_size;   int i;   /* Set the processor type: R4700 */   mips64_set_prid(CPU_MIPS64(vm->boot_cpu),MIPS_PRID_R4700);   /* Initialize the Galileo GT-64010 system controller */   if (c7200_init_gt64010(router) == -1)      return(-1);   /* PCMCIA controller is on bus 0 */   router->pcmcia_bus = vm->pci_bus[0];   /* Initialize the PA PCI busses */   if (c7200_pa_create_pci_busses(router) == -1)      return(-1);   /* Create PCI busses for PA Bays 1,3,5 and PA Bays 2,4,6 */   vm->pci_bus_pool[24] = pci_bus_create("PA Slots 1,3,5",-1);   vm->pci_bus_pool[25] = pci_bus_create("PA Slots 2,4,6",-1);   /* PCI bridges (MB0/MB1, MB0/MB2) */   dev_dec21050_init(vm->pci_bus[0],1,NULL);   dev_dec21050_init(vm->pci_bus[0],2,vm->pci_bus_pool[24]);   dev_dec21050_init(vm->pci_bus[0],3,NULL);   dev_dec21050_init(vm->pci_bus[0],4,vm->pci_bus_pool[25]);   /* Map the PA PCI busses */      vm->slots_pci_bus[0] = vm->pci_bus[0];   for(i=1;i<C7200_MAX_PA_BAYS;i++)      vm->slots_pci_bus[i] = vm->pci_bus_pool[i];   /* PCI bridges for PA Bays 1 to 6 */   c7200_pa_init_pci_bridge(router,1,vm->pci_bus_pool[24],1);   c7200_pa_init_pci_bridge(router,3,vm->pci_bus_pool[24],2);   c7200_pa_init_pci_bridge(router,5,vm->pci_bus_pool[24],3);   c7200_pa_init_pci_bridge(router,2,vm->pci_bus_pool[25],1);   c7200_pa_init_pci_bridge(router,4,vm->pci_bus_pool[25],2);   c7200_pa_init_pci_bridge(router,6,vm->pci_bus_pool[25],3);   /* Packet SRAM: 1 Mb */   bank_size = 0x80000;   dev_c7200_sram_init(vm,"sram0",C7200_SRAM_ADDR,bank_size,                       vm->pci_bus_pool[24],0);   dev_c7200_sram_init(vm,"sram1",C7200_SRAM_ADDR+bank_size,bank_size,                       vm->pci_bus_pool[25],0);   return(0);}/* Initialize an NPE-175 board */int c7200_init_npe175(c7200_t *router){   vm_instance_t *vm = router->vm;   int i;   /* Set the processor type: R5271 */   mips64_set_prid(CPU_MIPS64(vm->boot_cpu),MIPS_PRID_R527x);   /* Initialize the Galileo GT-64120 PCI controller */   if (c7200_init_gt64120(router) == -1)      return(-1);   /* Initialize the PA PCI busses */   if (c7200_pa_create_pci_busses(router) == -1)      return(-1);   /* Create PCI bus for PA Bay 0 (I/O Card, PCMCIA, Interfaces) */   vm->pci_bus_pool[0] = pci_bus_create("PA Slot 0",-1);   /* PCI bridge for I/O card device on MB0 */   dev_dec21150_init(vm->pci_bus[0],1,vm->pci_bus_pool[0]);   /* Create the hidden "I/O" PCI bridge for PCMCIA controller */   c7200_create_io_pci_bridge(router,vm->pci_bus_pool[0]);   /* Map the PA PCI busses */   for(i=0;i<C7200_MAX_PA_BAYS;i++)      vm->slots_pci_bus[i] = vm->pci_bus_pool[i];   /* PCI bridges for PA Bays 1 to 6 */   c7200_pa_init_pci_bridge(router,1,vm->pci_bus[0],7);   c7200_pa_init_pci_bridge(router,3,vm->pci_bus[0],8);   c7200_pa_init_pci_bridge(router,5,vm->pci_bus[0],9);   c7200_pa_init_pci_bridge(router,2,vm->pci_bus[1],7);   c7200_pa_init_pci_bridge(router,4,vm->pci_bus[1],8);   c7200_pa_init_pci_bridge(router,6,vm->pci_bus[1],9);   /* Enable PEM EEPROM */   c7200_pem_set_eeprom(router);   return(0);}/* Initialize an NPE-200 board */int c7200_init_npe200(c7200_t *router){   vm_instance_t *vm = router->vm;   m_uint32_t bank_size;   int i;   /* Set the processor type: R5000 */   mips64_set_prid(CPU_MIPS64(vm->boot_cpu),MIPS_PRID_R5000);   /* Initialize the Galileo GT-64010 PCI controller */   if (c7200_init_gt64010(router) == -1)      return(-1);   /* PCMCIA controller is on bus 0 */   router->pcmcia_bus = vm->pci_bus[0];   /* Initialize the PA PCI busses */   if (c7200_pa_create_pci_busses(router) == -1)      return(-1);   /* Create PCI busses for PA Bays 1,3,5 and PA Bays 2,4,6 */   vm->pci_bus_pool[24] = pci_bus_create("PA Slots 1,3,5",-1);   vm->pci_bus_pool[25] = pci_bus_create("PA Slots 2,4,6",-1);   /* PCI bridges (MB0/MB1, MB0/MB2) */   dev_dec21050_init(vm->pci_bus[0],1,NULL);   dev_dec21050_init(vm->pci_bus[0],2,vm->pci_bus_pool[24]);   dev_dec21050_init(vm->pci_bus[0],3,NULL);   dev_dec21050_init(vm->pci_bus[0],4,vm->pci_bus_pool[25]);   /* Map the PA PCI busses */   vm->slots_pci_bus[0] = vm->pci_bus[0];   for(i=1;i<C7200_MAX_PA_BAYS;i++)      vm->slots_pci_bus[i] = vm->pci_bus_pool[i];   /* PCI bridges for PA Bays 1 to 6 */   c7200_pa_init_pci_bridge(router,1,vm->pci_bus_pool[24],1);   c7200_pa_init_pci_bridge(router,3,vm->pci_bus_pool[24],2);   c7200_pa_init_pci_bridge(router,5,vm->pci_bus_pool[24],3);   c7200_pa_init_pci_bridge(router,2,vm->pci_bus_pool[25],1);   c7200_pa_init_pci_bridge(router,4,vm->pci_bus_pool[25],2);   c7200_pa_init_pci_bridge(router,6,vm->pci_bus_pool[25],3);   /* Packet SRAM: 4 Mb */   bank_size = 0x200000;   dev_c7200_sram_init(vm,"sram0",C7200_SRAM_ADDR,bank_size,                       vm->pci_bus_pool[24],0);   dev_c7200_sram_init(vm,"sram1",C7200_SRAM_ADDR+bank_size,bank_size,                       vm->pci_bus_pool[25],0);   return(0);}/* Initialize an NPE-225 board */int c7200_init_npe225(c7200_t *router){      vm_instance_t *vm = router->vm;   int i;   /* Set the processor type: R5271 */   mips64_set_prid(CPU_MIPS64(vm->boot_cpu),MIPS_PRID_R527x);   /* Initialize the Galileo GT-64120 PCI controller */   if (c7200_init_gt64120(router) == -1)      return(-1);   /* Initialize the PA PCI busses */   if (c7200_pa_create_pci_busses(router) == -1)      return(-1);   /* Create PCI bus for PA Bay 0 (I/O Card, PCMCIA, Interfaces) */   vm->pci_bus_pool[0] = pci_bus_create("PA Slot 0",-1);   /* PCI bridge for I/O card device on MB0 */   dev_dec21150_init(vm->pci_bus[0],1,vm->pci_bus_pool[0]);   /* Create the hidden "I/O" PCI bridge for PCMCIA controller */   c7200_create_io_pci_bridge(router,vm->pci_bus_pool[0]);   /* Map the PA PCI busses */   for(i=0;i<C7200_MAX_PA_BAYS;i++)      vm->slots_pci_bus[i] = vm->pci_bus_pool[i];   /* PCI bridges for PA Bays 1 to 6 */   c7200_pa_init_pci_bridge(router,1,vm->pci_bus[0],7);   c7200_pa_init_pci_bridge(router,3,vm->pci_bus[0],8);   c7200_pa_init_pci_bridge(router,5,vm->pci_bus[0],9);   c7200_pa_init_pci_bridge(router,2,vm->pci_bus[1],7);   c7200_pa_init_pci_bridge(router,4,vm->pci_bus[1],8);   c7200_pa_init_pci_bridge(router,6,vm->pci_bus[1],9);   /* Enable PEM EEPROM */   c7200_pem_set_eeprom(router);   return(0);}/* Initialize an NPE-300 board */int c7200_init_npe300(c7200_t *router){   vm_instance_t *vm = router->vm;   int i;   /* Set the processor type: R7000 */   mips64_set_prid(CPU_MIPS64(vm->boot_cpu),MIPS_PRID_R7000);   /* 32 Mb of I/O memory */   vm->iomem_size = 32;   dev_ram_init(vm,"iomem",vm->ram_mmap,TRUE,NULL,vm->sparse_mem,                C7200_IOMEM_ADDR,32*1048576);   /* Initialize the two Galileo GT-64120 system controllers */   if (c7200_init_dual_gt64120(router) == -1)      return(-1);   /* Initialize the PA PCI busses */   if (c7200_pa_create_pci_busses(router) == -1)      return(-1);   /* Create PCI bus for PA Bay 0 (I/O Card, PCMCIA, Interfaces) */   vm->pci_bus_pool[0] = pci_bus_create("PA Slot 0",-1);   /* Create PCI busses for PA Bays 1,3,5 and PA Bays 2,4,6 */   vm->pci_bus_pool[24] = pci_bus_create("PA Slots 1,3,5",-1);   vm->pci_bus_pool[25] = pci_bus_create("PA Slots 2,4,6",-1);   /* PCI bridge for I/O card device on MB0 */   dev_dec21150_init(vm->pci_bus[0],1,vm->pci_bus_pool[0]);   /* Create the hidden "I/O" PCI bridge for PCMCIA controller */   c7200_create_io_pci_bridge(router,vm->pci_bus_pool[0]);   /* PCI bridges for PA PCI "Head" Busses */   dev_dec21150_init(vm->pci_bus[0],2,vm->pci_bus_pool[24]);   dev_dec21150_init(vm->pci_bus[1],1,vm->pci_bus_pool[25]);   /* Map the PA PCI busses */   for(i=0;i<C7200_MAX_PA_BAYS;i++)      vm->slots_pci_bus[i] = vm->pci_bus_pool[i];   /* PCI bridges for PA Bays 1 to 6 */   c7200_pa_init_pci_bridge(router,1,vm->pci_bus_pool[24],1);   c7200_pa_init_pci_bridge(router,3,vm->pci_bus_pool[24],2);   c7200_pa_init_pci_bridge(router,5,vm->pci_bus_pool[24],3);   c7200_pa_init_pci_bridge(router,2,vm->pci_bus_pool[25],1);   c7200_pa_init_pci_bridge(router,4,vm->pci_bus_pool[25],2);   c7200_pa_init_pci_bridge(router,6,vm->pci_bus_pool[25],3);   return(0);}/* Initialize an NPE-400 board */int c7200_init_npe400(c7200_t *router){   vm_instance_t *vm = router->vm;   int i;   /* Set the processor type: R7000 */   mips64_set_prid(CPU_MIPS64(vm->boot_cpu),MIPS_PRID_R7000);   /*     * Add supplemental memory (as "iomem") if we have more than 256 Mb.    */   if (vm->ram_size > C7200_BASE_RAM_LIMIT) {      vm->iomem_size = vm->ram_size - C7200_BASE_RAM_LIMIT;      vm->ram_size = C7200_BASE_RAM_LIMIT;      dev_ram_init(vm,"ram1",vm->ram_mmap,TRUE,NULL,vm->sparse_mem,                   C7200_IOMEM_ADDR,vm->iomem_size*1048576);   }   /* Initialize the Galileo GT-64120 system controller */   if (c7200_init_gt64120(router) == -1)      return(-1);   /* Initialize the PA PCI busses */   if (c7200_pa_create_pci_busses(router) == -1)      return(-1);   /* Create PCI bus for PA Bay 0 (I/O Card, PCMCIA, Interfaces) */   vm->pci_bus_pool[0] = pci_bus_create("PA Slot 0",-1);   /* PCI bridge for I/O card device on MB0 */   dev_dec21050_init(vm->pci_bus[0],1,vm->pci_bus_pool[0]);   /* Create the hidden "I/O" PCI bridge for PCMCIA controller */   c7200_create_io_pci_bridge(router,vm->pci_bus_pool[0]);   /* Map the PA PCI busses */   for(i=0;i<C7200_MAX_PA_BAYS;i++)      vm->slots_pci_bus[i] = vm->pci_bus_pool[i];   /* PCI bridges for PA Bays 1 to 6 */   c7200_pa_init_pci_bridge(router,1,vm->pci_bus[0],7);   c7200_pa_init_pci_bridge(router,3,vm->pci_bus[0],8);   c7200_pa_init_pci_bridge(router,5,vm->pci_bus[0],9);   c7200_pa_init_pci_bridge(router,2,vm->pci_bus[1],7);   c7200_pa_init_pci_bridge(router,4,vm->pci_bus[1],8);   c7200_pa_init_pci_bridge(router,6,vm->pci_bus[1],9);   return(0);}/* Initialize an NPE-G1 board (XXX not working) */int c7200_init_npeg1(c7200_t *router){        vm_instance_t *vm = router->vm;   int i;   /* Just some tests */   mips64_set_prid(CPU_MIPS64(vm->boot_cpu),MIPS_PRID_BCM1250);   vm->pci_bus[0] = pci_bus_create("HT/PCI bus",0);   /* SB-1 System control devices */   dev_sb1_init(vm);   /* SB-1 I/O devices */   dev_sb1_io_init(vm,C7200_DUART_IRQ);   /* SB-1 PCI bus configuration zone */   dev_sb1_pci_init(vm,"pci_cfg",0xFE000000ULL);   /* Initialize the PA PCI busses */   if (c7200_pa_create_pci_busses(router) == -1)      return(-1);   /* Create PCI bus for PA Bay 0 (I/O Card, PCMCIA, Interfaces) */   vm->pci_bus_pool[0] = pci_bus_create("PA Slot 0",-1);   /* Create PCI busses for PA Bays 1,3,5 and PA Bays 2,4,6 */   vm->pci_bus_pool[24] = pci_bus_create("PA Slots 1,3,5",-1);   vm->pci_bus_pool[25] = pci_bus_create("PA Slots 2,4,6",-1);   /* HyperTransport/PCI bridges */   dev_ap1011_init(vm->pci_bus_pool[28],0,NULL);   dev_ap1011_init(vm->pci_bus_pool[28],1,vm->pci_bus_pool[24]);   dev_ap1011_init(vm->pci_bus_pool[28],2,vm->pci_bus_pool[25]);   /* PCI bridge for I/O card device on MB0 */   dev_dec21150_init(vm->pci_bus[0],3,vm->pci_bus_pool[0]);   /* Create the hidden "I/O" PCI bridge for PCMCIA controller */   c7200_create_io_pci_bridge(router,vm->pci_bus_pool[0]);   /* Map the PA PCI busses */   vm->slots_pci_bus[0] = vm->pci_bus[0];   for(i=1;i<C7200_MAX_PA_BAYS;i++)      vm->slots_pci_bus[i] = vm->pci_bus_pool[i];   /* PCI bridges for PA Bays 1 to 6 */   c7200_pa_init_pci_bridge(router,1,vm->pci_bus_pool[24],1);   c7200_pa_init_pci_bridge(router,3,vm->pci_bus_pool[24],2);   c7200_pa_init_pci_bridge(router,5,vm->pci_bus_pool[24],3);   c7200_pa_init_pci_bridge(router,2,vm->pci_bus_pool[25],1);   c7200_pa_init_pci_bridge(router,4,vm->pci_bus_pool[25],2);   c7200_pa_init_pci_bridge(router,6,vm->pci_bus_pool[25],3);   return(0);}/* Initialize an NPE-G2 board (XXX not working) */int c7200_init_npeg2(c7200_t *router){        vm_instance_t *vm = router->vm;   int i;   /* Set the processor type: PowerPC G4 */   ppc32_set_pvr(CPU_PPC32(vm->boot_cpu),0x80040201);   /* Initialize the PA PCI busses */   if (c7200_pa_create_pci_busses(router) == -1)      return(-1);   /* Create PCI bus for PA Bay 0 (I/O Card, PCMCIA, Interfaces) */   vm->pci_bus_pool[0] = pci_bus_create("PA Slot 0",-1);   /* PCI bridge for I/O card device on MB0 */   dev_plx6520cb_init(vm->pci_bus[1],3,vm->pci_bus_pool[0]);   /* Create PCI busses for PA Bays 1,3,5 and PA Bays 2,4,6 */   vm->pci_bus_pool[24] = pci_bus_create("PA Slots 1,3,5",-1);   vm->pci_bus_pool[25] = pci_bus_create("PA Slots 2,4,6",-1);   dev_plx6520cb_init(vm->pci_bus[0],1,vm->pci_bus_pool[24]);   dev_plx6520cb_init(vm->pci_bus[0],2,vm->pci_bus_pool[25]);   /* Create the hidden "I/O" PCI bridge for PCMCIA controller */   c7200_create_io_pci_bridge(router,vm->pci_bus_pool[0]);   /* Map the PA PCI busses */   vm->slots_pci_bus[0] = vm->pci_bus_pool[0];   for(i=1;i<C7200_MAX_PA_BAYS;i++)      vm->slots_pci_bus[i] = vm->pci_bus_pool[i];   /* PCI bridges for PA Bays 1 to 6 */   c7200_pa_init_pci_bridge(router,1,vm->pci_bus_pool[24],1);   c7200_pa_init_pci_bridge(router,3,vm->pci_bus_pool[24],2);   c7200_pa_init_pci_bridge(router,5,vm->pci_bus_pool[24],3);   c7200_pa_init_pci_bridge(router,2,vm->pci_bus_pool[25],1);   c7200_pa_init_pci_bridge(router,4,vm->pci_bus_pool[25],2);   c7200_pa_init_pci_bridge(router,6,vm->pci_bus_pool[25],3);   return(0);}/* Show C7200 hardware info */void c7200_show_hardware(c7200_t *router){

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -