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

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

?? vmware_vga.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 3 頁
字號:
    case SVGA_REG_CURSOR_X:        s->cursor.x = value;        break;    case SVGA_REG_CURSOR_Y:        s->cursor.y = value;        break;    case SVGA_REG_CURSOR_ON:        s->cursor.on |= (value == SVGA_CURSOR_ON_SHOW);        s->cursor.on &= (value != SVGA_CURSOR_ON_HIDE);#ifdef HW_MOUSE_ACCEL        if (s->ds->mouse_set && value <= SVGA_CURSOR_ON_SHOW)            s->ds->mouse_set(s->cursor.x, s->cursor.y, s->cursor.on);#endif        break;    case SVGA_REG_MEM_REGS:    case SVGA_REG_NUM_DISPLAYS:    case SVGA_REG_PITCHLOCK:    case SVGA_PALETTE_BASE ... SVGA_PALETTE_END:        break;    default:        if (s->index >= SVGA_SCRATCH_BASE &&                s->index < SVGA_SCRATCH_BASE + s->scratch_size) {            s->scratch[s->index - SVGA_SCRATCH_BASE] = value;            break;        }        printf("%s: Bad register %02x\n", __FUNCTION__, s->index);    }}static uint32_t vmsvga_bios_read(void *opaque, uint32_t address){    printf("%s: what are we supposed to return?\n", __FUNCTION__);    return 0xcafe;}static void vmsvga_bios_write(void *opaque, uint32_t address, uint32_t data){    printf("%s: what are we supposed to do with (%08x)?\n",                    __FUNCTION__, data);}static inline void vmsvga_size(struct vmsvga_state_s *s){    if (s->new_width != s->width || s->new_height != s->height) {        s->width = s->new_width;        s->height = s->new_height;        dpy_resize(s->ds, s->width, s->height);        s->invalidated = 1;    }}static void vmsvga_update_display(void *opaque){    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;    if (!s->enable) {#ifdef EMBED_STDVGA        s->update(opaque);#endif        return;    }    vmsvga_size(s);    vmsvga_fifo_run(s);    vmsvga_update_rect_flush(s);    /*     * Is it more efficient to look at vram VGA-dirty bits or wait     * for the driver to issue SVGA_CMD_UPDATE?     */    if (s->invalidated) {        s->invalidated = 0;        vmsvga_update_screen(s);    }}static void vmsvga_reset(struct vmsvga_state_s *s){    s->index = 0;    s->enable = 0;    s->config = 0;    s->width = -1;    s->height = -1;    s->svgaid = SVGA_ID;    s->depth = s->ds->depth ? s->ds->depth : 24;    s->bypp = (s->depth + 7) >> 3;    s->cursor.on = 0;    s->redraw_fifo_first = 0;    s->redraw_fifo_last = 0;    switch (s->depth) {    case 8:        s->wred   = 0x00000007;        s->wgreen = 0x00000038;        s->wblue  = 0x000000c0;        break;    case 15:        s->wred   = 0x0000001f;        s->wgreen = 0x000003e0;        s->wblue  = 0x00007c00;        break;    case 16:        s->wred   = 0x0000001f;        s->wgreen = 0x000007e0;        s->wblue  = 0x0000f800;        break;    case 24:        s->wred   = 0x00ff0000;        s->wgreen = 0x0000ff00;        s->wblue  = 0x000000ff;        break;    case 32:        s->wred   = 0x00ff0000;        s->wgreen = 0x0000ff00;        s->wblue  = 0x000000ff;        break;    }    s->syncing = 0;}static void vmsvga_invalidate_display(void *opaque){    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;    if (!s->enable) {#ifdef EMBED_STDVGA        s->invalidate(opaque);#endif        return;    }    s->invalidated = 1;}/* save the vga display in a PPM image even if no display is   available */static void vmsvga_screen_dump(void *opaque, const char *filename){    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;    if (!s->enable) {#ifdef EMBED_STDVGA        s->screen_dump(opaque, filename);#endif        return;    }    if (s->depth == 32) {        ppm_save(filename, s->vram, s->width, s->height, s->ds->linesize);    }}#ifdef DIRECT_VRAMstatic uint32_t vmsvga_vram_readb(void *opaque, target_phys_addr_t addr){    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;    addr -= SVGA_MEM_BASE;    if (addr < s->fb_size)        return *(uint8_t *) (s->ds->data + addr);    else        return *(uint8_t *) (s->vram + addr);}static uint32_t vmsvga_vram_readw(void *opaque, target_phys_addr_t addr){    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;    addr -= SVGA_MEM_BASE;    if (addr < s->fb_size)        return *(uint16_t *) (s->ds->data + addr);    else        return *(uint16_t *) (s->vram + addr);}static uint32_t vmsvga_vram_readl(void *opaque, target_phys_addr_t addr){    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;    addr -= SVGA_MEM_BASE;    if (addr < s->fb_size)        return *(uint32_t *) (s->ds->data + addr);    else        return *(uint32_t *) (s->vram + addr);}static void vmsvga_vram_writeb(void *opaque, target_phys_addr_t addr,                uint32_t value){    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;    addr -= SVGA_MEM_BASE;    if (addr < s->fb_size)        *(uint8_t *) (s->ds->data + addr) = value;    else        *(uint8_t *) (s->vram + addr) = value;}static void vmsvga_vram_writew(void *opaque, target_phys_addr_t addr,                uint32_t value){    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;    addr -= SVGA_MEM_BASE;    if (addr < s->fb_size)        *(uint16_t *) (s->ds->data + addr) = value;    else        *(uint16_t *) (s->vram + addr) = value;}static void vmsvga_vram_writel(void *opaque, target_phys_addr_t addr,                uint32_t value){    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;    addr -= SVGA_MEM_BASE;    if (addr < s->fb_size)        *(uint32_t *) (s->ds->data + addr) = value;    else        *(uint32_t *) (s->vram + addr) = value;}static CPUReadMemoryFunc *vmsvga_vram_read[] = {    vmsvga_vram_readb,    vmsvga_vram_readw,    vmsvga_vram_readl,};static CPUWriteMemoryFunc *vmsvga_vram_write[] = {    vmsvga_vram_writeb,    vmsvga_vram_writew,    vmsvga_vram_writel,};#endifstatic void vmsvga_save(struct vmsvga_state_s *s, QEMUFile *f){    qemu_put_be32(f, s->depth);    qemu_put_be32(f, s->enable);    qemu_put_be32(f, s->config);    qemu_put_be32(f, s->cursor.id);    qemu_put_be32(f, s->cursor.x);    qemu_put_be32(f, s->cursor.y);    qemu_put_be32(f, s->cursor.on);    qemu_put_be32(f, s->index);    qemu_put_buffer(f, (uint8_t *) s->scratch, s->scratch_size * 4);    qemu_put_be32(f, s->new_width);    qemu_put_be32(f, s->new_height);    qemu_put_be32s(f, &s->guest);    qemu_put_be32s(f, &s->svgaid);    qemu_put_be32(f, s->syncing);    qemu_put_be32(f, s->fb_size);}static int vmsvga_load(struct vmsvga_state_s *s, QEMUFile *f){    int depth;    depth=qemu_get_be32(f);    s->enable=qemu_get_be32(f);    s->config=qemu_get_be32(f);    s->cursor.id=qemu_get_be32(f);    s->cursor.x=qemu_get_be32(f);    s->cursor.y=qemu_get_be32(f);    s->cursor.on=qemu_get_be32(f);    s->index=qemu_get_be32(f);    qemu_get_buffer(f, (uint8_t *) s->scratch, s->scratch_size * 4);    s->new_width=qemu_get_be32(f);    s->new_height=qemu_get_be32(f);    qemu_get_be32s(f, &s->guest);    qemu_get_be32s(f, &s->svgaid);    s->syncing=qemu_get_be32(f);    s->fb_size=qemu_get_be32(f);    if (s->enable && depth != s->depth) {        printf("%s: need colour depth of %i bits to resume operation.\n",                        __FUNCTION__, depth);        return -EINVAL;    }    s->invalidated = 1;    if (s->config)        s->fifo = (uint32_t *) &s->vram[s->vram_size - SVGA_FIFO_SIZE];    return 0;}static void vmsvga_init(struct vmsvga_state_s *s, DisplayState *ds,                uint8_t *vga_ram_base, unsigned long vga_ram_offset,                int vga_ram_size){    int iomemtype;    s->ds = ds;    s->vram = vga_ram_base;    s->vram_size = vga_ram_size;    s->scratch_size = SVGA_SCRATCH_SIZE;    s->scratch = (uint32_t *) qemu_malloc(s->scratch_size * 4);    vmsvga_reset(s);#ifdef DIRECT_VRAM    iomemtype = cpu_register_io_memory(0, vmsvga_vram_read,                    vmsvga_vram_write, s);#else    iomemtype = vga_ram_offset | IO_MEM_RAM;#endif    cpu_register_physical_memory(SVGA_MEM_BASE, vga_ram_size,                    iomemtype);    register_ioport_read(SVGA_IO_BASE + SVGA_IO_MUL * SVGA_INDEX_PORT,                    1, 4, vmsvga_index_read, s);    register_ioport_write(SVGA_IO_BASE + SVGA_IO_MUL * SVGA_INDEX_PORT,                    1, 4, vmsvga_index_write, s);    register_ioport_read(SVGA_IO_BASE + SVGA_IO_MUL * SVGA_VALUE_PORT,                    1, 4, vmsvga_value_read, s);    register_ioport_write(SVGA_IO_BASE + SVGA_IO_MUL * SVGA_VALUE_PORT,                    1, 4, vmsvga_value_write, s);    register_ioport_read(SVGA_IO_BASE + SVGA_IO_MUL * SVGA_BIOS_PORT,                    1, 4, vmsvga_bios_read, s);    register_ioport_write(SVGA_IO_BASE + SVGA_IO_MUL * SVGA_BIOS_PORT,                    1, 4, vmsvga_bios_write, s);    graphic_console_init(ds, vmsvga_update_display,                    vmsvga_invalidate_display, vmsvga_screen_dump, s);#ifdef EMBED_STDVGA    vga_common_init((VGAState *) s, ds,                    vga_ram_base, vga_ram_offset, vga_ram_size);    vga_init((VGAState *) s);#endif}static void pci_vmsvga_save(QEMUFile *f, void *opaque){    struct pci_vmsvga_state_s *s = (struct pci_vmsvga_state_s *) opaque;    pci_device_save(&s->card, f);    vmsvga_save(&s->chip, f);}static int pci_vmsvga_load(QEMUFile *f, void *opaque, int version_id){    struct pci_vmsvga_state_s *s = (struct pci_vmsvga_state_s *) opaque;    int ret;    ret = pci_device_load(&s->card, f);    if (ret < 0)        return ret;    ret = vmsvga_load(&s->chip, f);    if (ret < 0)        return ret;    return 0;}#define PCI_VENDOR_ID_VMWARE		0x15ad#define PCI_DEVICE_ID_VMWARE_SVGA2	0x0405#define PCI_DEVICE_ID_VMWARE_SVGA	0x0710#define PCI_DEVICE_ID_VMWARE_NET	0x0720#define PCI_DEVICE_ID_VMWARE_SCSI	0x0730#define PCI_DEVICE_ID_VMWARE_IDE	0x1729#define PCI_CLASS_BASE_DISPLAY		0x03#define PCI_CLASS_SUB_VGA		0x00#define PCI_CLASS_HEADERTYPE_00h	0x00void pci_vmsvga_init(PCIBus *bus, DisplayState *ds, uint8_t *vga_ram_base,                     unsigned long vga_ram_offset, int vga_ram_size){    struct pci_vmsvga_state_s *s;    /* Setup PCI configuration */    s = (struct pci_vmsvga_state_s *)        pci_register_device(bus, "QEMUware SVGA",                sizeof(struct pci_vmsvga_state_s), -1, 0, 0);    s->card.config[PCI_VENDOR_ID]	= PCI_VENDOR_ID_VMWARE & 0xff;    s->card.config[PCI_VENDOR_ID + 1]	= PCI_VENDOR_ID_VMWARE >> 8;    s->card.config[PCI_DEVICE_ID]	= SVGA_PCI_DEVICE_ID & 0xff;    s->card.config[PCI_DEVICE_ID + 1]	= SVGA_PCI_DEVICE_ID >> 8;    s->card.config[PCI_COMMAND]		= 0x07;		/* I/O + Memory */    s->card.config[PCI_CLASS_DEVICE]	= PCI_CLASS_SUB_VGA;    s->card.config[0x0b]		= PCI_CLASS_BASE_DISPLAY;    s->card.config[0x0c]		= 0x08;		/* Cache line size */    s->card.config[0x0d]		= 0x40;		/* Latency timer */    s->card.config[0x0e]		= PCI_CLASS_HEADERTYPE_00h;    s->card.config[0x10]		= ((SVGA_IO_BASE >>  0) & 0xff) | 1;    s->card.config[0x11]		=  (SVGA_IO_BASE >>  8) & 0xff;    s->card.config[0x12]		=  (SVGA_IO_BASE >> 16) & 0xff;    s->card.config[0x13]		=  (SVGA_IO_BASE >> 24) & 0xff;    s->card.config[0x18]		= (SVGA_MEM_BASE >>  0) & 0xff;    s->card.config[0x19]		= (SVGA_MEM_BASE >>  8) & 0xff;    s->card.config[0x1a]		= (SVGA_MEM_BASE >> 16) & 0xff;    s->card.config[0x1b]		= (SVGA_MEM_BASE >> 24) & 0xff;    s->card.config[0x2c]		= PCI_VENDOR_ID_VMWARE & 0xff;    s->card.config[0x2d]		= PCI_VENDOR_ID_VMWARE >> 8;    s->card.config[0x2e]		= SVGA_PCI_DEVICE_ID & 0xff;    s->card.config[0x2f]		= SVGA_PCI_DEVICE_ID >> 8;    s->card.config[0x3c]		= 0xff;		/* End */    vmsvga_init(&s->chip, ds, vga_ram_base, vga_ram_offset, vga_ram_size);    register_savevm("vmware_vga", 0, 0, pci_vmsvga_save, pci_vmsvga_load, s);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本到一区二区三区| 天堂久久久久va久久久久| 日韩一卡二卡三卡四卡| 一本到不卡免费一区二区| 不卡一区二区三区四区| 国产成人av福利| 国产成人在线观看| 高清视频一区二区| 99免费精品在线| 欧美在线免费视屏| 欧美日韩另类一区| 欧美一区二区三区四区五区| 欧美一区二区三区性视频| 精品乱码亚洲一区二区不卡| 欧美精品一区二区三区四区 | 日韩黄色小视频| 一区二区三区高清不卡| 亚洲色欲色欲www| 亚洲精品成人精品456| 亚洲福利国产精品| 精品午夜久久福利影院| 成人毛片视频在线观看| 在线观看三级视频欧美| 欧美一卡二卡在线观看| 中文字幕免费不卡在线| 亚洲国产一区在线观看| 黄色日韩网站视频| 99久久精品免费| 4438x成人网最大色成网站| 欧美成人欧美edvon| 中文字幕一区av| 午夜a成v人精品| 国产91精品欧美| 欧美日韩在线观看一区二区| 久久综合一区二区| 亚洲一区在线观看免费| 激情综合五月天| 在线观看成人免费视频| 久久综合久色欧美综合狠狠| 一区二区三区自拍| 国产999精品久久| 91精品国产欧美一区二区| 国产精品久久午夜夜伦鲁鲁| 秋霞电影网一区二区| 不卡一区中文字幕| 久久亚洲一区二区三区四区| 午夜视频一区在线观看| www.日韩精品| 久久久精品综合| 男男视频亚洲欧美| 欧美性受极品xxxx喷水| 中文字幕精品一区二区三区精品 | 欧美日本乱大交xxxxx| 久久久99精品久久| 青草国产精品久久久久久| 色国产精品一区在线观看| 日本一区免费视频| 精品一区二区三区视频| 欧美精品xxxxbbbb| 亚洲自拍偷拍网站| 99免费精品视频| 中文字幕日韩一区二区| 国产乱子伦一区二区三区国色天香| 欧美影院精品一区| 一区二区三区不卡视频| 99久久久久久| 亚洲欧美日韩国产成人精品影院| 高潮精品一区videoshd| 久久精品在这里| 国产精品一区不卡| 久久久电影一区二区三区| 精品一二线国产| 精品区一区二区| 久久 天天综合| 精品欧美乱码久久久久久| 久久99精品久久久久婷婷| 亚洲色图清纯唯美| 91在线观看下载| 亚洲欧美国产高清| 色系网站成人免费| 亚洲午夜精品在线| 欧美喷水一区二区| 日本伊人精品一区二区三区观看方式| 欧美三级蜜桃2在线观看| 亚洲国产美女搞黄色| 欧美色窝79yyyycom| 日韩成人精品在线观看| 日韩欧美国产一区二区在线播放| 久久精品国产久精国产爱| 久久一区二区三区四区| 成人永久aaa| 一区二区三区在线观看国产| 欧美日韩视频在线一区二区| 蜜桃久久av一区| 国产午夜一区二区三区| av爱爱亚洲一区| 亚洲va韩国va欧美va精品| 日韩欧美色综合网站| 成人一级黄色片| 一个色综合av| 精品日韩99亚洲| 91麻豆免费观看| 日韩成人一区二区三区在线观看| 久久久久亚洲综合| 在线区一区二视频| 久久精品国产亚洲a| 亚洲视频你懂的| 日韩你懂的在线观看| 成人精品小蝌蚪| 日韩不卡在线观看日韩不卡视频| 久久亚区不卡日本| 91久久久免费一区二区| 久久成人羞羞网站| 亚洲一区二区视频| 久久精品视频网| 欧美精三区欧美精三区| 粉嫩蜜臀av国产精品网站| 亚洲与欧洲av电影| 亚洲国产精品成人综合色在线婷婷 | 色综合一个色综合亚洲| 免费成人结看片| 亚洲欧美日本韩国| 久久婷婷久久一区二区三区| 欧美午夜电影网| 成人在线综合网| 黄页视频在线91| 亚洲6080在线| 亚洲人精品午夜| 国产日韩精品一区| 日韩一区二区三区四区| 在线视频国内自拍亚洲视频| 成人av动漫在线| 国内精品在线播放| 免费不卡在线观看| 亚洲第一成人在线| 亚洲精品日韩综合观看成人91| 久久久久久一二三区| 日韩一区二区三区电影| 欧美无砖专区一中文字| 99re这里只有精品视频首页| 国产盗摄视频一区二区三区| 精品一区二区三区视频| 日韩av午夜在线观看| 亚洲va国产va欧美va观看| 一区二区三区四区视频精品免费| 国产日韩精品一区二区浪潮av| 精品国产免费久久| 欧美成人性战久久| 精品国产一区二区三区久久久蜜月 | 91免费精品国自产拍在线不卡| 国产不卡在线播放| 麻豆精品视频在线观看| 精品在线视频一区| 美女精品自拍一二三四| 日本最新不卡在线| 日韩精品一二区| 日韩福利电影在线| 美女诱惑一区二区| 韩国女主播成人在线| 国产在线播放一区| 国产99久久久国产精品潘金| 国产精品1024久久| 成人美女视频在线看| 99re6这里只有精品视频在线观看| 成人黄色777网| 一本色道久久综合精品竹菊| 在线观看91视频| 欧美日韩国产天堂| 日韩欧美精品三级| 国产亚洲欧洲997久久综合| 国产欧美一区视频| 亚洲精品日韩综合观看成人91| 一区二区三区日韩在线观看| 亚洲成人在线免费| 久久精品国产成人一区二区三区 | 欧美精品一区二区高清在线观看 | 亚洲综合在线视频| 首页综合国产亚洲丝袜| 国产在线视频不卡二| 国产91精品久久久久久久网曝门| jlzzjlzz亚洲女人18| 欧美日韩精品一二三区| 精品少妇一区二区三区在线视频 | 亚洲精品国产第一综合99久久| 亚洲国产毛片aaaaa无费看| 久久99国产精品尤物| 91丨国产丨九色丨pron| 欧美一区二区三区在线观看| 国产精品三级视频| 天堂va蜜桃一区二区三区| 国产成人精品午夜视频免费| 色偷偷久久一区二区三区| 久久一日本道色综合| 亚洲一区二区三区在线播放| 久久激情五月激情| 91麻豆国产香蕉久久精品| 久久精品一区蜜桃臀影院| 午夜国产精品一区| proumb性欧美在线观看| 日韩一区二区三区在线视频|