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

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

?? fdc.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 5 頁
字號:
    uint8_t cur_drv;    uint8_t bootsel;    /* Command FIFO */    uint8_t *fifo;    uint32_t data_pos;    uint32_t data_len;    uint8_t data_state;    uint8_t data_dir;    uint8_t int_status;    uint8_t eot; /* last wanted sector */    /* States kept only to be returned back */    /* Timers state */    uint8_t timer0;    uint8_t timer1;    /* precompensation */    uint8_t precomp_trk;    uint8_t config;    uint8_t lock;    /* Power down config (also with status regB access mode */    uint8_t pwrd;    /* Sun4m quirks? */    int sun4m;    /* Floppy drives */    fdrive_t drives[2];};static uint32_t fdctrl_read (void *opaque, uint32_t reg){    fdctrl_t *fdctrl = opaque;    uint32_t retval;    switch (reg & 0x07) {    case 0x00:        if (fdctrl->sun4m) {            // Identify to Linux as S82078B            retval = fdctrl_read_statusB(fdctrl);        } else {            retval = (uint32_t)(-1);        }        break;    case 0x01:        retval = fdctrl_read_statusB(fdctrl);        break;    case 0x02:        retval = fdctrl_read_dor(fdctrl);        break;    case 0x03:        retval = fdctrl_read_tape(fdctrl);        break;    case 0x04:        retval = fdctrl_read_main_status(fdctrl);        break;    case 0x05:        retval = fdctrl_read_data(fdctrl);        break;    case 0x07:        retval = fdctrl_read_dir(fdctrl);        break;    default:        retval = (uint32_t)(-1);        break;    }    FLOPPY_DPRINTF("read reg%d: 0x%02x\n", reg & 7, retval);    return retval;}static void fdctrl_write (void *opaque, uint32_t reg, uint32_t value){    fdctrl_t *fdctrl = opaque;    FLOPPY_DPRINTF("write reg%d: 0x%02x\n", reg & 7, value);    switch (reg & 0x07) {    case 0x02:        fdctrl_write_dor(fdctrl, value);        break;    case 0x03:        fdctrl_write_tape(fdctrl, value);        break;    case 0x04:        fdctrl_write_rate(fdctrl, value);        break;    case 0x05:        fdctrl_write_data(fdctrl, value);        break;    default:        break;    }}static uint32_t fdctrl_read_mem (void *opaque, target_phys_addr_t reg){    return fdctrl_read(opaque, (uint32_t)reg);}static void fdctrl_write_mem (void *opaque,                              target_phys_addr_t reg, uint32_t value){    fdctrl_write(opaque, (uint32_t)reg, value);}static CPUReadMemoryFunc *fdctrl_mem_read[3] = {    fdctrl_read_mem,    fdctrl_read_mem,    fdctrl_read_mem,};static CPUWriteMemoryFunc *fdctrl_mem_write[3] = {    fdctrl_write_mem,    fdctrl_write_mem,    fdctrl_write_mem,};static CPUReadMemoryFunc *fdctrl_mem_read_strict[3] = {    fdctrl_read_mem,    NULL,    NULL,};static CPUWriteMemoryFunc *fdctrl_mem_write_strict[3] = {    fdctrl_write_mem,    NULL,    NULL,};static void fd_save (QEMUFile *f, fdrive_t *fd){    uint8_t tmp;    tmp = fd->drflags;    qemu_put_8s(f, &tmp);    qemu_put_8s(f, &fd->head);    qemu_put_8s(f, &fd->track);    qemu_put_8s(f, &fd->sect);    qemu_put_8s(f, &fd->dir);    qemu_put_8s(f, &fd->rw);}static void fdc_save (QEMUFile *f, void *opaque){    fdctrl_t *s = opaque;    qemu_put_8s(f, &s->state);    qemu_put_8s(f, &s->dma_en);    qemu_put_8s(f, &s->cur_drv);    qemu_put_8s(f, &s->bootsel);    qemu_put_buffer(f, s->fifo, FD_SECTOR_LEN);    qemu_put_be32s(f, &s->data_pos);    qemu_put_be32s(f, &s->data_len);    qemu_put_8s(f, &s->data_state);    qemu_put_8s(f, &s->data_dir);    qemu_put_8s(f, &s->int_status);    qemu_put_8s(f, &s->eot);    qemu_put_8s(f, &s->timer0);    qemu_put_8s(f, &s->timer1);    qemu_put_8s(f, &s->precomp_trk);    qemu_put_8s(f, &s->config);    qemu_put_8s(f, &s->lock);    qemu_put_8s(f, &s->pwrd);    fd_save(f, &s->drives[0]);    fd_save(f, &s->drives[1]);}static int fd_load (QEMUFile *f, fdrive_t *fd){    uint8_t tmp;    qemu_get_8s(f, &tmp);    fd->drflags = tmp;    qemu_get_8s(f, &fd->head);    qemu_get_8s(f, &fd->track);    qemu_get_8s(f, &fd->sect);    qemu_get_8s(f, &fd->dir);    qemu_get_8s(f, &fd->rw);    return 0;}static int fdc_load (QEMUFile *f, void *opaque, int version_id){    fdctrl_t *s = opaque;    int ret;    if (version_id != 1)        return -EINVAL;    qemu_get_8s(f, &s->state);    qemu_get_8s(f, &s->dma_en);    qemu_get_8s(f, &s->cur_drv);    qemu_get_8s(f, &s->bootsel);    qemu_get_buffer(f, s->fifo, FD_SECTOR_LEN);    qemu_get_be32s(f, &s->data_pos);    qemu_get_be32s(f, &s->data_len);    qemu_get_8s(f, &s->data_state);    qemu_get_8s(f, &s->data_dir);    qemu_get_8s(f, &s->int_status);    qemu_get_8s(f, &s->eot);    qemu_get_8s(f, &s->timer0);    qemu_get_8s(f, &s->timer1);    qemu_get_8s(f, &s->precomp_trk);    qemu_get_8s(f, &s->config);    qemu_get_8s(f, &s->lock);    qemu_get_8s(f, &s->pwrd);    ret = fd_load(f, &s->drives[0]);    if (ret == 0)        ret = fd_load(f, &s->drives[1]);    return ret;}static void fdctrl_external_reset(void *opaque){    fdctrl_t *s = opaque;    fdctrl_reset(s, 0);}static fdctrl_t *fdctrl_init_common (qemu_irq irq, int dma_chann,                                     target_phys_addr_t io_base,                                     BlockDriverState **fds){    fdctrl_t *fdctrl;    int i;    FLOPPY_DPRINTF("init controller\n");    fdctrl = qemu_mallocz(sizeof(fdctrl_t));    if (!fdctrl)        return NULL;    fdctrl->fifo = qemu_memalign(512, FD_SECTOR_LEN);    if (fdctrl->fifo == NULL) {        qemu_free(fdctrl);        return NULL;    }    fdctrl->result_timer = qemu_new_timer(vm_clock,                                          fdctrl_result_timer, fdctrl);    fdctrl->version = 0x90; /* Intel 82078 controller */    fdctrl->irq = irq;    fdctrl->dma_chann = dma_chann;    fdctrl->io_base = io_base;    fdctrl->config = 0x60; /* Implicit seek, polling & FIFO enabled */    if (fdctrl->dma_chann != -1) {        fdctrl->dma_en = 1;        DMA_register_channel(dma_chann, &fdctrl_transfer_handler, fdctrl);    } else {        fdctrl->dma_en = 0;    }    for (i = 0; i < 2; i++) {        fd_init(&fdctrl->drives[i], fds[i]);    }    fdctrl_reset(fdctrl, 0);    fdctrl->state = FD_CTRL_ACTIVE;    register_savevm("fdc", io_base, 1, fdc_save, fdc_load, fdctrl);    qemu_register_reset(fdctrl_external_reset, fdctrl);    for (i = 0; i < 2; i++) {        fd_revalidate(&fdctrl->drives[i]);    }    return fdctrl;}fdctrl_t *fdctrl_init (qemu_irq irq, int dma_chann, int mem_mapped,                       target_phys_addr_t io_base,                       BlockDriverState **fds){    fdctrl_t *fdctrl;    int io_mem;    fdctrl = fdctrl_init_common(irq, dma_chann, io_base, fds);    fdctrl->sun4m = 0;    if (mem_mapped) {        io_mem = cpu_register_io_memory(0, fdctrl_mem_read, fdctrl_mem_write,                                        fdctrl);        cpu_register_physical_memory(io_base, 0x08, io_mem);    } else {        register_ioport_read((uint32_t)io_base + 0x01, 5, 1, &fdctrl_read,                             fdctrl);        register_ioport_read((uint32_t)io_base + 0x07, 1, 1, &fdctrl_read,                             fdctrl);        register_ioport_write((uint32_t)io_base + 0x01, 5, 1, &fdctrl_write,                              fdctrl);        register_ioport_write((uint32_t)io_base + 0x07, 1, 1, &fdctrl_write,                              fdctrl);    }    return fdctrl;}fdctrl_t *sun4m_fdctrl_init (qemu_irq irq, target_phys_addr_t io_base,                             BlockDriverState **fds){    fdctrl_t *fdctrl;    int io_mem;    fdctrl = fdctrl_init_common(irq, 0, io_base, fds);    fdctrl->sun4m = 1;    io_mem = cpu_register_io_memory(0, fdctrl_mem_read_strict,                                    fdctrl_mem_write_strict,                                    fdctrl);    cpu_register_physical_memory(io_base, 0x08, io_mem);    return fdctrl;}/* XXX: may change if moved to bdrv */int fdctrl_get_drive_type(fdctrl_t *fdctrl, int drive_num){    return fdctrl->drives[drive_num].drive;}/* Change IRQ state */static void fdctrl_reset_irq (fdctrl_t *fdctrl){    FLOPPY_DPRINTF("Reset interrupt\n");    qemu_set_irq(fdctrl->irq, 0);    fdctrl->state &= ~FD_CTRL_INTR;}static void fdctrl_raise_irq (fdctrl_t *fdctrl, uint8_t status){    // Sparc mutation    if (fdctrl->sun4m && !fdctrl->dma_en) {        fdctrl->state &= ~FD_CTRL_BUSY;        fdctrl->int_status = status;        return;    }    if (~(fdctrl->state & FD_CTRL_INTR)) {        qemu_set_irq(fdctrl->irq, 1);        fdctrl->state |= FD_CTRL_INTR;    }    FLOPPY_DPRINTF("Set interrupt status to 0x%02x\n", status);    fdctrl->int_status = status;}/* Reset controller */static void fdctrl_reset (fdctrl_t *fdctrl, int do_irq){    int i;    FLOPPY_DPRINTF("reset controller\n");    fdctrl_reset_irq(fdctrl);    /* Initialise controller */    fdctrl->cur_drv = 0;    /* FIFO state */    fdctrl->data_pos = 0;    fdctrl->data_len = 0;    fdctrl->data_state = FD_STATE_CMD;    fdctrl->data_dir = FD_DIR_WRITE;    for (i = 0; i < MAX_FD; i++)        fd_reset(&fdctrl->drives[i]);    fdctrl_reset_fifo(fdctrl);    if (do_irq)        fdctrl_raise_irq(fdctrl, 0xc0);}static inline fdrive_t *drv0 (fdctrl_t *fdctrl){    return &fdctrl->drives[fdctrl->bootsel];}static inline fdrive_t *drv1 (fdctrl_t *fdctrl){    return &fdctrl->drives[1 - fdctrl->bootsel];}static fdrive_t *get_cur_drv (fdctrl_t *fdctrl){    return fdctrl->cur_drv == 0 ? drv0(fdctrl) : drv1(fdctrl);}/* Status B register : 0x01 (read-only) */static uint32_t fdctrl_read_statusB (fdctrl_t *fdctrl){    FLOPPY_DPRINTF("status register: 0x00\n");    return 0;}/* Digital output register : 0x02 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产**成人网毛片九色| 欧美午夜精品理论片a级按摩| 国产精品女上位| 不卡的av网站| 亚洲色图制服丝袜| 欧美在线一二三| 蜜桃av噜噜一区二区三区小说| 日韩视频在线你懂得| 国产一区二区免费视频| 综合在线观看色| 欧美日韩1234| 激情文学综合网| 中文字幕一区二区视频| 在线观看日韩av先锋影音电影院| 日韩av电影免费观看高清完整版在线观看| 日韩欧美亚洲另类制服综合在线| 国产精品一卡二卡| 亚洲激情五月婷婷| 日韩一卡二卡三卡国产欧美| 国产夫妻精品视频| 亚洲一区二区三区四区五区黄 | 蜜桃视频第一区免费观看| 欧美va亚洲va在线观看蝴蝶网| 福利一区在线观看| 亚洲午夜精品在线| xf在线a精品一区二区视频网站| 99精品黄色片免费大全| 日日夜夜精品视频免费| 国产欧美一区二区精品婷婷| 91久久精品网| 国产在线精品不卡| 一区二区三区在线影院| 日韩美女主播在线视频一区二区三区| 成人性生交大合| 午夜精品爽啪视频| 国产精品亲子乱子伦xxxx裸| 欧美日韩不卡视频| 成人福利在线看| 日本亚洲三级在线| 中文字幕一区二区三区精华液| 7777精品久久久大香线蕉| 盗摄精品av一区二区三区| 天天射综合影视| 国产精品久久久久久户外露出| 在线播放中文字幕一区| 成人app软件下载大全免费| 日本va欧美va瓶| 综合电影一区二区三区| 精品奇米国产一区二区三区| 色国产精品一区在线观看| 韩国毛片一区二区三区| 亚洲综合色网站| 日本一二三不卡| 日韩一区二区三区视频在线| 一本久久综合亚洲鲁鲁五月天| 久久99国产精品麻豆| 一区二区三区四区av| 国产日韩精品视频一区| 91精品国产综合久久香蕉麻豆| 91丝袜高跟美女视频| 国产一区二区三区在线观看免费 | 精品一区二区影视| 亚洲午夜精品在线| 日韩理论电影院| 久久综合九色综合欧美就去吻| 欧美视频在线一区| 不卡电影免费在线播放一区| 国模少妇一区二区三区| 日韩成人一级大片| 亚洲一区二区av在线| 最好看的中文字幕久久| 国产欧美一区二区在线| 欧美不卡一区二区三区| 欧美日韩成人在线一区| 91国模大尺度私拍在线视频| 成人涩涩免费视频| 国产乱码精品一区二区三区av| 日韩精品电影在线观看| 亚洲国产欧美在线人成| 亚洲欧美成人一区二区三区| 国产精品网曝门| 国产喂奶挤奶一区二区三区| 精品sm在线观看| 欧美一区永久视频免费观看| 欧美视频三区在线播放| 色综合久久中文字幕综合网| 成人免费看的视频| 国产精品66部| 国产一区不卡在线| 激情小说欧美图片| 国产在线看一区| 日本aⅴ亚洲精品中文乱码| 午夜精品久久久久久久蜜桃app | 亚洲黄色小视频| 成人欧美一区二区三区白人| 亚洲国产成人午夜在线一区| 久久精品一级爱片| 欧美精品一区二区精品网| 欧美成人精品福利| 日韩精品一区二区三区视频| 欧美tk—视频vk| 日韩一区二区在线观看视频| 日韩女优制服丝袜电影| 日韩午夜电影av| 精品日韩在线一区| 久久免费视频一区| 国产欧美日韩卡一| 日本一区二区成人| 亚洲欧洲精品一区二区精品久久久| 国产精品美女久久久久久久久久久| 国产精品灌醉下药二区| 国产精品成人一区二区艾草 | 亚洲一区二区三区四区不卡| 亚洲国产欧美日韩另类综合| 亚洲第一久久影院| 日韩专区在线视频| 免费高清不卡av| 久久97超碰国产精品超碰| 激情综合网天天干| 国产精品一卡二卡在线观看| 成人午夜伦理影院| 91麻豆免费看| 欧美日韩在线三区| 日韩一区二区三区av| 精品国产一二三| 国产午夜亚洲精品不卡| 成人欧美一区二区三区小说 | 三级不卡在线观看| 美女视频一区二区三区| 国产一区激情在线| 成人免费精品视频| 欧美在线视频不卡| 日韩精品一区二区三区蜜臀 | 高清不卡一二三区| 色综合久久综合| 在线播放91灌醉迷j高跟美女| 欧美成人a在线| 国产精品你懂的在线欣赏| 一区二区三区四区在线| 偷偷要91色婷婷| 国产一区二区在线看| 99riav一区二区三区| 欧美精品123区| 国产亚洲欧美一级| 亚洲精品一二三区| 免费观看成人av| 成人免费观看视频| 欧美乱妇15p| 国产欧美综合色| 一区二区三区美女视频| 麻豆精品视频在线观看| 成人免费av在线| 欧美日韩国产美| 久久精品一区四区| 亚洲精品视频在线看| 免费高清视频精品| av中文一区二区三区| 欧美日韩国产精品成人| 国产欧美一区二区三区沐欲| 一区二区三区国产| 国产呦精品一区二区三区网站 | 91视频国产资源| 91精品欧美综合在线观看最新| 国产欧美一区二区精品久导航| 亚洲一区在线观看免费观看电影高清 | 亚洲精品国产品国语在线app| 日本亚洲三级在线| 99久久久免费精品国产一区二区 | 国产精品麻豆网站| 日本大胆欧美人术艺术动态| 成人精品免费视频| 91精品国产一区二区人妖| 国产精品久久久久久一区二区三区 | 成人不卡免费av| 91精品国产一区二区| 国产精品久久久久四虎| 麻豆精品久久久| 欧美亚洲综合色| 国产片一区二区三区| 日韩国产精品久久久| 99国产一区二区三精品乱码| 欧美成人猛片aaaaaaa| 亚洲综合男人的天堂| 国产成人日日夜夜| 欧美一级欧美三级| 亚洲欧美日韩电影| 国产成人免费av在线| 91精品国产高清一区二区三区蜜臀| 国产精品视频第一区| 久久国产精品一区二区| 欧美三区在线观看| 日本一区二区视频在线| 美女视频黄 久久| 欧美亚洲精品一区| 国产精品传媒视频| 国产成人aaa| 精品国产第一区二区三区观看体验 | 99久久久无码国产精品| 久久精品欧美日韩精品| 蜜臀av一区二区|