亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dev_c7200_mpfpga.c

?? 思科路由器仿真器,用來仿7200系列得,可以在電腦上模擬路由器-Cisco router simulator, used to fake a 7200 series can be simulated
?? C
字號:
/*  * Cisco 7200 (Predator) simulation platform. * Copyright (c) 2005,2006 Christophe Fillot (cf@utc.fr) * * Cisco C7200 (Predator) Midplane FPGA. */#include <stdio.h>#include <stdlib.h>#include <string.h>#include "mips64.h"#include "dynamips.h"#include "memory.h"#include "device.h"#include "nmc93c46.h"#include "dev_c7200.h"#define DEBUG_UNKNOWN  1#define DEBUG_ACCESS   0#define DEBUG_OIR      0/* * Definitions for Port Adapter Status. */#define PCI_BAY0_3V_OK    0x00000002      /* IO card 3V */#define PCI_BAY0_5V_OK    0x00000004      /* IO card 5V */#define PCI_BAY1_5V_OK    0x00000200      /* Bay 1 5V */#define PCI_BAY1_3V_OK    0x00000400      /* Bay 1 3V */#define PCI_BAY2_5V_OK    0x00002000      /* Bay 2 5V */#define PCI_BAY2_3V_OK    0x00004000      /* Bay 2 3V */#define PCI_BAY3_5V_OK    0x02000000      /* Bay 3 5V */#define PCI_BAY3_3V_OK    0x04000000      /* Bay 3 3V */#define PCI_BAY4_5V_OK    0x00020000      /* Bay 4 5V */#define PCI_BAY4_3V_OK    0x00040000      /* Bay 4 3V */#define PCI_BAY5_5V_OK    0x20000000      /* Bay 5 5V */#define PCI_BAY5_3V_OK    0x40000000      /* Bay 5 3V */#define PCI_BAY6_5V_OK    0x00200000      /* Bay 6 5V */#define PCI_BAY6_3V_OK    0x00400000      /* Bay 6 3V *//* * Definitions for EEPROM access (slots 0,1,3,4) (0x60) */#define BAY0_EEPROM_SELECT_BIT	 1#define BAY0_EEPROM_CLOCK_BIT	 3#define BAY0_EEPROM_DIN_BIT      4#define BAY0_EEPROM_DOUT_BIT	 6#define BAY1_EEPROM_SELECT_BIT   9#define BAY1_EEPROM_CLOCK_BIT    11#define BAY1_EEPROM_DIN_BIT	 12#define BAY1_EEPROM_DOUT_BIT     14#define BAY3_EEPROM_SELECT_BIT   25#define BAY3_EEPROM_CLOCK_BIT    27#define BAY3_EEPROM_DIN_BIT      28#define BAY3_EEPROM_DOUT_BIT     30#define BAY4_EEPROM_SELECT_BIT   17#define BAY4_EEPROM_CLOCK_BIT    19#define BAY4_EEPROM_DIN_BIT      20#define BAY4_EEPROM_DOUT_BIT     22/* * Definitions for EEPROM access (slots 2,5,6) (0x68) */#define BAY2_EEPROM_SELECT_BIT   9#define BAY2_EEPROM_CLOCK_BIT    11#define BAY2_EEPROM_DIN_BIT      12#define BAY2_EEPROM_DOUT_BIT     14#define BAY5_EEPROM_SELECT_BIT   25#define BAY5_EEPROM_CLOCK_BIT    27#define BAY5_EEPROM_DIN_BIT      28#define BAY5_EEPROM_DOUT_BIT     30#define BAY6_EEPROM_SELECT_BIT   17#define BAY6_EEPROM_CLOCK_BIT    19#define BAY6_EEPROM_DIN_BIT      20#define BAY6_EEPROM_DOUT_BIT     22/* PA Bay EEPROM definitions */static const struct nmc93c46_eeprom_def eeprom_bay_def[C7200_MAX_PA_BAYS] = {   /* Bay 0 */   { BAY0_EEPROM_CLOCK_BIT , BAY0_EEPROM_SELECT_BIT,     BAY0_EEPROM_DIN_BIT   , BAY0_EEPROM_DOUT_BIT,   },   /* Bay 1 */   { BAY1_EEPROM_CLOCK_BIT , BAY1_EEPROM_SELECT_BIT,     BAY1_EEPROM_DIN_BIT   , BAY1_EEPROM_DOUT_BIT,   },   /* Bay 2 */   { BAY2_EEPROM_CLOCK_BIT , BAY2_EEPROM_SELECT_BIT,     BAY2_EEPROM_DIN_BIT   , BAY2_EEPROM_DOUT_BIT,   },   /* Bay 3 */   { BAY3_EEPROM_CLOCK_BIT , BAY3_EEPROM_SELECT_BIT,     BAY3_EEPROM_DIN_BIT   , BAY3_EEPROM_DOUT_BIT,   },   /* Bay 4 */   { BAY4_EEPROM_CLOCK_BIT , BAY4_EEPROM_SELECT_BIT,     BAY4_EEPROM_DIN_BIT   , BAY4_EEPROM_DOUT_BIT,   },   /* Bay 5 */   { BAY5_EEPROM_CLOCK_BIT , BAY5_EEPROM_SELECT_BIT,     BAY5_EEPROM_DIN_BIT   , BAY5_EEPROM_DOUT_BIT,   },   /* Bay 6 */   { BAY6_EEPROM_CLOCK_BIT , BAY6_EEPROM_SELECT_BIT,     BAY6_EEPROM_DIN_BIT   , BAY6_EEPROM_DOUT_BIT,   },};/* EEPROM group #1 (Bays 0, 1, 3, 4) */static const struct nmc93c46_group eeprom_bays_g1 = {   4, 0, "PA Bays (Group #1) EEPROM", FALSE,   { &eeprom_bay_def[0], &eeprom_bay_def[1],      &eeprom_bay_def[3], &eeprom_bay_def[4],   },};/* EEPROM group #2 (Bays 2, 5, 6) */static const struct nmc93c46_group eeprom_bays_g2 = {   3, 0, "PA Bays (Group #2) EEPROM", FALSE,   { &eeprom_bay_def[2], &eeprom_bay_def[5], &eeprom_bay_def[6] },};/* Midplane FPGA private data */struct mpfpga_data {   vm_obj_t vm_obj;   struct vdevice dev;   c7200_t *router;   m_uint32_t pa_status_reg;   m_uint32_t pa_ctrl_reg;};/* Update Port Adapter Status */static void pa_update_status_reg(struct mpfpga_data *d){   m_uint32_t res = 0;   /* PA Power. Bay 0 is always powered */   res |= PCI_BAY0_5V_OK | PCI_BAY0_3V_OK;      /* We fake power on bays defined by the final user */   if (c7200_pa_check_eeprom(d->router,1))      res |= PCI_BAY1_5V_OK | PCI_BAY1_3V_OK;      if (c7200_pa_check_eeprom(d->router,2))      res |= PCI_BAY2_5V_OK | PCI_BAY2_3V_OK;   if (c7200_pa_check_eeprom(d->router,3))      res |= PCI_BAY3_5V_OK | PCI_BAY3_3V_OK;      if (c7200_pa_check_eeprom(d->router,4))      res |= PCI_BAY4_5V_OK | PCI_BAY4_3V_OK;   if (c7200_pa_check_eeprom(d->router,5))      res |= PCI_BAY5_5V_OK | PCI_BAY5_3V_OK;         if (c7200_pa_check_eeprom(d->router,6))      res |= PCI_BAY6_5V_OK | PCI_BAY6_3V_OK;   d->pa_status_reg = res;}/* * dev_mpfpga_access() */void *dev_c7200_mpfpga_access(cpu_mips_t *cpu,struct vdevice *dev,                              m_uint32_t offset,u_int op_size,u_int op_type,                              m_uint64_t *data){   struct mpfpga_data *d = dev->priv_data;   if (op_type == MTS_READ)      *data = 0x0;   /* Optimization: this is written regularly */   if (offset == 0x7b)      return NULL;#if DEBUG_ACCESS   if (op_type == MTS_READ) {      cpu_log(cpu,"MP_FPGA","reading reg 0x%x at pc=0x%llx (size=%u)\n",              offset,cpu->pc,op_size);   } else {      cpu_log(cpu,"MP_FPGA",              "writing reg 0x%x at pc=0x%llx, data=0x%llx (size=%u)\n",              offset,cpu->pc,*data,op_size);   }#endif   switch(offset) {            case 0x10:  /* interrupt mask, should be done more efficiently */      case 0x11:      case 0x12:      case 0x13:         if (op_type == MTS_READ) {            *data = 0xFFFFFFFF;            vm_clear_irq(d->router->vm,C7200_NETIO_IRQ);         }         break;      case 0x18:  /* interrupt mask, should be done more efficiently */      case 0x19:      case 0x1a:         if (op_type == MTS_READ) {            *data = 0xFFFFFFFF;            vm_clear_irq(d->router->vm,C7200_NETIO_IRQ);         }         break;      /*        * - PCI errors (seen with IRQ 6)       * - Used when PA Mgmt IRQ is triggered.       *        * If the PA Mgmt IRQ is triggered for an undefined slot, a crash       * occurs with "Error: Unexpected NM Interrupt received from slot: 6"       * So, we use the PA status reg as mask to return something safe        * (slot order is identical).       */      case 0x40:         if (op_type == MTS_READ)            *data = 0x66666600 & d->pa_status_reg;         mips64_clear_irq(cpu,C7200_PA_MGMT_IRQ);         break;      case 0x48:  /* ??? (test) */         if (op_type == MTS_READ)            *data = 0xFFFFFFFF;         break;      /*        * This corresponds to err_stat in error message when IRQ 6 is        * triggered.       *       * Bit 7 => SRAM error.       * Bits 1-6 => OIR on slot 1-6       */      case 0x70:         if (op_type == MTS_READ) {#if DEBUG_OIR            cpu_log(cpu,"MP_FPGA","reading reg 0x%x at pc=0x%llx, val=0x%x\n",                    offset,cpu->pc,d->router->oir_status);#endif            *data = d->router->oir_status;         } else {#if DEBUG_OIR            cpu_log(cpu,"MP_FPGA","writing reg 0x%x at pc=0x%llx "                    "(data=0x%llx)\n",offset,cpu->pc,*data);#endif            d->router->oir_status &= ~(*data);            vm_clear_irq(d->router->vm,C7200_OIR_IRQ);                             }         break;      /*        * This corresponds to err_enable in error message when IRQ 6 is        * triggered. No idea of what it really means.       */      case 0x78:         if (op_type == MTS_READ) {#if DEBUG_OIR            cpu_log(cpu,"MP_FPGA","reading 0x78 at pc=0x%llx\n",cpu->pc);#endif            *data = 0x00;         } else {#if DEBUG_OIR            cpu_log(cpu,"MP_FPGA","writing reg 0x78 at pc=0x%llx "                  "(data=0x%llx)\n",cpu->pc,*data);#endif         }         break;      case 0x38:   /* TDM status */         break;      case 0x50:   /* Port Adapter Status */         if (op_type == MTS_READ) {            pa_update_status_reg(d);            *data = d->pa_status_reg;         }         break;       case 0x58:   /* Port Adapter Control */         if (op_type == MTS_WRITE)            d->pa_ctrl_reg = *data;         else            *data = d->pa_ctrl_reg;         break;      case 0x60:   /* EEPROM for PA in slots 0,1,3,4 */         if (op_type == MTS_WRITE)            nmc93c46_write(&d->router->pa_eeprom_g1,*data);         else            *data = nmc93c46_read(&d->router->pa_eeprom_g1);         break;      case 0x68:   /* EEPROM for PA in slots 2,5,6 */         if (op_type == MTS_WRITE)            nmc93c46_write(&d->router->pa_eeprom_g2,*data);         else            *data = nmc93c46_read(&d->router->pa_eeprom_g2);         break;      case 0x7b:  /* ??? */         break;#if DEBUG_UNKNOWN      default:         if (op_type == MTS_READ) {            cpu_log(cpu,"MP_FPGA","read from addr 0x%x, pc=0x%llx\n",                    offset,cpu->pc);         } else {            cpu_log(cpu,"MP_FPGA","write to addr 0x%x, value=0x%llx, "                    "pc=0x%llx\n",offset,*data,cpu->pc);         }#endif   }	   return NULL;}/* Initialize EEPROM groups */static void init_eeprom_groups(c7200_t *router){   /* Group 1: bays 0, 1, 3, 4 */   router->pa_eeprom_g1 = eeprom_bays_g1;   router->pa_eeprom_g1.eeprom[0] = &router->pa_bay[0].eeprom;   router->pa_eeprom_g1.eeprom[1] = &router->pa_bay[1].eeprom;   router->pa_eeprom_g1.eeprom[2] = &router->pa_bay[3].eeprom;   router->pa_eeprom_g1.eeprom[3] = &router->pa_bay[4].eeprom;   /* Group 2: bays 2, 5, 6 */   router->pa_eeprom_g2 = eeprom_bays_g2;   router->pa_eeprom_g2.eeprom[0] = &router->pa_bay[2].eeprom;   router->pa_eeprom_g2.eeprom[1] = &router->pa_bay[5].eeprom;   router->pa_eeprom_g2.eeprom[2] = &router->pa_bay[6].eeprom;}/* Shutdown the MP FPGA device */void dev_c7200_mpfpga_shutdown(vm_instance_t *vm,struct mpfpga_data *d){   if (d != NULL) {      /* Remove the device */      dev_remove(vm,&d->dev);            /* Free the structure itself */      free(d);   }}/*  * dev_c7200_mpfpga_init() */int dev_c7200_mpfpga_init(c7200_t *router,m_uint64_t paddr,m_uint32_t len){      struct mpfpga_data *d;   /* Allocate private data structure */   if (!(d = malloc(sizeof(*d)))) {      fprintf(stderr,"MP_FPGA: out of memory\n");      return(-1);   }   memset(d,0,sizeof(*d));   d->router = router;      /* Initialize EEPROMs */   init_eeprom_groups(router);   vm_object_init(&d->vm_obj);   d->vm_obj.name = "mp_fpga";   d->vm_obj.data = d;   d->vm_obj.shutdown = (vm_shutdown_t)dev_c7200_mpfpga_shutdown;   /* Set device properties */   dev_init(&d->dev);   d->dev.name      = "mp_fpga";   d->dev.phys_addr = paddr;   d->dev.phys_len  = len;   d->dev.handler   = dev_c7200_mpfpga_access;   d->dev.priv_data = d;   /* Map this device to the VM */   vm_bind_device(router->vm,&d->dev);   vm_object_add(router->vm,&d->vm_obj);   return(0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区在线看| 国产老肥熟一区二区三区| 麻豆91在线观看| 91原创在线视频| 2017欧美狠狠色| 亚洲制服欧美中文字幕中文字幕| 国产麻豆精品theporn| 欧美久久久久久久久| 亚洲欧美日韩国产另类专区 | 日韩美女一区二区三区四区| 亚洲欧洲99久久| 国产精品白丝jk白祙喷水网站| 欧美天堂亚洲电影院在线播放| 国产精品蜜臀在线观看| 久久99在线观看| 欧美乱熟臀69xxxxxx| 一区二区在线观看免费| 粉嫩嫩av羞羞动漫久久久| 日韩视频一区二区在线观看| www.欧美日韩国产在线| 久久久久国产精品麻豆ai换脸 | 欧美日韩dvd在线观看| 中文字幕一区二区三区不卡 | 91小视频在线免费看| 亚洲国产成人一区二区三区| 国产中文一区二区三区| 欧美一区二区三区在| 午夜精品久久久久久不卡8050| 91黄色在线观看| 亚洲品质自拍视频| 欧美亚男人的天堂| 亚洲制服丝袜av| 欧美欧美欧美欧美| 日韩av在线免费观看不卡| 欧美一区二区在线看| 视频一区在线播放| 日韩欧美aaaaaa| 国产一区视频网站| 国产女人18水真多18精品一级做 | 蜜桃一区二区三区四区| 欧美一级黄色片| 激情国产一区二区 | 国产精品资源在线观看| 国产日产欧美一区| av高清久久久| 亚洲国产成人av| 亚洲精品国产a| 在线观看亚洲a| 天天综合网 天天综合色| 制服丝袜亚洲色图| 久久精品国产免费看久久精品| 精品国产不卡一区二区三区| 高清在线不卡av| 亚洲精品成人a在线观看| 欧美亚洲免费在线一区| 欧美96一区二区免费视频| 久久天天做天天爱综合色| av午夜一区麻豆| 五月婷婷欧美视频| 国产人成亚洲第一网站在线播放| jlzzjlzz亚洲女人18| 午夜欧美2019年伦理| 久久久久久久网| 欧美性猛交xxxx乱大交退制版| 蜜桃视频一区二区三区| 亚洲欧洲av在线| 精品久久久久久久久久久久久久久久久| 国产成人免费视频一区| 亚洲国产日韩在线一区模特| 欧美刺激午夜性久久久久久久| 成人妖精视频yjsp地址| 丝袜美腿亚洲一区| 亚洲视频综合在线| 欧美精品一区二| 精品视频一区三区九区| 国产成人免费视| 97国产一区二区| 久久国产生活片100| 亚洲欧美一区二区三区孕妇| 日韩欧美电影在线| 色成人在线视频| 国产成人av福利| 久久99精品久久久久婷婷| 一区二区三区四区视频精品免费| 精品国产伦理网| 91精品久久久久久久91蜜桃| 91美女精品福利| 大白屁股一区二区视频| 经典一区二区三区| 日韩中文字幕麻豆| 亚洲一区二区三区四区中文字幕| 久久看人人爽人人| 日韩精品一区二区三区四区| 欧美日韩亚洲另类| 99精品视频中文字幕| 国产99久久久精品| 国产一本一道久久香蕉| 久久精品国产亚洲一区二区三区 | 国产一区二区伦理片| 日韩精品一级二级| 亚洲午夜在线电影| 亚洲综合成人在线视频| 国产精品视频在线看| 国产亚洲综合性久久久影院| 日韩精品中文字幕在线一区| 在线播放亚洲一区| 在线不卡a资源高清| 欧美日韩一区二区不卡| 欧美日韩一区二区三区免费看| 色综合 综合色| 91官网在线免费观看| 91色|porny| 色综合天天狠狠| 91福利小视频| 欧美这里有精品| 欧美男生操女生| 91麻豆精品国产91| 日韩精品一区二区三区视频播放 | 精品在线观看免费| 激情伊人五月天久久综合| 九九久久精品视频| 国产美女视频91| 国产不卡免费视频| 成人h版在线观看| 色哟哟一区二区在线观看| 在线观看日韩毛片| 制服丝袜亚洲精品中文字幕| 精品国产污网站| 欧美国产一区视频在线观看| 成人欧美一区二区三区在线播放| 亚洲美女少妇撒尿| fc2成人免费人成在线观看播放| 丁香婷婷综合激情五月色| 99国内精品久久| 欧美精品色一区二区三区| 欧美电影免费观看高清完整版在 | 在线亚洲免费视频| 欧美日韩亚洲不卡| 精品国产乱码久久久久久1区2区 | 精品一二三四区| 高清成人在线观看| 在线亚洲免费视频| 日韩精品中文字幕在线一区| 国产精品丝袜在线| 亚洲图片欧美一区| 国产乱人伦偷精品视频免下载| 97久久精品人人做人人爽| 欧美精品日日鲁夜夜添| 国产日韩欧美综合一区| 亚洲一区二区三区在线播放| 国内精品久久久久影院一蜜桃| 91丨九色丨国产丨porny| 91精品国产91综合久久蜜臀| 国产性色一区二区| 午夜精品123| 国产成人精品一区二区三区网站观看| 色哟哟精品一区| 国产视频一区不卡| 无码av中文一区二区三区桃花岛| 国产精品性做久久久久久| 欧美精品色综合| 亚洲色图在线视频| 韩国视频一区二区| 欧美色图免费看| 国产精品久99| 寂寞少妇一区二区三区| 日本韩国一区二区三区视频| 亚洲精品在线网站| 视频一区视频二区中文| jvid福利写真一区二区三区| 精品久久久久久久人人人人传媒| 亚洲国产乱码最新视频| 成人黄色av网站在线| 欧美成人精品二区三区99精品| 亚洲激情网站免费观看| 国产suv一区二区三区88区| 在线91免费看| 亚洲一区二区三区中文字幕在线| 成a人片亚洲日本久久| 久久久国产精华| 久久99深爱久久99精品| 69久久夜色精品国产69蝌蚪网| 一区二区三区不卡在线观看| 成人永久aaa| 久久久不卡网国产精品一区| 麻豆91在线看| 91精品国产入口在线| 午夜影视日本亚洲欧洲精品| 色欧美日韩亚洲| 亚洲精品国产成人久久av盗摄| av资源网一区| 国产精品久久久久久久岛一牛影视| 久久99久久久久久久久久久| 91 com成人网| 久久精品99国产精品日本| 精品奇米国产一区二区三区| 久久精品99国产国产精| 精品久久人人做人人爱| 国产一区二区调教| 五月天中文字幕一区二区|