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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ppc405_uc.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 5 頁
字號:
    dma->sr = 0x00000000;    dma->sgc = 0x00000000;    dma->slp = 0x7C000000;    dma->pol = 0x00000000;}void ppc405_dma_init (CPUState *env, qemu_irq irqs[4]){    ppc405_dma_t *dma;    dma = qemu_mallocz(sizeof(ppc405_dma_t));    if (dma != NULL) {        memcpy(dma->irqs, irqs, 4 * sizeof(qemu_irq));        ppc405_dma_reset(dma);        qemu_register_reset(&ppc405_dma_reset, dma);        ppc_dcr_register(env, DMA0_CR0,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_CT0,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_DA0,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_SA0,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_SG0,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_CR1,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_CT1,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_DA1,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_SA1,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_SG1,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_CR2,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_CT2,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_DA2,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_SA2,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_SG2,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_CR3,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_CT3,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_DA3,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_SA3,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_SG3,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_SR,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_SGC,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_SLP,                         dma, &dcr_read_dma, &dcr_write_dma);        ppc_dcr_register(env, DMA0_POL,                         dma, &dcr_read_dma, &dcr_write_dma);    }}/*****************************************************************************//* GPIO */typedef struct ppc405_gpio_t ppc405_gpio_t;struct ppc405_gpio_t {    target_phys_addr_t base;    uint32_t or;    uint32_t tcr;    uint32_t osrh;    uint32_t osrl;    uint32_t tsrh;    uint32_t tsrl;    uint32_t odr;    uint32_t ir;    uint32_t rr1;    uint32_t isr1h;    uint32_t isr1l;};static uint32_t ppc405_gpio_readb (void *opaque, target_phys_addr_t addr){    ppc405_gpio_t *gpio;    gpio = opaque;#ifdef DEBUG_GPIO    printf("%s: addr " PADDRX "\n", __func__, addr);#endif    return 0;}static void ppc405_gpio_writeb (void *opaque,                                target_phys_addr_t addr, uint32_t value){    ppc405_gpio_t *gpio;    gpio = opaque;#ifdef DEBUG_GPIO    printf("%s: addr " PADDRX " val %08" PRIx32 "\n", __func__, addr, value);#endif}static uint32_t ppc405_gpio_readw (void *opaque, target_phys_addr_t addr){    ppc405_gpio_t *gpio;    gpio = opaque;#ifdef DEBUG_GPIO    printf("%s: addr " PADDRX "\n", __func__, addr);#endif    return 0;}static void ppc405_gpio_writew (void *opaque,                                target_phys_addr_t addr, uint32_t value){    ppc405_gpio_t *gpio;    gpio = opaque;#ifdef DEBUG_GPIO    printf("%s: addr " PADDRX " val %08" PRIx32 "\n", __func__, addr, value);#endif}static uint32_t ppc405_gpio_readl (void *opaque, target_phys_addr_t addr){    ppc405_gpio_t *gpio;    gpio = opaque;#ifdef DEBUG_GPIO    printf("%s: addr " PADDRX "\n", __func__, addr);#endif    return 0;}static void ppc405_gpio_writel (void *opaque,                                target_phys_addr_t addr, uint32_t value){    ppc405_gpio_t *gpio;    gpio = opaque;#ifdef DEBUG_GPIO    printf("%s: addr " PADDRX " val %08" PRIx32 "\n", __func__, addr, value);#endif}static CPUReadMemoryFunc *ppc405_gpio_read[] = {    &ppc405_gpio_readb,    &ppc405_gpio_readw,    &ppc405_gpio_readl,};static CPUWriteMemoryFunc *ppc405_gpio_write[] = {    &ppc405_gpio_writeb,    &ppc405_gpio_writew,    &ppc405_gpio_writel,};static void ppc405_gpio_reset (void *opaque){    ppc405_gpio_t *gpio;    gpio = opaque;}void ppc405_gpio_init (CPUState *env, ppc4xx_mmio_t *mmio,                       target_phys_addr_t offset){    ppc405_gpio_t *gpio;    gpio = qemu_mallocz(sizeof(ppc405_gpio_t));    if (gpio != NULL) {        gpio->base = offset;        ppc405_gpio_reset(gpio);        qemu_register_reset(&ppc405_gpio_reset, gpio);#ifdef DEBUG_GPIO        printf("%s: offset " PADDRX "\n", __func__, offset);#endif        ppc4xx_mmio_register(env, mmio, offset, 0x038,                             ppc405_gpio_read, ppc405_gpio_write, gpio);    }}/*****************************************************************************//* Serial ports */static CPUReadMemoryFunc *serial_mm_read[] = {    &serial_mm_readb,    &serial_mm_readw,    &serial_mm_readl,};static CPUWriteMemoryFunc *serial_mm_write[] = {    &serial_mm_writeb,    &serial_mm_writew,    &serial_mm_writel,};void ppc405_serial_init (CPUState *env, ppc4xx_mmio_t *mmio,                         target_phys_addr_t offset, qemu_irq irq,                         CharDriverState *chr){    void *serial;#ifdef DEBUG_SERIAL    printf("%s: offset " PADDRX "\n", __func__, offset);#endif    serial = serial_mm_init(offset, 0, irq, chr, 0);    ppc4xx_mmio_register(env, mmio, offset, 0x008,                         serial_mm_read, serial_mm_write, serial);}/*****************************************************************************//* On Chip Memory */enum {    OCM0_ISARC   = 0x018,    OCM0_ISACNTL = 0x019,    OCM0_DSARC   = 0x01A,    OCM0_DSACNTL = 0x01B,};typedef struct ppc405_ocm_t ppc405_ocm_t;struct ppc405_ocm_t {    target_ulong offset;    uint32_t isarc;    uint32_t isacntl;    uint32_t dsarc;    uint32_t dsacntl;};static void ocm_update_mappings (ppc405_ocm_t *ocm,                                 uint32_t isarc, uint32_t isacntl,                                 uint32_t dsarc, uint32_t dsacntl){#ifdef DEBUG_OCM    printf("OCM update ISA %08" PRIx32 " %08" PRIx32 " (%08" PRIx32           " %08" PRIx32 ") DSA %08" PRIx32 " %08" PRIx32           " (%08" PRIx32 " %08" PRIx32 ")\n",           isarc, isacntl, dsarc, dsacntl,           ocm->isarc, ocm->isacntl, ocm->dsarc, ocm->dsacntl);#endif    if (ocm->isarc != isarc ||        (ocm->isacntl & 0x80000000) != (isacntl & 0x80000000)) {        if (ocm->isacntl & 0x80000000) {            /* Unmap previously assigned memory region */            printf("OCM unmap ISA %08" PRIx32 "\n", ocm->isarc);            cpu_register_physical_memory(ocm->isarc, 0x04000000,                                         IO_MEM_UNASSIGNED);        }        if (isacntl & 0x80000000) {            /* Map new instruction memory region */#ifdef DEBUG_OCM            printf("OCM map ISA %08" PRIx32 "\n", isarc);#endif            cpu_register_physical_memory(isarc, 0x04000000,                                         ocm->offset | IO_MEM_RAM);        }    }    if (ocm->dsarc != dsarc ||        (ocm->dsacntl & 0x80000000) != (dsacntl & 0x80000000)) {        if (ocm->dsacntl & 0x80000000) {            /* Beware not to unmap the region we just mapped */            if (!(isacntl & 0x80000000) || ocm->dsarc != isarc) {                /* Unmap previously assigned memory region */#ifdef DEBUG_OCM                printf("OCM unmap DSA %08" PRIx32 "\n", ocm->dsarc);#endif                cpu_register_physical_memory(ocm->dsarc, 0x04000000,                                             IO_MEM_UNASSIGNED);            }        }        if (dsacntl & 0x80000000) {            /* Beware not to remap the region we just mapped */            if (!(isacntl & 0x80000000) || dsarc != isarc) {                /* Map new data memory region */#ifdef DEBUG_OCM                printf("OCM map DSA %08" PRIx32 "\n", dsarc);#endif                cpu_register_physical_memory(dsarc, 0x04000000,                                             ocm->offset | IO_MEM_RAM);            }        }    }}static target_ulong dcr_read_ocm (void *opaque, int dcrn){    ppc405_ocm_t *ocm;    target_ulong ret;    ocm = opaque;    switch (dcrn) {    case OCM0_ISARC:        ret = ocm->isarc;        break;    case OCM0_ISACNTL:        ret = ocm->isacntl;        break;    case OCM0_DSARC:        ret = ocm->dsarc;        break;    case OCM0_DSACNTL:        ret = ocm->dsacntl;        break;    default:        ret = 0;        break;    }    return ret;}static void dcr_write_ocm (void *opaque, int dcrn, target_ulong val){    ppc405_ocm_t *ocm;    uint32_t isarc, dsarc, isacntl, dsacntl;    ocm = opaque;    isarc = ocm->isarc;    dsarc = ocm->dsarc;    isacntl = ocm->isacntl;    dsacntl = ocm->dsacntl;    switch (dcrn) {    case OCM0_ISARC:        isarc = val & 0xFC000000;        break;    case OCM0_ISACNTL:        isacntl = val & 0xC0000000;        break;    case OCM0_DSARC:        isarc = val & 0xFC000000;        break;    case OCM0_DSACNTL:        isacntl = val & 0xC0000000;        break;    }    ocm_update_mappings(ocm, isarc, isacntl, dsarc, dsacntl);    ocm->isarc = isarc;    ocm->dsarc = dsarc;    ocm->isacntl = isacntl;    ocm->dsacntl = dsacntl;}static void ocm_reset (void *opaque){    ppc405_ocm_t *ocm;    uint32_t isarc, dsarc, isacntl, dsacntl;    ocm = opaque;    isarc = 0x00000000;    isacntl = 0x00000000;    dsarc = 0x00000000;    dsacntl = 0x00000000;    ocm_update_mappings(ocm, isarc, isacntl, dsarc, dsacntl);    ocm->isarc = isarc;    ocm->dsarc = dsarc;    ocm->isacntl = isacntl;    ocm->dsacntl = dsacntl;}void ppc405_ocm_init (CPUState *env, unsigned long offset){    ppc405_ocm_t *ocm;    ocm = qemu_mallocz(sizeof(ppc405_ocm_t));    if (ocm != NULL) {        ocm->offset = offset;        ocm_reset(ocm);        qemu_register_reset(&ocm_reset, ocm);        ppc_dcr_register(env, OCM0_ISARC,                         ocm, &dcr_read_ocm, &dcr_write_ocm);        ppc_dcr_register(env, OCM0_ISACNTL,                         ocm, &dcr_read_ocm, &dcr_write_ocm);        ppc_dcr_register(env, OCM0_DSARC,                         ocm, &dcr_read_ocm, &dcr_write_ocm);        ppc_dcr_register(env, OCM0_DSACNTL,                         ocm, &dcr_read_ocm, &dcr_write_ocm);    }}/*****************************************************************************//* I2C controller */typedef struct ppc4xx_i2c_t ppc4xx_i2c_t;struct ppc4xx_i2c_t {    target_phys_addr_t base;    qemu_irq irq;    uint8_t mdata;    uint8_t lmadr;    uint8_t hmadr;    uint8_t cntl;    uint8_t mdcntl;    uint8_t sts;    uint8_t extsts;    uint8_t sdata;    uint8_t lsadr;    uint8_t hsadr;    uint8_t clkdiv;    uint8_t intrmsk;    uint8_t xfrcnt;    uint8_t xtcntlss;    uint8_t directcntl;};static uint32_t ppc4xx_i2c_readb (void *opaque, target_phys_addr_t addr){    ppc4xx_i2c_t *i2c;    uint32_t ret;#ifdef DEBUG_I2C    printf("%s: addr " PADDRX "\n", __func__, addr);#endif    i2c = opaque;    switch (addr - i2c->base) {    case 0x00:        //        i2c_readbyte(&i2c->mdata);        ret = i2c->mdata;        break;    case 0x02:        ret = i2c->sdata;        break;    case 0x04:        ret = i2c->lmadr;        break;    case 0x05:        ret = i2c->hmadr;        break;    case 0x06:        ret = i2c->cntl;        break;    case 0x07:        ret = i2c->mdcntl;        break;    case 0x08:        ret = i2c->sts;        break;    case 0x09:        ret = i2c->extsts;        break;    case 0x0A:        ret = i2c->lsadr;        break;    case 0x0B:        ret = i2c->hsadr;        break;    case 0x0C:        ret = i2c->clkdiv;        break;    case 0x0D:        ret = i2c->intrmsk;        break;    case 0x0E:        ret = i2c->xfrcnt;        break;    case 0x0F:        ret = i2c->xtcntlss;        break;    case 0x10:        ret = i2c->directcntl;        break;    default:        ret = 0x00;        break;    }#ifdef DEBUG_I2C    printf("%s: addr " PADDRX " %02" PRIx32 "\n", __func__, addr, ret);#endif    return ret;}static void ppc4xx_i2c_writeb (void *opaque,                               target_phys_addr_t addr, uint32_t value){    ppc4xx_i2c_t *i2c;#ifdef DEBUG_I2C    printf("%s: addr " PADDRX " val %08" PRIx32 "\n", __func__, addr, value);#endif    i2c = opaque;    switch (addr - i2c->base) {    case 0x00:        i2c->mdata = value;        //        i2c_sendbyte(&i2c->mdata);        break;    case 0x02:        i2c->sdata = value;        break;    case 0x04:        i2c->lmadr = value;        break;    case 0x05:        i2c->hmadr = value;        break;    case 0x06:        i2c->cntl = value;        break;    case 0x07:        i2c->mdcntl = value & 0xDF;        break;    case 0x08:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲伦理在线精品| 亚洲资源中文字幕| 欧美图区在线视频| 久久99精品久久久久久动态图| 国产农村妇女精品| 欧美电影在线免费观看| 国产成人激情av| 日本不卡一二三| 亚洲黄色片在线观看| 日韩一级二级三级| av网站免费线看精品| 国内精品国产成人国产三级粉色| 亚洲午夜久久久久久久久久久| 国产无人区一区二区三区| 日韩午夜在线观看视频| 欧美少妇一区二区| 91在线精品一区二区| 国产一区亚洲一区| 日韩精品欧美精品| 亚洲成a人片在线不卡一二三区| 久久日韩精品一区二区五区| 欧美日韩二区三区| 91传媒视频在线播放| 国产精品综合在线视频| 麻豆91在线播放免费| 亚洲高清视频在线| 一区二区三区精品| 国产精品久久久久久久久免费相片| 日韩欧美一卡二卡| 欧美乱妇一区二区三区不卡视频| 91丨porny丨蝌蚪视频| 国产成人精品综合在线观看 | 久久精品二区亚洲w码| 亚洲一区在线观看网站| ...av二区三区久久精品| 国产精品萝li| 国产免费观看久久| 久久久精品tv| 久久日一线二线三线suv| 久久久午夜精品| 精品国产伦一区二区三区观看方式| 日韩美女一区二区三区| 在线精品观看国产| 欧美三级电影网| 欧美日韩精品是欧美日韩精品| 欧美在线高清视频| 欧美日本国产视频| 欧美一级黄色片| 日韩欧美美女一区二区三区| 精品卡一卡二卡三卡四在线| 精品av久久707| 久久久精品tv| 中文字幕一区免费在线观看| 亚洲精品国产品国语在线app| 亚洲免费av网站| 亚洲午夜电影在线| 免费人成黄页网站在线一区二区| 精彩视频一区二区三区| 国产成人精品免费网站| aa级大片欧美| 欧美亚一区二区| 欧美亚洲愉拍一区二区| 91精品国产综合久久久久久漫画| 欧美r级在线观看| 中文字幕电影一区| 亚洲影院免费观看| 美日韩一区二区| 粉嫩av一区二区三区| 欧美亚洲综合色| 2023国产一二三区日本精品2022| 中文字幕在线视频一区| 亚洲国产综合人成综合网站| 久久99精品一区二区三区| 成人精品国产免费网站| 国产一区二区免费视频| 91视频com| 欧美xxxxx裸体时装秀| 亚洲手机成人高清视频| 日韩和欧美一区二区三区| 国产精品一区二区久久不卡| 91黄视频在线| 精品sm在线观看| 亚洲福利一区二区三区| 国产麻豆欧美日韩一区| 欧美性生活影院| 久久久99久久精品欧美| 一区二区三区精密机械公司| 狠狠色丁香婷婷综合| 色菇凉天天综合网| 久久综合资源网| 亚洲在线观看免费视频| 国产伦精品一区二区三区免费| 色婷婷综合激情| 久久久蜜臀国产一区二区| 亚洲成人av在线电影| 国产成人小视频| 欧美一级艳片视频免费观看| 亚洲欧洲日韩在线| 国产在线精品视频| 欧美视频在线一区| 亚洲欧美在线高清| 国产一区二区三区黄视频| 欧美日韩中文另类| 综合久久给合久久狠狠狠97色| 麻豆成人免费电影| 欧美美女直播网站| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产精品三级av| 美腿丝袜在线亚洲一区| 欧美日韩视频在线第一区 | 99视频一区二区| 久久久亚洲午夜电影| 日韩高清在线一区| 欧美日韩在线播放三区四区| 亚洲特级片在线| 成人伦理片在线| 久久久av毛片精品| 国产在线不卡视频| 欧美一二三区在线观看| 日韩不卡一区二区| 欧美日韩三级一区| 亚洲一区二区精品久久av| 99精品久久只有精品| 国产精品人人做人人爽人人添| 久久99精品视频| 精品美女一区二区| 捆绑调教美女网站视频一区| 欧美一区二区在线视频| 视频精品一区二区| 欧美理论电影在线| 午夜视频久久久久久| 欧美日韩不卡一区二区| 午夜精品福利一区二区蜜股av | 日韩一区二区三区四区五区六区| 洋洋av久久久久久久一区| 色综合久久久久综合体| 亚洲三级在线免费| 91美女片黄在线| 亚洲曰韩产成在线| 色欧美日韩亚洲| 亚洲一区二区三区精品在线| 色婷婷久久久亚洲一区二区三区| 亚洲色图在线播放| 欧美三区在线视频| 日韩精品五月天| 精品福利一二区| 国产二区国产一区在线观看| 中文字幕成人网| 色综合久久久久综合体桃花网| 一区二区三区四区在线播放 | 日韩精品一区二区三区视频播放 | 一区二区三区高清在线| 欧美亚洲日本一区| 日本免费在线视频不卡一不卡二| 日韩精品中文字幕在线一区| 国产精品小仙女| 亚洲人成网站色在线观看| 欧美日韩在线三区| 蜜臀av一级做a爰片久久| 久久亚区不卡日本| 成人成人成人在线视频| 一区二区三区色| 欧美一卡二卡在线| 懂色av中文字幕一区二区三区| 亚洲欧美激情一区二区| 欧美伦理电影网| 国产成a人无v码亚洲福利| 一区二区在线免费| 日韩一区二区精品在线观看| 高清不卡一区二区| 亚洲第一福利视频在线| 精品久久久久av影院| 99久久国产综合色|国产精品| 性欧美疯狂xxxxbbbb| 国产日韩欧美一区二区三区综合| 91精品福利视频| 国产在线一区二区综合免费视频| 亚洲色图欧洲色图婷婷| 精品捆绑美女sm三区| 色婷婷综合久久久久中文一区二区| 日韩vs国产vs欧美| 国产精品久久国产精麻豆99网站| 欧美日韩精品二区第二页| 国产激情视频一区二区在线观看| 亚洲综合免费观看高清完整版在线| 日韩欧美激情一区| 色婷婷av一区二区| 国产精品 欧美精品| 五月婷婷激情综合网| 中文欧美字幕免费| 日韩一区二区免费电影| 色综合网站在线| 国产剧情一区二区三区| 亚洲成人你懂的| 久久精品国产99久久6| 国产精品国产自产拍高清av王其| 91麻豆精品国产自产在线| 99re这里都是精品| 国产激情一区二区三区四区 | 91网站在线观看视频|