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

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

?? pcnet.c

?? xen 3.2.2 源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
    for (i = 0,checksum = 0; i < 16; i++)        checksum += s->prom[i];    *(uint16_t *)&s->prom[12] = cpu_to_le16(checksum);    s->bcr[BCR_MSRDA] = 0x0005;    s->bcr[BCR_MSWRA] = 0x0005;    s->bcr[BCR_MC   ] = 0x0002;    s->bcr[BCR_LNKST] = 0x00c0;    s->bcr[BCR_LED1 ] = 0x0084;    s->bcr[BCR_LED2 ] = 0x0088;    s->bcr[BCR_LED3 ] = 0x0090;    s->bcr[BCR_FDC  ] = 0x0000;    s->bcr[BCR_BSBC ] = 0x9001;    s->bcr[BCR_EECAS] = 0x0002;    s->bcr[BCR_SWS  ] = 0x0200;    s->bcr[BCR_PLAT ] = 0xff06;    pcnet_s_reset(s);}static void pcnet_aprom_writeb(void *opaque, uint32_t addr, uint32_t val){    PCNetState *s = opaque;#ifdef PCNET_DEBUG    printf("pcnet_aprom_writeb addr=0x%08x val=0x%02x\n", addr, val);#endif        /* Check APROMWE bit to enable write access */    if (pcnet_bcr_readw(s,2) & 0x80)        s->prom[addr & 15] = val;}       static uint32_t pcnet_aprom_readb(void *opaque, uint32_t addr){    PCNetState *s = opaque;    uint32_t val = s->prom[addr &= 15];#ifdef PCNET_DEBUG    printf("pcnet_aprom_readb addr=0x%08x val=0x%02x\n", addr, val);#endif    return val;}static void pcnet_ioport_writew(void *opaque, uint32_t addr, uint32_t val){    PCNetState *s = opaque;    pcnet_poll_timer(s);#ifdef PCNET_DEBUG_IO    printf("pcnet_ioport_writew addr=0x%08x val=0x%04x\n", addr, val);#endif    if (!BCR_DWIO(s)) {        switch (addr & 0x0f) {        case 0x00: /* RDP */            pcnet_csr_writew(s, s->rap, val);            break;        case 0x02:            s->rap = val & 0x7f;            break;        case 0x06:            pcnet_bcr_writew(s, s->rap, val);            break;        }    }    pcnet_update_irq(s);}static uint32_t pcnet_ioport_readw(void *opaque, uint32_t addr){    PCNetState *s = opaque;    uint32_t val = -1;    pcnet_poll_timer(s);    if (!BCR_DWIO(s)) {        switch (addr & 0x0f) {        case 0x00: /* RDP */            val = pcnet_csr_readw(s, s->rap);            break;        case 0x02:            val = s->rap;            break;        case 0x04:            pcnet_s_reset(s);            val = 0;            break;        case 0x06:            val = pcnet_bcr_readw(s, s->rap);            break;        }    }    pcnet_update_irq(s);#ifdef PCNET_DEBUG_IO    printf("pcnet_ioport_readw addr=0x%08x val=0x%04x\n", addr, val & 0xffff);#endif    return val;}static void pcnet_ioport_writel(void *opaque, uint32_t addr, uint32_t val){    PCNetState *s = opaque;    pcnet_poll_timer(s);#ifdef PCNET_DEBUG_IO    printf("pcnet_ioport_writel addr=0x%08x val=0x%08x\n", addr, val);#endif    if (BCR_DWIO(s)) {        switch (addr & 0x0f) {        case 0x00: /* RDP */            pcnet_csr_writew(s, s->rap, val & 0xffff);            break;        case 0x04:            s->rap = val & 0x7f;            break;        case 0x0c:            pcnet_bcr_writew(s, s->rap, val & 0xffff);            break;        }    } else    if ((addr & 0x0f) == 0) {        /* switch device to dword i/o mode */        pcnet_bcr_writew(s, BCR_BSBC, pcnet_bcr_readw(s, BCR_BSBC) | 0x0080);#ifdef PCNET_DEBUG_IO        printf("device switched into dword i/o mode\n");#endif            }    pcnet_update_irq(s);}static uint32_t pcnet_ioport_readl(void *opaque, uint32_t addr){    PCNetState *s = opaque;    uint32_t val = -1;    pcnet_poll_timer(s);    if (BCR_DWIO(s)) {          switch (addr & 0x0f) {        case 0x00: /* RDP */            val = pcnet_csr_readw(s, s->rap);            break;        case 0x04:            val = s->rap;            break;        case 0x08:            pcnet_s_reset(s);            val = 0;            break;        case 0x0c:            val = pcnet_bcr_readw(s, s->rap);            break;        }    }    pcnet_update_irq(s);#ifdef PCNET_DEBUG_IO    printf("pcnet_ioport_readl addr=0x%08x val=0x%08x\n", addr, val);#endif    return val;}static void pcnet_ioport_map(PCIDevice *pci_dev, int region_num,                              uint32_t addr, uint32_t size, int type){    PCNetState *d = (PCNetState *)pci_dev;#ifdef PCNET_DEBUG_IO    printf("pcnet_ioport_map addr=0x%04x size=0x%04x\n", addr, size);#endif    register_ioport_write(addr, 16, 1, pcnet_aprom_writeb, d);    register_ioport_read(addr, 16, 1, pcnet_aprom_readb, d);        register_ioport_write(addr + 0x10, 0x10, 2, pcnet_ioport_writew, d);    register_ioport_read(addr + 0x10, 0x10, 2, pcnet_ioport_readw, d);    register_ioport_write(addr + 0x10, 0x10, 4, pcnet_ioport_writel, d);    register_ioport_read(addr + 0x10, 0x10, 4, pcnet_ioport_readl, d);}static void pcnet_mmio_writeb(void *opaque, target_phys_addr_t addr, uint32_t val){    PCNetState *d = opaque;#ifdef PCNET_DEBUG_IO    printf("pcnet_mmio_writeb addr=0x%08x val=0x%02x\n", addr, val);#endif    if (!(addr & 0x10))        pcnet_aprom_writeb(d, addr & 0x0f, val);}static uint32_t pcnet_mmio_readb(void *opaque, target_phys_addr_t addr) {    PCNetState *d = opaque;    uint32_t val = -1;    if (!(addr & 0x10))        val = pcnet_aprom_readb(d, addr & 0x0f);#ifdef PCNET_DEBUG_IO    printf("pcnet_mmio_readb addr=0x%08x val=0x%02x\n", addr, val & 0xff);#endif    return val;}static void pcnet_mmio_writew(void *opaque, target_phys_addr_t addr, uint32_t val){    PCNetState *d = opaque;#ifdef PCNET_DEBUG_IO    printf("pcnet_mmio_writew addr=0x%08x val=0x%04x\n", addr, val);#endif    if (addr & 0x10)        pcnet_ioport_writew(d, addr & 0x0f, val);    else {        addr &= 0x0f;        pcnet_aprom_writeb(d, addr, val & 0xff);        pcnet_aprom_writeb(d, addr+1, (val & 0xff00) >> 8);    }}static uint32_t pcnet_mmio_readw(void *opaque, target_phys_addr_t addr) {    PCNetState *d = opaque;    uint32_t val = -1;    if (addr & 0x10)        val = pcnet_ioport_readw(d, addr & 0x0f);    else {        addr &= 0x0f;        val = pcnet_aprom_readb(d, addr+1);        val <<= 8;        val |= pcnet_aprom_readb(d, addr);    }#ifdef PCNET_DEBUG_IO    printf("pcnet_mmio_readw addr=0x%08x val = 0x%04x\n", addr, val & 0xffff);#endif    return val;}static void pcnet_mmio_writel(void *opaque, target_phys_addr_t addr, uint32_t val){    PCNetState *d = opaque;#ifdef PCNET_DEBUG_IO    printf("pcnet_mmio_writel addr=0x%08x val=0x%08x\n", addr, val);#endif    if (addr & 0x10)        pcnet_ioport_writel(d, addr & 0x0f, val);    else {        addr &= 0x0f;        pcnet_aprom_writeb(d, addr, val & 0xff);        pcnet_aprom_writeb(d, addr+1, (val & 0xff00) >> 8);        pcnet_aprom_writeb(d, addr+2, (val & 0xff0000) >> 16);        pcnet_aprom_writeb(d, addr+3, (val & 0xff000000) >> 24);    }}static uint32_t pcnet_mmio_readl(void *opaque, target_phys_addr_t addr) {    PCNetState *d = opaque;    uint32_t val;    if (addr & 0x10)        val = pcnet_ioport_readl(d, addr & 0x0f);    else {        addr &= 0x0f;        val = pcnet_aprom_readb(d, addr+3);        val <<= 8;        val |= pcnet_aprom_readb(d, addr+2);        val <<= 8;        val |= pcnet_aprom_readb(d, addr+1);        val <<= 8;        val |= pcnet_aprom_readb(d, addr);    }#ifdef PCNET_DEBUG_IO    printf("pcnet_mmio_readl addr=0x%08x val=0x%08x\n", addr, val);#endif    return val;}static void pcnet_save(QEMUFile *f, void *opaque){    PCNetState *s = opaque;    unsigned int i;    if (s->pci_dev)        pci_device_save(s->pci_dev, f);    qemu_put_be32s(f, &s->rap);    qemu_put_be32s(f, &s->isr);    qemu_put_be32s(f, &s->lnkst);    qemu_put_be32s(f, &s->rdra);    qemu_put_be32s(f, &s->tdra);    qemu_put_buffer(f, s->prom, 16);    for (i = 0; i < 128; i++)        qemu_put_be16s(f, &s->csr[i]);    for (i = 0; i < 32; i++)        qemu_put_be16s(f, &s->bcr[i]);    qemu_put_be64s(f, &s->timer);    qemu_put_be32s(f, &s->xmit_pos);    qemu_put_be32s(f, &s->recv_pos);    qemu_put_buffer(f, s->buffer, 4096);    qemu_put_be32s(f, &s->tx_busy);    qemu_put_timer(f, s->poll_timer);}static int pcnet_load(QEMUFile *f, void *opaque, int version_id){    PCNetState *s = opaque;    int i, ret;    if (version_id != 2)        return -EINVAL;    if (s->pci_dev) {        ret = pci_device_load(s->pci_dev, f);        if (ret < 0)            return ret;    }    qemu_get_be32s(f, &s->rap);    qemu_get_be32s(f, &s->isr);    qemu_get_be32s(f, &s->lnkst);    qemu_get_be32s(f, &s->rdra);    qemu_get_be32s(f, &s->tdra);    qemu_get_buffer(f, s->prom, 16);    for (i = 0; i < 128; i++)        qemu_get_be16s(f, &s->csr[i]);    for (i = 0; i < 32; i++)        qemu_get_be16s(f, &s->bcr[i]);    qemu_get_be64s(f, &s->timer);    qemu_get_be32s(f, &s->xmit_pos);    qemu_get_be32s(f, &s->recv_pos);    qemu_get_buffer(f, s->buffer, 4096);    qemu_get_be32s(f, &s->tx_busy);    qemu_get_timer(f, s->poll_timer);    return 0;}static void pcnet_common_init(PCNetState *d, NICInfo *nd, const char *info_str){    int instance;    d->poll_timer = qemu_new_timer(vm_clock, pcnet_poll_timer, d);    d->nd = nd;    d->vc = qemu_new_vlan_client(nd->vlan, pcnet_receive,                                  pcnet_can_receive, d);    snprintf(d->vc->info_str, sizeof(d->vc->info_str),             "pcnet macaddr=%02x:%02x:%02x:%02x:%02x:%02x",             d->nd->macaddr[0],             d->nd->macaddr[1],             d->nd->macaddr[2],             d->nd->macaddr[3],             d->nd->macaddr[4],             d->nd->macaddr[5]);    pcnet_h_reset(d);    instance = pci_bus_num(d->dev.bus) << 8 | d->dev.devfn;    register_savevm("pcnet", instance, 2, pcnet_save, pcnet_load, d);}/* PCI interface */static CPUWriteMemoryFunc *pcnet_mmio_write[] = {    (CPUWriteMemoryFunc *)&pcnet_mmio_writeb,    (CPUWriteMemoryFunc *)&pcnet_mmio_writew,    (CPUWriteMemoryFunc *)&pcnet_mmio_writel};static CPUReadMemoryFunc *pcnet_mmio_read[] = {    (CPUReadMemoryFunc *)&pcnet_mmio_readb,    (CPUReadMemoryFunc *)&pcnet_mmio_readw,    (CPUReadMemoryFunc *)&pcnet_mmio_readl};static void pcnet_mmio_map(PCIDevice *pci_dev, int region_num,                             uint32_t addr, uint32_t size, int type){    PCNetState *d = (PCNetState *)pci_dev;#ifdef PCNET_DEBUG_IO    printf("pcnet_ioport_map addr=0x%08x 0x%08x\n", addr, size);#endif    cpu_register_physical_memory(addr, PCNET_PNPMMIO_SIZE, d->mmio_index);}static void pcnet_pci_set_irq_cb(void *opaque, int isr){    PCNetState *s = opaque;    pci_set_irq(&s->dev, 0, isr);}static void pci_physical_memory_write(void *dma_opaque, target_phys_addr_t addr,                                      uint8_t *buf, int len, int do_bswap){    cpu_physical_memory_write(addr, buf, len);}static void pci_physical_memory_read(void *dma_opaque, target_phys_addr_t addr,                                     uint8_t *buf, int len, int do_bswap){    cpu_physical_memory_read(addr, buf, len);}void pci_pcnet_init(PCIBus *bus, NICInfo *nd, int devfn){    PCNetState *d;    uint8_t *pci_conf;#if 0    printf("sizeof(RMD)=%d, sizeof(TMD)=%d\n",         sizeof(struct pcnet_RMD), sizeof(struct pcnet_TMD));#endif    d = (PCNetState *)pci_register_device(bus, "PCNet", sizeof(PCNetState),                                          devfn, NULL, NULL);                                              pci_conf = d->dev.config;        *(uint16_t *)&pci_conf[0x00] = cpu_to_le16(0x1022);    *(uint16_t *)&pci_conf[0x02] = cpu_to_le16(0x2000);        *(uint16_t *)&pci_conf[0x04] = cpu_to_le16(0x0007);     *(uint16_t *)&pci_conf[0x06] = cpu_to_le16(0x0280);    pci_conf[0x08] = 0x10;    pci_conf[0x09] = 0x00;    pci_conf[0x0a] = 0x00; // ethernet network controller     pci_conf[0x0b] = 0x02;    pci_conf[0x0e] = 0x00; // header_type        *(uint32_t *)&pci_conf[0x10] = cpu_to_le32(0x00000001);    *(uint32_t *)&pci_conf[0x14] = cpu_to_le32(0x00000000);        pci_conf[0x3d] = 1; // interrupt pin 0    pci_conf[0x3e] = 0x06;    pci_conf[0x3f] = 0xff;    /* Handler for memory-mapped I/O */    d->mmio_index =      cpu_register_io_memory(0, pcnet_mmio_read, pcnet_mmio_write, d);    pci_register_io_region((PCIDevice *)d, 0, PCNET_IOPORT_SIZE,                            PCI_ADDRESS_SPACE_IO, pcnet_ioport_map);                               pci_register_io_region((PCIDevice *)d, 1, PCNET_PNPMMIO_SIZE,                            PCI_ADDRESS_SPACE_MEM, pcnet_mmio_map);                               d->set_irq_cb = pcnet_pci_set_irq_cb;    d->phys_mem_read = pci_physical_memory_read;    d->phys_mem_write = pci_physical_memory_write;    d->pci_dev = &d->dev;    pcnet_common_init(d, nd, "pcnet");}/* SPARC32 interface */#if defined (TARGET_SPARC) && !defined(TARGET_SPARC64) // Avoid compile failurestatic CPUReadMemoryFunc *lance_mem_read[3] = {    (CPUReadMemoryFunc *)&pcnet_ioport_readw,    (CPUReadMemoryFunc *)&pcnet_ioport_readw,    (CPUReadMemoryFunc *)&pcnet_ioport_readw,};static CPUWriteMemoryFunc *lance_mem_write[3] = {    (CPUWriteMemoryFunc *)&pcnet_ioport_writew,    (CPUWriteMemoryFunc *)&pcnet_ioport_writew,    (CPUWriteMemoryFunc *)&pcnet_ioport_writew,};static void pcnet_sparc_set_irq_cb(void *opaque, int isr){    PCNetState *s = opaque;    ledma_set_irq(s->dma_opaque, isr);}void *lance_init(NICInfo *nd, uint32_t leaddr, void *dma_opaque){    PCNetState *d;    int lance_io_memory;    d = qemu_mallocz(sizeof(PCNetState));    if (!d)        return NULL;    lance_io_memory =        cpu_register_io_memory(0, lance_mem_read, lance_mem_write, d);    d->dma_opaque = dma_opaque;    cpu_register_physical_memory(leaddr, 4, lance_io_memory);    d->set_irq_cb = pcnet_sparc_set_irq_cb;    d->phys_mem_read = ledma_memory_read;    d->phys_mem_write = ledma_memory_write;    pcnet_common_init(d, nd, "lance");    return d;}#endif /* TARGET_SPARC */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图一区二区| 国产亚洲精品bt天堂精选| 国产福利一区二区| 麻豆精品一区二区综合av| 亚洲二区在线观看| 亚洲日本在线a| 中文字幕一区二区三中文字幕| 久久久国产精品麻豆| 日韩欧美精品在线| 欧美一级欧美三级在线观看 | 麻豆精品国产91久久久久久| 激情六月婷婷久久| 欧美一区二区三区不卡| 欧美一区二区在线视频| 欧美精品一卡二卡| 日韩一级二级三级精品视频| 精品嫩草影院久久| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美电影免费提供在线观看| 欧美电视剧在线看免费| 精品国产一区二区亚洲人成毛片| 日韩久久免费av| 久久久久久免费毛片精品| 久久久久综合网| 亚洲免费在线观看视频| 调教+趴+乳夹+国产+精品| 日韩1区2区3区| 国产一区二区三区四区五区入口| 国产精品 欧美精品| 色婷婷综合久久| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲午夜精品网| 天堂精品中文字幕在线| 精品一区二区三区免费毛片爱| 成人中文字幕合集| 欧美日韩亚洲不卡| 日韩免费成人网| 亚洲欧美日韩中文字幕一区二区三区| 亚洲一区二区三区中文字幕在线| 蜜臀久久99精品久久久久宅男| 国产91丝袜在线观看| 欧美少妇性性性| 精品第一国产综合精品aⅴ| 国产精品久久久久久久久果冻传媒| 一区二区三区成人| 国产一区二区三区在线观看免费 | 国产一区二区三区综合| 日韩免费观看高清完整版| 色婷婷综合中文久久一本| 日韩一区二区免费在线观看| 国产日韩成人精品| 日本亚洲电影天堂| 99国产精品国产精品久久| 欧美一二三区在线| 亚洲精品免费播放| 成人一区二区三区在线观看| 在线不卡中文字幕| 国产精品久久久久精k8| 蜜桃久久av一区| 97精品视频在线观看自产线路二| 亚洲精品水蜜桃| 国产成+人+日韩+欧美+亚洲| 久久久久久久久伊人| 中文av一区特黄| 亚洲另类春色校园小说| 日韩一区二区影院| 国产喂奶挤奶一区二区三区| 热久久久久久久| 亚洲高清一区二区三区| 91精品国产黑色紧身裤美女| 国产福利视频一区二区三区| 免费欧美在线视频| 国产精品色哟哟| 国产日本欧洲亚洲| 欧美一区二区视频观看视频 | 视频一区视频二区中文| 欧美精品一区二区高清在线观看 | 在线看日韩精品电影| 亚洲高清视频中文字幕| 欧美日韩在线免费视频| 色婷婷久久综合| 欧美日韩在线一区二区| 成人免费av资源| 成人ar影院免费观看视频| 欧美精品视频www在线观看| 视频在线在亚洲| 亚洲妇女屁股眼交7| 91精品国产综合久久香蕉麻豆| 国产精品久久久久精k8| 亚洲国产经典视频| 成人黄色av电影| 中文字幕日韩一区| 色婷婷久久久综合中文字幕| 一区二区三区日韩欧美| 欧美日韩精品一二三区| 免费精品视频最新在线| 久久午夜羞羞影院免费观看| 国产精品原创巨作av| 国产精品区一区二区三| 另类综合日韩欧美亚洲| 国产一区二区女| 成人午夜精品一区二区三区| 色综合久久88色综合天天免费| 欧美日韩成人激情| 国产清纯美女被跳蛋高潮一区二区久久w| 91视频xxxx| 91精品欧美久久久久久动漫| 91精品欧美福利在线观看| 亚洲精品一区二区三区四区高清| 国产欧美日韩三区| 一本久久精品一区二区| 韩国中文字幕2020精品| 91亚洲精华国产精华精华液| 精品欧美一区二区三区精品久久 | 色婷婷国产精品久久包臀| 日韩中文字幕不卡| 国产区在线观看成人精品| 欧美日韩综合一区| 高清国产一区二区三区| 午夜电影久久久| 国产精品乱人伦| 欧美一级理论片| 91成人网在线| 高清成人在线观看| 免费观看一级欧美片| 亚洲人午夜精品天堂一二香蕉| 日韩欧美成人激情| 欧美日韩视频在线第一区| 成人亚洲精品久久久久软件| 麻豆精品一区二区av白丝在线| 亚洲啪啪综合av一区二区三区| 精品国产免费一区二区三区四区 | 久久人人爽爽爽人久久久| 在线免费精品视频| 国产成人av一区| 久久激情五月激情| 亚洲一区二区综合| 国产精品国产三级国产| 国产欧美一区二区精品秋霞影院 | caoporn国产精品| 久久国产精品一区二区| 亚洲高清在线视频| 中国av一区二区三区| 色婷婷av久久久久久久| 亚洲国产综合人成综合网站| 日韩一区二区中文字幕| 亚洲永久免费视频| 在线播放日韩导航| 成人高清在线视频| 亚洲与欧洲av电影| 久久久久国产一区二区三区四区 | 欧美www视频| 久久久久综合网| 亚洲欧美日韩在线不卡| 国产精品免费网站在线观看| 欧美本精品男人aⅴ天堂| 欧美精品v国产精品v日韩精品| 99久久99久久免费精品蜜臀| 成人福利在线看| 成人永久aaa| 成年人国产精品| 一本一道综合狠狠老| 色综合久久99| 在线亚洲一区二区| 色8久久人人97超碰香蕉987| 色综合天天综合在线视频| 欧美午夜精品免费| 欧美三级视频在线观看| 91精品麻豆日日躁夜夜躁| 日韩欧美精品在线| 中文一区在线播放| 亚洲精品v日韩精品| 午夜电影网一区| 久久精品国产在热久久| 国产宾馆实践打屁股91| 色婷婷久久综合| 日韩一区二区在线看片| 国产日韩欧美在线一区| 亚洲精选视频在线| 欧美aaaaaa午夜精品| 丁香一区二区三区| 在线观看免费成人| 久久综合久久鬼色中文字| 男女男精品视频网| 国产精品99久久久| 91日韩在线专区| 91精品国产日韩91久久久久久| 精品福利在线导航| |精品福利一区二区三区| 亚洲一区二区三区四区的 | 欧美午夜视频网站| 日韩三级视频中文字幕| 综合网在线视频| 美腿丝袜在线亚洲一区| 成人国产视频在线观看| 正在播放一区二区| 欧美激情在线看| 日欧美一区二区| 成人国产在线观看| 精品国产sm最大网站免费看|