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

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

?? omap.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 5 頁
字號:
{    int i;    switch (offset) {    case 0x300:	/* SYS_DMA_LCD_CTRL */        i = s->condition;        s->condition = 0;        qemu_irq_lower(s->irq);        *ret = ((s->src == imif) << 6) | (i << 3) |                (s->interrupts << 1) | s->dual;        break;    case 0x302:	/* SYS_DMA_LCD_TOP_F1_L */        *ret = s->src_f1_top & 0xffff;        break;    case 0x304:	/* SYS_DMA_LCD_TOP_F1_U */        *ret = s->src_f1_top >> 16;        break;    case 0x306:	/* SYS_DMA_LCD_BOT_F1_L */        *ret = s->src_f1_bottom & 0xffff;        break;    case 0x308:	/* SYS_DMA_LCD_BOT_F1_U */        *ret = s->src_f1_bottom >> 16;        break;    case 0x30a:	/* SYS_DMA_LCD_TOP_F2_L */        *ret = s->src_f2_top & 0xffff;        break;    case 0x30c:	/* SYS_DMA_LCD_TOP_F2_U */        *ret = s->src_f2_top >> 16;        break;    case 0x30e:	/* SYS_DMA_LCD_BOT_F2_L */        *ret = s->src_f2_bottom & 0xffff;        break;    case 0x310:	/* SYS_DMA_LCD_BOT_F2_U */        *ret = s->src_f2_bottom >> 16;        break;    default:        return 1;    }    return 0;}static int omap_dma_sys_write(struct omap_dma_s *s, int offset, uint16_t value){    switch (offset) {    case 0x400:	/* SYS_DMA_GCR */        s->gcr = value;        break;    case 0x404:	/* DMA_GSCR */        if (value & 0x8)            omap_dma_disable_3_1_mapping(s);        else            omap_dma_enable_3_1_mapping(s);        break;    case 0x408:	/* DMA_GRST */        if (value & 0x1)            omap_dma_reset(s);        break;    default:        return 1;    }    return 0;}static int omap_dma_sys_read(struct omap_dma_s *s, int offset,                uint16_t *ret){    switch (offset) {    case 0x400:	/* SYS_DMA_GCR */        *ret = s->gcr;        break;    case 0x404:	/* DMA_GSCR */        *ret = s->omap_3_1_mapping_disabled << 3;        break;    case 0x408:	/* DMA_GRST */        *ret = 0;        break;    case 0x442:	/* DMA_HW_ID */    case 0x444:	/* DMA_PCh2_ID */    case 0x446:	/* DMA_PCh0_ID */    case 0x448:	/* DMA_PCh1_ID */    case 0x44a:	/* DMA_PChG_ID */    case 0x44c:	/* DMA_PChD_ID */        *ret = 1;        break;    case 0x44e:	/* DMA_CAPS_0_U */        *ret = (1 << 3) | /* Constant Fill Capacity */            (1 << 2);     /* Transparent BLT Capacity */        break;    case 0x450:	/* DMA_CAPS_0_L */    case 0x452:	/* DMA_CAPS_1_U */        *ret = 0;        break;    case 0x454:	/* DMA_CAPS_1_L */        *ret = (1 << 1); /* 1-bit palletized capability */        break;    case 0x456:	/* DMA_CAPS_2 */        *ret = (1 << 8) | /* SSDIC */            (1 << 7) |    /* DDIAC */            (1 << 6) |    /* DSIAC */            (1 << 5) |    /* DPIAC */            (1 << 4) |    /* DCAC  */            (1 << 3) |    /* SDIAC */            (1 << 2) |    /* SSIAC */            (1 << 1) |    /* SPIAC */            1;            /* SCAC  */        break;    case 0x458:	/* DMA_CAPS_3 */        *ret = (1 << 5) | /* CCC */            (1 << 4) |    /* IC  */            (1 << 3) |    /* ARC */            (1 << 2) |    /* AEC */            (1 << 1) |    /* FSC */            1;            /* ESC */        break;    case 0x45a:	/* DMA_CAPS_4 */        *ret = (1 << 6) | /* SSC  */            (1 << 5) |    /* BIC  */            (1 << 4) |    /* LFIC */            (1 << 3) |    /* FIC  */            (1 << 2) |    /* HFIC */            (1 << 1) |    /* EDIC */            1;            /* TOIC */        break;    case 0x460:	/* DMA_PCh2_SR */    case 0x480:	/* DMA_PCh0_SR */    case 0x482:	/* DMA_PCh1_SR */    case 0x4c0:	/* DMA_PChD_SR_0 */        printf("%s: Physical Channel Status Registers not implemented.\n",               __FUNCTION__);        *ret = 0xff;        break;    default:        return 1;    }    return 0;}static uint32_t omap_dma_read(void *opaque, target_phys_addr_t addr){    struct omap_dma_s *s = (struct omap_dma_s *) opaque;    int reg, ch, offset = addr - s->base;    uint16_t ret;    switch (offset) {    case 0x300 ... 0x3fe:        if (s->model == omap_dma_3_1 || !s->omap_3_1_mapping_disabled) {            if (omap_dma_3_1_lcd_read(&s->lcd_ch, offset, &ret))                break;            return ret;        }        /* Fall through. */    case 0x000 ... 0x2fe:        reg = offset & 0x3f;        ch = (offset >> 6) & 0x0f;        if (omap_dma_ch_reg_read(s, &s->ch[ch], reg, &ret))            break;        return ret;    case 0x404 ... 0x4fe:        if (s->model == omap_dma_3_1)            break;        /* Fall through. */    case 0x400:        if (omap_dma_sys_read(s, offset, &ret))            break;        return ret;    case 0xb00 ... 0xbfe:        if (s->model == omap_dma_3_2 && s->omap_3_1_mapping_disabled) {            if (omap_dma_3_2_lcd_read(&s->lcd_ch, offset, &ret))                break;            return ret;        }        break;    }    OMAP_BAD_REG(addr);    return 0;}static void omap_dma_write(void *opaque, target_phys_addr_t addr,                uint32_t value){    struct omap_dma_s *s = (struct omap_dma_s *) opaque;    int reg, ch, offset = addr - s->base;    switch (offset) {    case 0x300 ... 0x3fe:        if (s->model == omap_dma_3_1 || !s->omap_3_1_mapping_disabled) {            if (omap_dma_3_1_lcd_write(&s->lcd_ch, offset, value))                break;            return;        }        /* Fall through.  */    case 0x000 ... 0x2fe:        reg = offset & 0x3f;        ch = (offset >> 6) & 0x0f;        if (omap_dma_ch_reg_write(s, &s->ch[ch], reg, value))            break;        return;    case 0x404 ... 0x4fe:        if (s->model == omap_dma_3_1)            break;    case 0x400:        /* Fall through. */        if (omap_dma_sys_write(s, offset, value))            break;        return;    case 0xb00 ... 0xbfe:        if (s->model == omap_dma_3_2 && s->omap_3_1_mapping_disabled) {            if (omap_dma_3_2_lcd_write(&s->lcd_ch, offset, value))                break;            return;        }        break;    }    OMAP_BAD_REG(addr);}static CPUReadMemoryFunc *omap_dma_readfn[] = {    omap_badwidth_read16,    omap_dma_read,    omap_badwidth_read16,};static CPUWriteMemoryFunc *omap_dma_writefn[] = {    omap_badwidth_write16,    omap_dma_write,    omap_badwidth_write16,};static void omap_dma_request(void *opaque, int drq, int req){    struct omap_dma_s *s = (struct omap_dma_s *) opaque;    /* The request pins are level triggered.  */    if (req) {        if (~s->drq & (1 << drq)) {            s->drq |= 1 << drq;            omap_dma_process_request(s, drq);        }    } else        s->drq &= ~(1 << drq);}static void omap_dma_clk_update(void *opaque, int line, int on){    struct omap_dma_s *s = (struct omap_dma_s *) opaque;    if (on) {        /* TODO: make a clever calculation */        s->delay = ticks_per_sec >> 8;        if (s->run_count)            qemu_mod_timer(s->tm, qemu_get_clock(vm_clock) + s->delay);    } else {        s->delay = 0;        qemu_del_timer(s->tm);    }}struct omap_dma_s *omap_dma_init(target_phys_addr_t base, qemu_irq *irqs,                qemu_irq lcd_irq, struct omap_mpu_state_s *mpu, omap_clk clk,                enum omap_dma_model model){    int iomemtype, num_irqs, memsize, i;    struct omap_dma_s *s = (struct omap_dma_s *)            qemu_mallocz(sizeof(struct omap_dma_s));    if (model == omap_dma_3_1) {        num_irqs = 6;        memsize = 0x800;    } else {        num_irqs = 16;        memsize = 0xc00;    }    s->base = base;    s->model = model;    s->mpu = mpu;    s->clk = clk;    s->lcd_ch.irq = lcd_irq;    s->lcd_ch.mpu = mpu;    while (num_irqs --)        s->ch[num_irqs].irq = irqs[num_irqs];    for (i = 0; i < 3; i ++) {        s->ch[i].sibling = &s->ch[i + 6];        s->ch[i + 6].sibling = &s->ch[i];    }    s->tm = qemu_new_timer(vm_clock, (QEMUTimerCB *) omap_dma_channel_run, s);    omap_clk_adduser(s->clk, qemu_allocate_irqs(omap_dma_clk_update, s, 1)[0]);    mpu->drq = qemu_allocate_irqs(omap_dma_request, s, 32);    omap_dma_reset(s);    omap_dma_clk_update(s, 0, 1);    iomemtype = cpu_register_io_memory(0, omap_dma_readfn,                    omap_dma_writefn, s);    cpu_register_physical_memory(s->base, memsize, iomemtype);    return s;}/* DMA ports */static int omap_validate_emiff_addr(struct omap_mpu_state_s *s,                target_phys_addr_t addr){    return addr >= OMAP_EMIFF_BASE && addr < OMAP_EMIFF_BASE + s->sdram_size;}static int omap_validate_emifs_addr(struct omap_mpu_state_s *s,                target_phys_addr_t addr){    return addr >= OMAP_EMIFS_BASE && addr < OMAP_EMIFF_BASE;}static int omap_validate_imif_addr(struct omap_mpu_state_s *s,                target_phys_addr_t addr){    return addr >= OMAP_IMIF_BASE && addr < OMAP_IMIF_BASE + s->sram_size;}static int omap_validate_tipb_addr(struct omap_mpu_state_s *s,                target_phys_addr_t addr){    return addr >= 0xfffb0000 && addr < 0xffff0000;}static int omap_validate_local_addr(struct omap_mpu_state_s *s,                target_phys_addr_t addr){    return addr >= OMAP_LOCALBUS_BASE && addr < OMAP_LOCALBUS_BASE + 0x1000000;}static int omap_validate_tipb_mpui_addr(struct omap_mpu_state_s *s,                target_phys_addr_t addr){    return addr >= 0xe1010000 && addr < 0xe1020004;}/* MPU OS timers */struct omap_mpu_timer_s {    qemu_irq irq;    omap_clk clk;    target_phys_addr_t base;    uint32_t val;    int64_t time;    QEMUTimer *timer;    int64_t rate;    int it_ena;    int enable;    int ptv;    int ar;    int st;    uint32_t reset_val;};static inline uint32_t omap_timer_read(struct omap_mpu_timer_s *timer){    uint64_t distance = qemu_get_clock(vm_clock) - timer->time;    if (timer->st && timer->enable && timer->rate)        return timer->val - muldiv64(distance >> (timer->ptv + 1),                        timer->rate, ticks_per_sec);    else        return timer->val;}static inline void omap_timer_sync(struct omap_mpu_timer_s *timer){    timer->val = omap_timer_read(timer);    timer->time = qemu_get_clock(vm_clock);}static inline void omap_timer_update(struct omap_mpu_timer_s *timer){    int64_t expires;    if (timer->enable && timer->st && timer->rate) {        timer->val = timer->reset_val;	/* Should skip this on clk enable */        expires = muldiv64(timer->val << (timer->ptv + 1),                        ticks_per_sec, timer->rate);        /* If timer expiry would be sooner than in about 1 ms and         * auto-reload isn't set, then fire immediately.  This is a hack         * to make systems like PalmOS run in acceptable time.  PalmOS         * sets the interval to a very low value and polls the status bit         * in a busy loop when it wants to sleep just a couple of CPU         * ticks.  */        if (expires > (ticks_per_sec >> 10) || timer->ar)            qemu_mod_timer(timer->timer, timer->time + expires);        else {            timer->val = 0;            timer->st = 0;            if (timer->it_ena)                /* Edge-triggered irq */                qemu_irq_pulse(timer->irq);        }    } else        qemu_del_timer(timer->timer);}static void omap_timer_tick(void *opaque){    struct omap_mpu_timer_s *timer = (struct omap_mpu_timer_s *) opaque;    omap_timer_sync(timer);    if (!timer->ar) {        timer->val = 0;        timer->st = 0;    }    if (timer->it_ena)        /* Edge-triggered irq */        qemu_irq_pulse(timer->irq);    omap_timer_update(timer);}static void omap_timer_clk_update(void *opaque, int line, int on){    struct omap_mpu_timer_s *timer = (struct omap_mpu_timer_s *) opaque;    omap_timer_sync(timer);    timer->rate = on ? omap_clk_getrate(timer->clk) : 0;    omap_timer_update(timer);}static void omap_timer_clk_setup(struct omap_mpu_timer_s *timer){    omap_clk_adduser(timer->clk,                    qemu_allocate_irqs(omap_timer_clk_update, timer, 1)[0]);    timer->rate = omap_clk_getrate(timer->clk);}static uint32_t omap_mpu_timer_read(void *opaque, target_phys_addr_t addr){    struct omap_mpu_timer_s *s = (struct omap_mpu_timer_s *) opaque;    int offset = addr - s->base;    switch (offset) {    case 0x00:	/* CNTL_TIMER */        return (s->enable << 5) | (s->ptv << 2) | (s->ar << 1) | s->st;    case 0x04:	/* LOAD_TIM */        break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品视频一区二区三区尤物| 欧美在线你懂的| 日韩女优毛片在线| 另类小说欧美激情| 精品日本一线二线三线不卡| 麻豆国产精品一区二区三区| 欧美mv日韩mv国产网站| 懂色av一区二区三区蜜臀| 国产精品色婷婷久久58| 欧美三级日韩三级国产三级| 五月开心婷婷久久| 国产精品入口麻豆九色| 欧美综合久久久| 国产一区二区三区不卡在线观看 | 国产精品欧美极品| 欧美探花视频资源| 国产成人午夜视频| 亚洲不卡av一区二区三区| xfplay精品久久| 欧美自拍丝袜亚洲| 不卡的av中国片| 国产一区999| 丝袜美腿亚洲一区二区图片| √…a在线天堂一区| 欧美国产一区二区在线观看 | 成人黄色av网站在线| 日韩高清在线观看| 亚洲国产日产av| 1024成人网| 国产精品美女久久久久久久网站| 欧美日韩卡一卡二| 欧美亚洲国产一卡| 日本福利一区二区| 成人黄色777网| 91亚洲精品久久久蜜桃网站| 国产乱码精品一区二区三| 国产一区二区三区四区五区入口| 日韩av一级电影| 精品一区二区精品| 国产精品1区2区| 成人教育av在线| 日本丶国产丶欧美色综合| 91在线免费播放| 欧美日韩亚洲综合在线| 日本精品一区二区三区高清| 欧美亚洲国产一区二区三区| 欧美日韩高清不卡| 欧美xingq一区二区| 国产精品美女久久福利网站| 中文字幕不卡在线播放| 亚洲午夜免费视频| 国产成人精品1024| 精品视频免费在线| 日本一区二区三区久久久久久久久不 | 91美女在线看| 欧美一区二区视频在线观看2022| 国产偷v国产偷v亚洲高清| 一区二区三区在线播放| 国产一区二区三区四| 色综合天天做天天爱| 国产三级欧美三级日产三级99| 亚洲私人影院在线观看| 美女视频一区在线观看| 欧美日韩日本视频| 亚洲天堂免费在线观看视频| 国产自产高清不卡| 欧美一区二区不卡视频| 亚洲图片欧美色图| 日本韩国一区二区| 国产精品久久久久国产精品日日| 久久精品久久久精品美女| 欧美日韩精品欧美日韩精品一 | 91理论电影在线观看| 国产片一区二区| 粉嫩13p一区二区三区| 精品电影一区二区| 狠狠网亚洲精品| 欧美成人综合网站| 国产一区二区影院| 国产精品乱码久久久久久| 国产一区二区免费在线| 精品国产乱子伦一区| 国产最新精品精品你懂的| 日韩精品一区二区三区四区视频| 日韩经典中文字幕一区| 欧美高清你懂得| 国产综合久久久久影院| 日本一区二区三区四区| 一本色道a无线码一区v| 日韩精品电影一区亚洲| 久久精品亚洲精品国产欧美| 成人在线视频一区二区| 亚洲国产精品久久不卡毛片| 日韩欧美国产一区二区在线播放| 国产激情偷乱视频一区二区三区| 国产精品乱码人人做人人爱 | 国内精品免费**视频| 综合欧美亚洲日本| 欧美刺激午夜性久久久久久久| 国产福利视频一区二区三区| 综合激情网...| 日韩欧美国产系列| 欧美性xxxxx极品少妇| 不卡大黄网站免费看| 五月天久久比比资源色| 亚洲欧美在线另类| 久久精品欧美一区二区三区不卡 | 欧美国产精品劲爆| 精品嫩草影院久久| 欧美日韩日日骚| 色狠狠综合天天综合综合| 国产乱人伦偷精品视频不卡| 日本vs亚洲vs韩国一区三区 | 亚洲欧洲制服丝袜| 国产精品午夜春色av| 久久精品一区二区| 久久影院午夜片一区| 日韩精品一区二区三区三区免费| 欧美午夜不卡在线观看免费| 在线免费精品视频| 欧美美女喷水视频| 日韩女优av电影| 精品久久久久久久久久久久包黑料 | 国产精品国产自产拍在线| 日本一区二区成人在线| 亚洲人一二三区| 亚洲欧美另类小说| 午夜婷婷国产麻豆精品| 日韩精品福利网| 久久激情五月婷婷| 国产精品乡下勾搭老头1| 风流少妇一区二区| 欧美丝袜丝nylons| 日韩精品一区二区三区视频在线观看 | 亚洲国产视频一区二区| 日韩精品色哟哟| 国产成人自拍网| 欧美精品123区| 中文一区二区在线观看| 三级在线观看一区二区| 韩国一区二区在线观看| 在线观看不卡视频| 久久久精品黄色| 天天综合网天天综合色| eeuss国产一区二区三区| 884aa四虎影成人精品一区| 国产精品毛片a∨一区二区三区| 亚洲成人中文在线| a级高清视频欧美日韩| 精品剧情v国产在线观看在线| 亚洲与欧洲av电影| 成人高清伦理免费影院在线观看| 欧美一级在线观看| 亚洲综合精品自拍| 成人aaaa免费全部观看| 久久嫩草精品久久久精品一| 日韩精品一级中文字幕精品视频免费观看 | 亚洲综合久久av| 91在线视频免费观看| 国产精品久久久久久久久久久免费看| 婷婷六月综合网| 欧美丰满高潮xxxx喷水动漫| 亚洲国产一区二区三区青草影视| 色先锋资源久久综合| 一区二区三区在线免费播放| 欧美午夜精品理论片a级按摩| 亚洲婷婷国产精品电影人久久| 国产成人免费在线| 中文一区在线播放| 在线国产亚洲欧美| 午夜精品一区二区三区免费视频| 91精品免费观看| 国产精品一线二线三线精华| 国产精品麻豆欧美日韩ww| 国产一区美女在线| 亚洲精品日韩专区silk| 在线观看免费亚洲| 精品一区二区三区免费观看| 久久综合色天天久久综合图片| 成人黄色电影在线| 午夜精品福利久久久| 欧美国产日韩a欧美在线观看| 欧美日韩一区二区三区四区五区| 奇米精品一区二区三区四区| 日韩一区欧美小说| 欧美大片拔萝卜| 欧美吻胸吃奶大尺度电影 | 日韩二区在线观看| 中文字幕不卡的av| 精品久久久久一区| 欧美美女一区二区在线观看| gogogo免费视频观看亚洲一| 精品系列免费在线观看| 亚洲国产精品久久久久秋霞影院| 中文字幕第一区综合| 日韩精品一区二区三区在线| 欧美日韩不卡在线| 色综合久久中文字幕综合网| 成人av免费观看| 粉嫩一区二区三区性色av|