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

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

?? slavio_misc.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
字號:
/* * QEMU Sparc SLAVIO aux io port emulation * * Copyright (c) 2005 Fabrice Bellard * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */#include "hw.h"#include "sun4m.h"#include "sysemu.h"/* debug misc *///#define DEBUG_MISC/* * This is the auxio port, chip control and system control part of * chip STP2001 (Slave I/O), also produced as NCR89C105. See * http://www.ibiblio.org/pub/historic-linux/early-ports/Sparc/NCR/NCR89C105.txt * * This also includes the PMC CPU idle controller. */#ifdef DEBUG_MISC#define MISC_DPRINTF(fmt, args...) \do { printf("MISC: " fmt , ##args); } while (0)#else#define MISC_DPRINTF(fmt, args...)#endiftypedef struct MiscState {    qemu_irq irq;    uint8_t config;    uint8_t aux1, aux2;    uint8_t diag, mctrl;    uint32_t sysctrl;    uint16_t leds;    target_phys_addr_t power_base;} MiscState;#define MISC_SIZE 1#define SYSCTRL_MAXADDR 3#define SYSCTRL_SIZE (SYSCTRL_MAXADDR + 1)#define LED_MAXADDR 1#define LED_SIZE (LED_MAXADDR + 1)#define MISC_MASK 0x0fff0000#define MISC_LEDS 0x01600000#define MISC_CFG  0x01800000#define MISC_AUX1 0x01900000#define MISC_AUX2 0x01910000#define MISC_DIAG 0x01a00000#define MISC_MDM  0x01b00000#define MISC_SYS  0x01f00000#define AUX2_PWROFF    0x01#define AUX2_PWRINTCLR 0x02#define AUX2_PWRFAIL   0x20#define CFG_PWRINTEN   0x08#define SYS_RESET      0x01#define SYS_RESETSTAT  0x02static void slavio_misc_update_irq(void *opaque){    MiscState *s = opaque;    if ((s->aux2 & AUX2_PWRFAIL) && (s->config & CFG_PWRINTEN)) {        MISC_DPRINTF("Raise IRQ\n");        qemu_irq_raise(s->irq);    } else {        MISC_DPRINTF("Lower IRQ\n");        qemu_irq_lower(s->irq);    }}static void slavio_misc_reset(void *opaque){    MiscState *s = opaque;    // Diagnostic and system control registers not cleared in reset    s->config = s->aux1 = s->aux2 = s->mctrl = 0;}void slavio_set_power_fail(void *opaque, int power_failing){    MiscState *s = opaque;    MISC_DPRINTF("Power fail: %d, config: %d\n", power_failing, s->config);    if (power_failing && (s->config & CFG_PWRINTEN)) {        s->aux2 |= AUX2_PWRFAIL;    } else {        s->aux2 &= ~AUX2_PWRFAIL;    }    slavio_misc_update_irq(s);}static void slavio_misc_mem_writeb(void *opaque, target_phys_addr_t addr,                                   uint32_t val){    MiscState *s = opaque;    switch (addr & MISC_MASK) {    case MISC_CFG:        MISC_DPRINTF("Write config %2.2x\n", val & 0xff);        s->config = val & 0xff;        slavio_misc_update_irq(s);        break;    case MISC_AUX1:        MISC_DPRINTF("Write aux1 %2.2x\n", val & 0xff);        s->aux1 = val & 0xff;        break;    case MISC_AUX2:        val &= AUX2_PWRINTCLR | AUX2_PWROFF;        MISC_DPRINTF("Write aux2 %2.2x\n", val);        val |= s->aux2 & AUX2_PWRFAIL;        if (val & AUX2_PWRINTCLR) // Clear Power Fail int            val &= AUX2_PWROFF;        s->aux2 = val;        if (val & AUX2_PWROFF)            qemu_system_shutdown_request();        slavio_misc_update_irq(s);        break;    case MISC_DIAG:        MISC_DPRINTF("Write diag %2.2x\n", val & 0xff);        s->diag = val & 0xff;        break;    case MISC_MDM:        MISC_DPRINTF("Write modem control %2.2x\n", val & 0xff);        s->mctrl = val & 0xff;        break;    default:        if (addr == s->power_base) {            MISC_DPRINTF("Write power management %2.2x\n", val & 0xff);            cpu_interrupt(cpu_single_env, CPU_INTERRUPT_HALT);        }        break;    }}static uint32_t slavio_misc_mem_readb(void *opaque, target_phys_addr_t addr){    MiscState *s = opaque;    uint32_t ret = 0;    switch (addr & MISC_MASK) {    case MISC_CFG:        ret = s->config;        MISC_DPRINTF("Read config %2.2x\n", ret);        break;    case MISC_AUX1:        ret = s->aux1;        MISC_DPRINTF("Read aux1 %2.2x\n", ret);        break;    case MISC_AUX2:        ret = s->aux2;        MISC_DPRINTF("Read aux2 %2.2x\n", ret);        break;    case MISC_DIAG:        ret = s->diag;        MISC_DPRINTF("Read diag %2.2x\n", ret);        break;    case MISC_MDM:        ret = s->mctrl;        MISC_DPRINTF("Read modem control %2.2x\n", ret);        break;    default:        if (addr == s->power_base) {            MISC_DPRINTF("Read power management %2.2x\n", ret);        }        break;    }    return ret;}static CPUReadMemoryFunc *slavio_misc_mem_read[3] = {    slavio_misc_mem_readb,    NULL,    NULL,};static CPUWriteMemoryFunc *slavio_misc_mem_write[3] = {    slavio_misc_mem_writeb,    NULL,    NULL,};static uint32_t slavio_sysctrl_mem_readl(void *opaque, target_phys_addr_t addr){    MiscState *s = opaque;    uint32_t ret = 0, saddr;    saddr = addr & SYSCTRL_MAXADDR;    switch (saddr) {    case 0:        ret = s->sysctrl;        break;    default:        break;    }    MISC_DPRINTF("Read system control reg 0x" TARGET_FMT_plx " = %x\n", addr,                 ret);    return ret;}static void slavio_sysctrl_mem_writel(void *opaque, target_phys_addr_t addr,                                      uint32_t val){    MiscState *s = opaque;    uint32_t saddr;    saddr = addr & SYSCTRL_MAXADDR;    MISC_DPRINTF("Write system control reg 0x" TARGET_FMT_plx " =  %x\n", addr,                 val);    switch (saddr) {    case 0:        if (val & SYS_RESET) {            s->sysctrl = SYS_RESETSTAT;            qemu_system_reset_request();        }        break;    default:        break;    }}static CPUReadMemoryFunc *slavio_sysctrl_mem_read[3] = {    NULL,    NULL,    slavio_sysctrl_mem_readl,};static CPUWriteMemoryFunc *slavio_sysctrl_mem_write[3] = {    NULL,    NULL,    slavio_sysctrl_mem_writel,};static uint32_t slavio_led_mem_readw(void *opaque, target_phys_addr_t addr){    MiscState *s = opaque;    uint32_t ret = 0, saddr;    saddr = addr & LED_MAXADDR;    switch (saddr) {    case 0:        ret = s->leds;        break;    default:        break;    }    MISC_DPRINTF("Read diagnostic LED reg 0x" TARGET_FMT_plx " = %x\n", addr,                 ret);    return ret;}static void slavio_led_mem_writew(void *opaque, target_phys_addr_t addr,                                  uint32_t val){    MiscState *s = opaque;    uint32_t saddr;    saddr = addr & LED_MAXADDR;    MISC_DPRINTF("Write diagnostic LED reg 0x" TARGET_FMT_plx " =  %x\n", addr,                 val);    switch (saddr) {    case 0:        s->leds = val;        break;    default:        break;    }}static CPUReadMemoryFunc *slavio_led_mem_read[3] = {    NULL,    slavio_led_mem_readw,    NULL,};static CPUWriteMemoryFunc *slavio_led_mem_write[3] = {    NULL,    slavio_led_mem_writew,    NULL,};static void slavio_misc_save(QEMUFile *f, void *opaque){    MiscState *s = opaque;    int tmp;    uint8_t tmp8;    tmp = 0;    qemu_put_be32s(f, &tmp); /* ignored, was IRQ.  */    qemu_put_8s(f, &s->config);    qemu_put_8s(f, &s->aux1);    qemu_put_8s(f, &s->aux2);    qemu_put_8s(f, &s->diag);    qemu_put_8s(f, &s->mctrl);    tmp8 = s->sysctrl & 0xff;    qemu_put_8s(f, &tmp8);}static int slavio_misc_load(QEMUFile *f, void *opaque, int version_id){    MiscState *s = opaque;    int tmp;    uint8_t tmp8;    if (version_id != 1)        return -EINVAL;    qemu_get_be32s(f, &tmp);    qemu_get_8s(f, &s->config);    qemu_get_8s(f, &s->aux1);    qemu_get_8s(f, &s->aux2);    qemu_get_8s(f, &s->diag);    qemu_get_8s(f, &s->mctrl);    qemu_get_8s(f, &tmp8);    s->sysctrl = (uint32_t)tmp8;    return 0;}void *slavio_misc_init(target_phys_addr_t base, target_phys_addr_t power_base,                       qemu_irq irq){    int slavio_misc_io_memory;    MiscState *s;    s = qemu_mallocz(sizeof(MiscState));    if (!s)        return NULL;    /* 8 bit registers */    slavio_misc_io_memory = cpu_register_io_memory(0, slavio_misc_mem_read,                                                   slavio_misc_mem_write, s);    // Slavio control    cpu_register_physical_memory(base + MISC_CFG, MISC_SIZE,                                 slavio_misc_io_memory);    // AUX 1    cpu_register_physical_memory(base + MISC_AUX1, MISC_SIZE,                                 slavio_misc_io_memory);    // AUX 2    cpu_register_physical_memory(base + MISC_AUX2, MISC_SIZE,                                 slavio_misc_io_memory);    // Diagnostics    cpu_register_physical_memory(base + MISC_DIAG, MISC_SIZE,                                 slavio_misc_io_memory);    // Modem control    cpu_register_physical_memory(base + MISC_MDM, MISC_SIZE,                                 slavio_misc_io_memory);    // Power management    cpu_register_physical_memory(power_base, MISC_SIZE, slavio_misc_io_memory);    s->power_base = power_base;    /* 16 bit registers */    slavio_misc_io_memory = cpu_register_io_memory(0, slavio_led_mem_read,                                                   slavio_led_mem_write, s);    /* ss600mp diag LEDs */    cpu_register_physical_memory(base + MISC_LEDS, MISC_SIZE,                                 slavio_misc_io_memory);    /* 32 bit registers */    slavio_misc_io_memory = cpu_register_io_memory(0, slavio_sysctrl_mem_read,                                                   slavio_sysctrl_mem_write,                                                   s);    // System control    cpu_register_physical_memory(base + MISC_SYS, SYSCTRL_SIZE,                                 slavio_misc_io_memory);    s->irq = irq;    register_savevm("slavio_misc", base, 1, slavio_misc_save, slavio_misc_load,                    s);    qemu_register_reset(slavio_misc_reset, s);    slavio_misc_reset(s);    return s;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡一区二区三区| 国产拍欧美日韩视频二区| 一二三四社区欧美黄| 一本在线高清不卡dvd| 一区二区高清免费观看影视大全 | 久久久五月婷婷| 国产一区视频导航| 国产精品久久久久久一区二区三区| 成人不卡免费av| 樱花草国产18久久久久| 欧美日韩精品系列| 激情综合色播激情啊| 国产精品欧美极品| 欧美日韩久久久一区| 国产一区三区三区| 亚洲另类中文字| 3atv一区二区三区| 国产suv精品一区二区6| 亚洲国产成人精品视频| 欧美videofree性高清杂交| 成人自拍视频在线| 亚洲国产一区二区a毛片| 欧美mv日韩mv国产网站app| 成人美女在线观看| 午夜久久久久久久久久一区二区| 久久综合色一综合色88| 在线观看免费视频综合| 激情久久五月天| 亚洲精品成人少妇| 精品国产乱码久久久久久牛牛| 91美女在线观看| 久久精品国产99| 亚洲一区av在线| 国产农村妇女毛片精品久久麻豆| 在线看不卡av| 成人免费高清在线观看| 免费在线观看一区二区三区| 最新高清无码专区| 精品国产伦一区二区三区观看方式| 色国产综合视频| 国产成a人无v码亚洲福利| 日韩精品久久理论片| 最新中文字幕一区二区三区| 欧美成人精精品一区二区频| 欧洲国内综合视频| 成人黄色在线网站| 精品一区二区三区免费播放| 亚洲精品欧美激情| 日本一区二区视频在线观看| 日韩一区二区视频在线观看| 欧美色网站导航| 91污片在线观看| 国v精品久久久网| 国内成人免费视频| 久久精品噜噜噜成人88aⅴ| 亚洲国产三级在线| 亚洲资源中文字幕| 亚洲人成电影网站色mp4| 国产精品视频线看| 国产亚洲成年网址在线观看| 精品乱码亚洲一区二区不卡| 91精品国产欧美一区二区18| 欧洲一区在线电影| 欧日韩精品视频| 色视频成人在线观看免| 99riav一区二区三区| 成人免费三级在线| 成人福利视频网站| 成人污污视频在线观看| 国产精品12区| 国产成人精品在线看| 国内精品第一页| 国产伦精品一区二区三区免费迷| 久久99精品国产麻豆不卡| 麻豆国产欧美一区二区三区| 美女视频黄免费的久久| 麻豆高清免费国产一区| 美美哒免费高清在线观看视频一区二区| 图片区小说区国产精品视频| 午夜精品久久久久| 日韩av电影天堂| 久久精品999| 精品一二线国产| 国产成人综合网站| 播五月开心婷婷综合| 99re这里只有精品6| 在线亚洲欧美专区二区| 欧美日韩一区 二区 三区 久久精品| 欧美视频一区二区在线观看| 91精品国产欧美一区二区18| 欧美电影免费提供在线观看| 日本一区二区三区免费乱视频| 中文天堂在线一区| 一区二区三区欧美久久| 日韩1区2区日韩1区2区| 国产一区欧美二区| www.成人在线| 欧美视频在线一区二区三区| 91精品欧美一区二区三区综合在| 日韩一二三四区| 国产精品久久久久久久蜜臀 | 日韩影院免费视频| 极品瑜伽女神91| 成人av网站在线| 欧美三级电影精品| 日韩欧美国产系列| 中文字幕中文字幕一区二区| 亚洲国产综合91精品麻豆| 男人的j进女人的j一区| 精品在线观看免费| 国产98色在线|日韩| 99久久精品国产麻豆演员表| 欧美三级电影在线观看| 久久一区二区三区国产精品| 玉米视频成人免费看| 久久91精品国产91久久小草| 91视频91自| 精品久久一区二区三区| 亚洲激情自拍偷拍| 久久99国产精品久久99| 在线亚洲人成电影网站色www| 日韩无一区二区| 免费成人深夜小野草| 国产精品456露脸| 欧美日本韩国一区二区三区视频 | 欧美影院一区二区三区| 欧美成人video| 一级女性全黄久久生活片免费| 国内精品免费在线观看| 欧美日韩三级在线| 国产精品久久久久久久久快鸭| 日韩经典中文字幕一区| eeuss影院一区二区三区 | 日本一区二区免费在线| 日日摸夜夜添夜夜添精品视频| caoporen国产精品视频| 精品日韩一区二区| 亚洲一二三级电影| 成人看片黄a免费看在线| 日韩精品一区二区三区在线 | 中文字幕一区二区三区在线观看| 日韩电影在线免费| 在线亚洲高清视频| 亚洲三级电影网站| 国产成人av一区二区三区在线 | 亚洲国产精品精华液2区45| 免费人成黄页网站在线一区二区 | 在线国产亚洲欧美| 亚洲欧洲日韩女同| 日韩中文字幕一区二区三区| 国内一区二区视频| 欧美成人三级在线| 五月天国产精品| 欧美日韩国产综合一区二区三区| 亚洲欧美激情视频在线观看一区二区三区| 国精产品一区一区三区mba桃花| 91精品国产欧美一区二区18 | 青青青伊人色综合久久| 欧洲色大大久久| 亚洲综合精品自拍| 色av成人天堂桃色av| 另类综合日韩欧美亚洲| 不卡的av中国片| 成人欧美一区二区三区视频网页| 懂色av一区二区三区蜜臀 | 69堂成人精品免费视频| 亚洲成人一二三| 欧美性受xxxx黑人xyx性爽| 亚洲一二三四区不卡| 欧美亚洲动漫另类| 日韩专区中文字幕一区二区| 666欧美在线视频| 奇米888四色在线精品| 日韩丝袜美女视频| 国产麻豆成人精品| 国产精品视频你懂的| 91蝌蚪porny成人天涯| 亚洲精品午夜久久久| 欧美日韩综合色| 青青草97国产精品免费观看无弹窗版| 制服丝袜亚洲精品中文字幕| 美日韩一区二区三区| 久久九九99视频| va亚洲va日韩不卡在线观看| 亚洲男人都懂的| 91麻豆精品国产自产在线 | 亚洲午夜激情av| 欧美日本在线观看| 久久成人免费网| 国产精品污www在线观看| 91国偷自产一区二区开放时间 | 日韩欧美一区二区免费| 国产麻豆精品在线观看| 亚洲日本欧美天堂| 69堂国产成人免费视频| 国产69精品久久99不卡| 一区二区三区四区蜜桃| 欧美成人精品1314www| 99视频有精品| 日韩电影免费在线观看网站|