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

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

?? ne2000.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 2 頁
字號:
static uint32_t ne2000_ioport_read(void *opaque, uint32_t addr){    NE2000State *s = opaque;    int offset, page, ret;    addr &= 0xf;    if (addr == E8390_CMD) {        ret = s->cmd;    } else {        page = s->cmd >> 6;        offset = addr | (page << 4);        switch(offset) {        case EN0_TSR:            ret = s->tsr;            break;        case EN0_BOUNDARY:            ret = s->boundary;            break;        case EN0_ISR:            ret = s->isr;            break;	case EN0_RSARLO:	    ret = s->rsar & 0x00ff;	    break;	case EN0_RSARHI:	    ret = s->rsar >> 8;	    break;        case EN1_PHYS ... EN1_PHYS + 5:            ret = s->phys[offset - EN1_PHYS];            break;        case EN1_CURPAG:            ret = s->curpag;            break;        case EN1_MULT ... EN1_MULT + 7:            ret = s->mult[offset - EN1_MULT];            break;        case EN0_RSR:            ret = s->rsr;            break;        case EN2_STARTPG:            ret = s->start >> 8;            break;        case EN2_STOPPG:            ret = s->stop >> 8;            break;	case EN0_RTL8029ID0:	    ret = 0x50;	    break;	case EN0_RTL8029ID1:	    ret = 0x43;	    break;	case EN3_CONFIG0:	    ret = 0;		/* 10baseT media */	    break;	case EN3_CONFIG2:	    ret = 0x40;		/* 10baseT active */	    break;	case EN3_CONFIG3:	    ret = 0x40;		/* Full duplex */	    break;        default:            ret = 0x00;            break;        }    }#ifdef DEBUG_NE2000    printf("NE2000: read addr=0x%x val=%02x\n", addr, ret);#endif    return ret;}static inline void ne2000_mem_writeb(NE2000State *s, uint32_t addr,                                     uint32_t val){    if (addr < 32 ||        (addr >= NE2000_PMEM_START && addr < NE2000_MEM_SIZE)) {        s->mem[addr] = val;    }}static inline void ne2000_mem_writew(NE2000State *s, uint32_t addr,                                     uint32_t val){    addr &= ~1; /* XXX: check exact behaviour if not even */    if (addr < 32 ||        (addr >= NE2000_PMEM_START && addr < NE2000_MEM_SIZE)) {        *(uint16_t *)(s->mem + addr) = cpu_to_le16(val);    }}static inline void ne2000_mem_writel(NE2000State *s, uint32_t addr,                                     uint32_t val){    addr &= ~1; /* XXX: check exact behaviour if not even */    if (addr < 32 ||        (addr >= NE2000_PMEM_START && addr < NE2000_MEM_SIZE)) {        cpu_to_le32wu((uint32_t *)(s->mem + addr), val);    }}static inline uint32_t ne2000_mem_readb(NE2000State *s, uint32_t addr){    if (addr < 32 ||        (addr >= NE2000_PMEM_START && addr < NE2000_MEM_SIZE)) {        return s->mem[addr];    } else {        return 0xff;    }}static inline uint32_t ne2000_mem_readw(NE2000State *s, uint32_t addr){    addr &= ~1; /* XXX: check exact behaviour if not even */    if (addr < 32 ||        (addr >= NE2000_PMEM_START && addr < NE2000_MEM_SIZE)) {        return le16_to_cpu(*(uint16_t *)(s->mem + addr));    } else {        return 0xffff;    }}static inline uint32_t ne2000_mem_readl(NE2000State *s, uint32_t addr){    addr &= ~1; /* XXX: check exact behaviour if not even */    if (addr < 32 ||        (addr >= NE2000_PMEM_START && addr < NE2000_MEM_SIZE)) {        return le32_to_cpupu((uint32_t *)(s->mem + addr));    } else {        return 0xffffffff;    }}static inline void ne2000_dma_update(NE2000State *s, int len){    s->rsar += len;    /* wrap */    /* XXX: check what to do if rsar > stop */    if (s->rsar == s->stop)        s->rsar = s->start;    if (s->rcnt <= len) {        s->rcnt = 0;        /* signal end of transfer */        s->isr |= ENISR_RDC;        ne2000_update_irq(s);    } else {        s->rcnt -= len;    }}static void ne2000_asic_ioport_write(void *opaque, uint32_t addr, uint32_t val){    NE2000State *s = opaque;#ifdef DEBUG_NE2000    printf("NE2000: asic write val=0x%04x\n", val);#endif    if (s->rcnt == 0)        return;    if (s->dcfg & 0x01) {        /* 16 bit access */        ne2000_mem_writew(s, s->rsar, val);        ne2000_dma_update(s, 2);    } else {        /* 8 bit access */        ne2000_mem_writeb(s, s->rsar, val);        ne2000_dma_update(s, 1);    }}static uint32_t ne2000_asic_ioport_read(void *opaque, uint32_t addr){    NE2000State *s = opaque;    int ret;    if (s->dcfg & 0x01) {        /* 16 bit access */        ret = ne2000_mem_readw(s, s->rsar);        ne2000_dma_update(s, 2);    } else {        /* 8 bit access */        ret = ne2000_mem_readb(s, s->rsar);        ne2000_dma_update(s, 1);    }#ifdef DEBUG_NE2000    printf("NE2000: asic read val=0x%04x\n", ret);#endif    return ret;}static void ne2000_asic_ioport_writel(void *opaque, uint32_t addr, uint32_t val){    NE2000State *s = opaque;#ifdef DEBUG_NE2000    printf("NE2000: asic writel val=0x%04x\n", val);#endif    if (s->rcnt == 0)        return;    /* 32 bit access */    ne2000_mem_writel(s, s->rsar, val);    ne2000_dma_update(s, 4);}static uint32_t ne2000_asic_ioport_readl(void *opaque, uint32_t addr){    NE2000State *s = opaque;    int ret;    /* 32 bit access */    ret = ne2000_mem_readl(s, s->rsar);    ne2000_dma_update(s, 4);#ifdef DEBUG_NE2000    printf("NE2000: asic readl val=0x%04x\n", ret);#endif    return ret;}static void ne2000_reset_ioport_write(void *opaque, uint32_t addr, uint32_t val){    /* nothing to do (end of reset pulse) */}static uint32_t ne2000_reset_ioport_read(void *opaque, uint32_t addr){    NE2000State *s = opaque;    ne2000_reset(s);    return 0;}static void ne2000_save(QEMUFile* f,void* opaque){	NE2000State* s=(NE2000State*)opaque;        uint32_t tmp;        if (s->pci_dev)            pci_device_save(s->pci_dev, f);        qemu_put_8s(f, &s->rxcr);	qemu_put_8s(f, &s->cmd);	qemu_put_be32s(f, &s->start);	qemu_put_be32s(f, &s->stop);	qemu_put_8s(f, &s->boundary);	qemu_put_8s(f, &s->tsr);	qemu_put_8s(f, &s->tpsr);	qemu_put_be16s(f, &s->tcnt);	qemu_put_be16s(f, &s->rcnt);	qemu_put_be32s(f, &s->rsar);	qemu_put_8s(f, &s->rsr);	qemu_put_8s(f, &s->isr);	qemu_put_8s(f, &s->dcfg);	qemu_put_8s(f, &s->imr);	qemu_put_buffer(f, s->phys, 6);	qemu_put_8s(f, &s->curpag);	qemu_put_buffer(f, s->mult, 8);        tmp = 0;	qemu_put_be32s(f, &tmp); /* ignored, was irq */	qemu_put_buffer(f, s->mem, NE2000_MEM_SIZE);}static int ne2000_load(QEMUFile* f,void* opaque,int version_id){	NE2000State* s=(NE2000State*)opaque;        int ret;        uint32_t tmp;        if (version_id > 3)            return -EINVAL;        if (s->pci_dev && version_id >= 3) {            ret = pci_device_load(s->pci_dev, f);            if (ret < 0)                return ret;        }        if (version_id >= 2) {            qemu_get_8s(f, &s->rxcr);        } else {            s->rxcr = 0x0c;        }	qemu_get_8s(f, &s->cmd);	qemu_get_be32s(f, &s->start);	qemu_get_be32s(f, &s->stop);	qemu_get_8s(f, &s->boundary);	qemu_get_8s(f, &s->tsr);	qemu_get_8s(f, &s->tpsr);	qemu_get_be16s(f, &s->tcnt);	qemu_get_be16s(f, &s->rcnt);	qemu_get_be32s(f, &s->rsar);	qemu_get_8s(f, &s->rsr);	qemu_get_8s(f, &s->isr);	qemu_get_8s(f, &s->dcfg);	qemu_get_8s(f, &s->imr);	qemu_get_buffer(f, s->phys, 6);	qemu_get_8s(f, &s->curpag);	qemu_get_buffer(f, s->mult, 8);	qemu_get_be32s(f, &tmp); /* ignored */	qemu_get_buffer(f, s->mem, NE2000_MEM_SIZE);	return 0;}void isa_ne2000_init(int base, qemu_irq irq, NICInfo *nd){    NE2000State *s;    s = qemu_mallocz(sizeof(NE2000State));    if (!s)        return;    register_ioport_write(base, 16, 1, ne2000_ioport_write, s);    register_ioport_read(base, 16, 1, ne2000_ioport_read, s);    register_ioport_write(base + 0x10, 1, 1, ne2000_asic_ioport_write, s);    register_ioport_read(base + 0x10, 1, 1, ne2000_asic_ioport_read, s);    register_ioport_write(base + 0x10, 2, 2, ne2000_asic_ioport_write, s);    register_ioport_read(base + 0x10, 2, 2, ne2000_asic_ioport_read, s);    register_ioport_write(base + 0x1f, 1, 1, ne2000_reset_ioport_write, s);    register_ioport_read(base + 0x1f, 1, 1, ne2000_reset_ioport_read, s);    s->irq = irq;    memcpy(s->macaddr, nd->macaddr, 6);    ne2000_reset(s);    s->vc = qemu_new_vlan_client(nd->vlan, ne2000_receive,                                 ne2000_can_receive, s);    snprintf(s->vc->info_str, sizeof(s->vc->info_str),             "ne2000 macaddr=%02x:%02x:%02x:%02x:%02x:%02x",             s->macaddr[0],             s->macaddr[1],             s->macaddr[2],             s->macaddr[3],             s->macaddr[4],             s->macaddr[5]);    register_savevm("ne2000", 0, 2, ne2000_save, ne2000_load, s);}/***********************************************************//* PCI NE2000 definitions */typedef struct PCINE2000State {    PCIDevice dev;    NE2000State ne2000;} PCINE2000State;static void ne2000_map(PCIDevice *pci_dev, int region_num,                       uint32_t addr, uint32_t size, int type){    PCINE2000State *d = (PCINE2000State *)pci_dev;    NE2000State *s = &d->ne2000;    register_ioport_write(addr, 16, 1, ne2000_ioport_write, s);    register_ioport_read(addr, 16, 1, ne2000_ioport_read, s);    register_ioport_write(addr + 0x10, 1, 1, ne2000_asic_ioport_write, s);    register_ioport_read(addr + 0x10, 1, 1, ne2000_asic_ioport_read, s);    register_ioport_write(addr + 0x10, 2, 2, ne2000_asic_ioport_write, s);    register_ioport_read(addr + 0x10, 2, 2, ne2000_asic_ioport_read, s);    register_ioport_write(addr + 0x10, 4, 4, ne2000_asic_ioport_writel, s);    register_ioport_read(addr + 0x10, 4, 4, ne2000_asic_ioport_readl, s);    register_ioport_write(addr + 0x1f, 1, 1, ne2000_reset_ioport_write, s);    register_ioport_read(addr + 0x1f, 1, 1, ne2000_reset_ioport_read, s);}void pci_ne2000_init(PCIBus *bus, NICInfo *nd, int devfn){    PCINE2000State *d;    NE2000State *s;    uint8_t *pci_conf;    d = (PCINE2000State *)pci_register_device(bus,                                              "NE2000", sizeof(PCINE2000State),                                              devfn,                                              NULL, NULL);    pci_conf = d->dev.config;    pci_conf[0x00] = 0xec; // Realtek 8029    pci_conf[0x01] = 0x10;    pci_conf[0x02] = 0x29;    pci_conf[0x03] = 0x80;    pci_conf[0x0a] = 0x00; // ethernet network controller    pci_conf[0x0b] = 0x02;    pci_conf[0x0e] = 0x00; // header_type    pci_conf[0x3d] = 1; // interrupt pin 0    pci_register_io_region(&d->dev, 0, 0x100,                           PCI_ADDRESS_SPACE_IO, ne2000_map);    s = &d->ne2000;    s->irq = d->dev.irq[0];    s->pci_dev = (PCIDevice *)d;    memcpy(s->macaddr, nd->macaddr, 6);    ne2000_reset(s);    s->vc = qemu_new_vlan_client(nd->vlan, ne2000_receive,                                 ne2000_can_receive, s);    snprintf(s->vc->info_str, sizeof(s->vc->info_str),             "ne2000 pci macaddr=%02x:%02x:%02x:%02x:%02x:%02x",             s->macaddr[0],             s->macaddr[1],             s->macaddr[2],             s->macaddr[3],             s->macaddr[4],             s->macaddr[5]);    /* XXX: instance number ? */    register_savevm("ne2000", 0, 3, ne2000_save, ne2000_load, s);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
波多野结衣一区二区三区| 国产亚洲婷婷免费| 欧美丝袜自拍制服另类| 色999日韩国产欧美一区二区| 成a人片亚洲日本久久| 成人午夜av影视| 成人午夜电影小说| 99re这里只有精品首页| 91亚洲精品乱码久久久久久蜜桃| 99久久夜色精品国产网站| 波多野结衣中文字幕一区二区三区 | 欧美三级三级三级爽爽爽| 在线影视一区二区三区| 欧美日韩黄色一区二区| 91精品国产综合久久久久久漫画 | 不卡一区二区在线| 99久久久精品| 一本到高清视频免费精品| 91行情网站电视在线观看高清版| 91黄色免费网站| 欧美一区二区三区在线观看视频| 欧美r级在线观看| 国产日韩综合av| 亚洲精品乱码久久久久久黑人| 一级女性全黄久久生活片免费| 亚洲小说欧美激情另类| 另类欧美日韩国产在线| 国产成人亚洲精品青草天美| 国产91对白在线观看九色| 色婷婷av一区二区三区gif| 欧美人动与zoxxxx乱| 精品粉嫩超白一线天av| 中文字幕亚洲欧美在线不卡| 亚洲va在线va天堂| 精品夜夜嗨av一区二区三区| 岛国一区二区三区| 欧美性猛交一区二区三区精品| 日韩欧美另类在线| 中文字幕二三区不卡| 亚洲成人在线免费| 国产一区二区91| 在线观看免费亚洲| 精品日韩欧美在线| 最新国产精品久久精品| 五月婷婷综合网| 国产成人av电影在线观看| 欧美在线视频全部完| 日韩久久久精品| 亚洲精品v日韩精品| 麻豆精品视频在线观看视频| 成人免费高清在线观看| 欧美嫩在线观看| 国产精品视频一区二区三区不卡 | 91浏览器在线视频| 日韩美女在线视频| 亚洲综合在线第一页| 国产麻豆欧美日韩一区| 欧美日韩亚洲另类| 中文字幕不卡一区| 免费高清成人在线| 91成人免费在线| 国产欧美精品一区二区色综合 | 男女视频一区二区| 92精品国产成人观看免费| 91精品国产乱| 亚洲精品国产高清久久伦理二区| 国产综合成人久久大片91| 欧美视频自拍偷拍| 中文字幕一区二区三区不卡在线| 久久99精品网久久| 在线播放91灌醉迷j高跟美女 | 精品一区二区三区久久久| 91免费国产在线| 久久综合中文字幕| 无码av免费一区二区三区试看| av网站免费线看精品| 精品久久五月天| 蜜桃久久久久久| 欧美撒尿777hd撒尿| 亚洲色图欧美在线| 丁香婷婷综合色啪| 2021中文字幕一区亚洲| 美女一区二区三区在线观看| 欧美色视频在线| 亚洲综合免费观看高清完整版| 国产成人精品网址| 久久你懂得1024| 黄色资源网久久资源365| 欧美一区三区二区| 五月婷婷激情综合网| 精品污污网站免费看| 亚洲综合免费观看高清完整版在线| 成人国产精品免费观看| 欧美国产综合一区二区| 国产高清精品网站| 国产欧美1区2区3区| 国产综合色精品一区二区三区| 精品久久久久久无| 国产一区二区福利| 久久精品视频在线看| 国产一区二区三区综合| 26uuu精品一区二区在线观看| 美女尤物国产一区| ww亚洲ww在线观看国产| 韩国女主播一区| 日韩avvvv在线播放| 884aa四虎影成人精品一区| 日韩成人av影视| 日韩欧美成人一区| 激情五月婷婷综合网| 久久久久久久综合色一本| 麻豆精品视频在线观看视频| 精品999在线播放| 国产福利一区在线| 国产精品久久久久影院| 不卡影院免费观看| 亚洲在线成人精品| 欧美日韩大陆一区二区| 狂野欧美性猛交blacked| 精品国产91洋老外米糕| 粉嫩av一区二区三区| 亚洲三级在线免费观看| 欧美日韩激情在线| 久99久精品视频免费观看| 久久精品综合网| 972aa.com艺术欧美| 亚洲国产中文字幕在线视频综合| 欧美日韩国产另类不卡| 理论电影国产精品| 国产精品区一区二区三区 | 最好看的中文字幕久久| 欧美唯美清纯偷拍| 蜜臀av性久久久久蜜臀aⅴ | 天天影视网天天综合色在线播放| 欧美一区二区三区四区高清| 精品一区二区三区欧美| 国产精品素人一区二区| 欧美日韩在线不卡| 国产一区啦啦啦在线观看| 国产精品久久久久久福利一牛影视 | 亚洲精品乱码久久久久| 欧美一区二区日韩| 成人av在线资源| 三级不卡在线观看| 欧美激情在线看| 欧美午夜寂寞影院| 国产成人一级电影| 丝袜国产日韩另类美女| 国产日本一区二区| 欧美日韩三级一区二区| 国产激情视频一区二区在线观看 | 中文字幕电影一区| 91精品国产91热久久久做人人| 国产一区二区三区在线观看免费视频| 亚洲精品欧美专区| 久久久久9999亚洲精品| 欧美日韩精品系列| 99久久国产免费看| 久久超级碰视频| 亚洲国产综合在线| 国产精品乱码久久久久久| 亚洲图片一区二区| 久久久精品国产免大香伊| 欧美性大战久久久久久久蜜臀| 国产精品一二二区| 日本不卡1234视频| 亚洲精品欧美激情| 国产三级欧美三级日产三级99| 欧美日韩高清一区二区| 97se亚洲国产综合自在线不卡| 激情图区综合网| 中文字幕亚洲一区二区va在线| 日韩一区二区免费高清| 色老头久久综合| 成人动漫av在线| 国产呦萝稀缺另类资源| 五月天精品一区二区三区| 亚洲精品成a人| 亚洲欧洲精品一区二区精品久久久| 精品三级在线看| 91精品国产综合久久精品app | 成人午夜免费视频| 日日夜夜免费精品| 一区二区三区四区高清精品免费观看| 久久精品免视看| www激情久久| 日韩一级视频免费观看在线| 欧美影院一区二区三区| 91亚洲午夜精品久久久久久| 成人午夜精品一区二区三区| 国产精品一二三区| 国产精品夜夜爽| 国产一区999| 韩国一区二区视频| 久久精工是国产品牌吗| 免费精品视频在线| 亚洲午夜久久久| 亚洲国产人成综合网站| 亚洲国产精品欧美一二99| 一区二区三国产精华液|