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

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

?? pxa2xx.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
/* * Intel XScale PXA255/270 processor support. * * Copyright (c) 2006 Openedhand Ltd. * Written by Andrzej Zaborowski <balrog@zabor.org> * * This code is licenced under the GPL. */#include "hw.h"#include "pxa.h"#include "sysemu.h"#include "pc.h"#include "i2c.h"#include "qemu-timer.h"#include "qemu-char.h"static struct {    target_phys_addr_t io_base;    int irqn;} pxa255_serial[] = {    { 0x40100000, PXA2XX_PIC_FFUART },    { 0x40200000, PXA2XX_PIC_BTUART },    { 0x40700000, PXA2XX_PIC_STUART },    { 0x41600000, PXA25X_PIC_HWUART },    { 0, 0 }}, pxa270_serial[] = {    { 0x40100000, PXA2XX_PIC_FFUART },    { 0x40200000, PXA2XX_PIC_BTUART },    { 0x40700000, PXA2XX_PIC_STUART },    { 0, 0 }};typedef struct PXASSPDef {    target_phys_addr_t io_base;    int irqn;} PXASSPDef;#if 0static PXASSPDef pxa250_ssp[] = {    { 0x41000000, PXA2XX_PIC_SSP },    { 0, 0 }};#endifstatic PXASSPDef pxa255_ssp[] = {    { 0x41000000, PXA2XX_PIC_SSP },    { 0x41400000, PXA25X_PIC_NSSP },    { 0, 0 }};#if 0static PXASSPDef pxa26x_ssp[] = {    { 0x41000000, PXA2XX_PIC_SSP },    { 0x41400000, PXA25X_PIC_NSSP },    { 0x41500000, PXA26X_PIC_ASSP },    { 0, 0 }};#endifstatic PXASSPDef pxa27x_ssp[] = {    { 0x41000000, PXA2XX_PIC_SSP },    { 0x41700000, PXA27X_PIC_SSP2 },    { 0x41900000, PXA2XX_PIC_SSP3 },    { 0, 0 }};#define PMCR	0x00	/* Power Manager Control register */#define PSSR	0x04	/* Power Manager Sleep Status register */#define PSPR	0x08	/* Power Manager Scratch-Pad register */#define PWER	0x0c	/* Power Manager Wake-Up Enable register */#define PRER	0x10	/* Power Manager Rising-Edge Detect Enable register */#define PFER	0x14	/* Power Manager Falling-Edge Detect Enable register */#define PEDR	0x18	/* Power Manager Edge-Detect Status register */#define PCFR	0x1c	/* Power Manager General Configuration register */#define PGSR0	0x20	/* Power Manager GPIO Sleep-State register 0 */#define PGSR1	0x24	/* Power Manager GPIO Sleep-State register 1 */#define PGSR2	0x28	/* Power Manager GPIO Sleep-State register 2 */#define PGSR3	0x2c	/* Power Manager GPIO Sleep-State register 3 */#define RCSR	0x30	/* Reset Controller Status register */#define PSLR	0x34	/* Power Manager Sleep Configuration register */#define PTSR	0x38	/* Power Manager Standby Configuration register */#define PVCR	0x40	/* Power Manager Voltage Change Control register */#define PUCR	0x4c	/* Power Manager USIM Card Control/Status register */#define PKWR	0x50	/* Power Manager Keyboard Wake-Up Enable register */#define PKSR	0x54	/* Power Manager Keyboard Level-Detect Status */#define PCMD0	0x80	/* Power Manager I2C Command register File 0 */#define PCMD31	0xfc	/* Power Manager I2C Command register File 31 */static uint32_t pxa2xx_pm_read(void *opaque, target_phys_addr_t addr){    struct pxa2xx_state_s *s = (struct pxa2xx_state_s *) opaque;    addr -= s->pm_base;    switch (addr) {    case PMCR ... PCMD31:        if (addr & 3)            goto fail;        return s->pm_regs[addr >> 2];    default:    fail:        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);        break;    }    return 0;}static void pxa2xx_pm_write(void *opaque, target_phys_addr_t addr,                uint32_t value){    struct pxa2xx_state_s *s = (struct pxa2xx_state_s *) opaque;    addr -= s->pm_base;    switch (addr) {    case PMCR:        s->pm_regs[addr >> 2] &= 0x15 & ~(value & 0x2a);        s->pm_regs[addr >> 2] |= value & 0x15;        break;    case PSSR:	/* Read-clean registers */    case RCSR:    case PKSR:        s->pm_regs[addr >> 2] &= ~value;        break;    default:	/* Read-write registers */        if (addr >= PMCR && addr <= PCMD31 && !(addr & 3)) {            s->pm_regs[addr >> 2] = value;            break;        }        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);        break;    }}static CPUReadMemoryFunc *pxa2xx_pm_readfn[] = {    pxa2xx_pm_read,    pxa2xx_pm_read,    pxa2xx_pm_read,};static CPUWriteMemoryFunc *pxa2xx_pm_writefn[] = {    pxa2xx_pm_write,    pxa2xx_pm_write,    pxa2xx_pm_write,};static void pxa2xx_pm_save(QEMUFile *f, void *opaque){    struct pxa2xx_state_s *s = (struct pxa2xx_state_s *) opaque;    int i;    for (i = 0; i < 0x40; i ++)        qemu_put_be32s(f, &s->pm_regs[i]);}static int pxa2xx_pm_load(QEMUFile *f, void *opaque, int version_id){    struct pxa2xx_state_s *s = (struct pxa2xx_state_s *) opaque;    int i;    for (i = 0; i < 0x40; i ++)        qemu_get_be32s(f, &s->pm_regs[i]);    return 0;}#define CCCR	0x00	/* Core Clock Configuration register */#define CKEN	0x04	/* Clock Enable register */#define OSCC	0x08	/* Oscillator Configuration register */#define CCSR	0x0c	/* Core Clock Status register */static uint32_t pxa2xx_cm_read(void *opaque, target_phys_addr_t addr){    struct pxa2xx_state_s *s = (struct pxa2xx_state_s *) opaque;    addr -= s->cm_base;    switch (addr) {    case CCCR:    case CKEN:    case OSCC:        return s->cm_regs[addr >> 2];    case CCSR:        return s->cm_regs[CCCR >> 2] | (3 << 28);    default:        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);        break;    }    return 0;}static void pxa2xx_cm_write(void *opaque, target_phys_addr_t addr,                uint32_t value){    struct pxa2xx_state_s *s = (struct pxa2xx_state_s *) opaque;    addr -= s->cm_base;    switch (addr) {    case CCCR:    case CKEN:        s->cm_regs[addr >> 2] = value;        break;    case OSCC:        s->cm_regs[addr >> 2] &= ~0x6c;        s->cm_regs[addr >> 2] |= value & 0x6e;        if ((value >> 1) & 1)			/* OON */            s->cm_regs[addr >> 2] |= 1 << 0;	/* Oscillator is now stable */        break;    default:        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);        break;    }}static CPUReadMemoryFunc *pxa2xx_cm_readfn[] = {    pxa2xx_cm_read,    pxa2xx_cm_read,    pxa2xx_cm_read,};static CPUWriteMemoryFunc *pxa2xx_cm_writefn[] = {    pxa2xx_cm_write,    pxa2xx_cm_write,    pxa2xx_cm_write,};static void pxa2xx_cm_save(QEMUFile *f, void *opaque){    struct pxa2xx_state_s *s = (struct pxa2xx_state_s *) opaque;    int i;    for (i = 0; i < 4; i ++)        qemu_put_be32s(f, &s->cm_regs[i]);    qemu_put_be32s(f, &s->clkcfg);    qemu_put_be32s(f, &s->pmnc);}static int pxa2xx_cm_load(QEMUFile *f, void *opaque, int version_id){    struct pxa2xx_state_s *s = (struct pxa2xx_state_s *) opaque;    int i;    for (i = 0; i < 4; i ++)        qemu_get_be32s(f, &s->cm_regs[i]);    qemu_get_be32s(f, &s->clkcfg);    qemu_get_be32s(f, &s->pmnc);    return 0;}static uint32_t pxa2xx_clkpwr_read(void *opaque, int op2, int reg, int crm){    struct pxa2xx_state_s *s = (struct pxa2xx_state_s *) opaque;    switch (reg) {    case 6:	/* Clock Configuration register */        return s->clkcfg;    case 7:	/* Power Mode register */        return 0;    default:        printf("%s: Bad register 0x%x\n", __FUNCTION__, reg);        break;    }    return 0;}static void pxa2xx_clkpwr_write(void *opaque, int op2, int reg, int crm,                uint32_t value){    struct pxa2xx_state_s *s = (struct pxa2xx_state_s *) opaque;    static const char *pwrmode[8] = {        "Normal", "Idle", "Deep-idle", "Standby",        "Sleep", "reserved (!)", "reserved (!)", "Deep-sleep",    };    switch (reg) {    case 6:	/* Clock Configuration register */        s->clkcfg = value & 0xf;        if (value & 2)            printf("%s: CPU frequency change attempt\n", __FUNCTION__);        break;    case 7:	/* Power Mode register */        if (value & 8)            printf("%s: CPU voltage change attempt\n", __FUNCTION__);        switch (value & 7) {        case 0:            /* Do nothing */            break;        case 1:            /* Idle */            if (!(s->cm_regs[CCCR >> 2] & (1 << 31))) {	/* CPDIS */                cpu_interrupt(s->env, CPU_INTERRUPT_HALT);                break;            }            /* Fall through.  */        case 2:            /* Deep-Idle */            cpu_interrupt(s->env, CPU_INTERRUPT_HALT);            s->pm_regs[RCSR >> 2] |= 0x8;	/* Set GPR */            goto message;        case 3:            s->env->uncached_cpsr =                    ARM_CPU_MODE_SVC | CPSR_A | CPSR_F | CPSR_I;            s->env->cp15.c1_sys = 0;            s->env->cp15.c1_coproc = 0;            s->env->cp15.c2_base0 = 0;            s->env->cp15.c3 = 0;            s->pm_regs[PSSR >> 2] |= 0x8;	/* Set STS */            s->pm_regs[RCSR >> 2] |= 0x8;	/* Set GPR */            /*             * The scratch-pad register is almost universally used             * for storing the return address on suspend.  For the             * lack of a resuming bootloader, perform a jump             * directly to that address.             */            memset(s->env->regs, 0, 4 * 15);            s->env->regs[15] = s->pm_regs[PSPR >> 2];#if 0            buffer = 0xe59ff000;	/* ldr     pc, [pc, #0] */            cpu_physical_memory_write(0, &buffer, 4);            buffer = s->pm_regs[PSPR >> 2];            cpu_physical_memory_write(8, &buffer, 4);#endif            /* Suspend */            cpu_interrupt(cpu_single_env, CPU_INTERRUPT_HALT);            goto message;        default:        message:            printf("%s: machine entered %s mode\n", __FUNCTION__,                            pwrmode[value & 7]);        }        break;    default:        printf("%s: Bad register 0x%x\n", __FUNCTION__, reg);        break;    }}/* Performace Monitoring Registers */#define CPPMNC		0	/* Performance Monitor Control register */#define CPCCNT		1	/* Clock Counter register */#define CPINTEN		4	/* Interrupt Enable register */#define CPFLAG		5	/* Overflow Flag register */#define CPEVTSEL	8	/* Event Selection register */#define CPPMN0		0	/* Performance Count register 0 */#define CPPMN1		1	/* Performance Count register 1 */#define CPPMN2		2	/* Performance Count register 2 */#define CPPMN3		3	/* Performance Count register 3 */static uint32_t pxa2xx_perf_read(void *opaque, int op2, int reg, int crm){    struct pxa2xx_state_s *s = (struct pxa2xx_state_s *) opaque;    switch (reg) {    case CPPMNC:        return s->pmnc;    case CPCCNT:        if (s->pmnc & 1)            return qemu_get_clock(vm_clock);        else            return 0;    case CPINTEN:    case CPFLAG:    case CPEVTSEL:        return 0;    default:        printf("%s: Bad register 0x%x\n", __FUNCTION__, reg);        break;    }    return 0;}static void pxa2xx_perf_write(void *opaque, int op2, int reg, int crm,                uint32_t value){    struct pxa2xx_state_s *s = (struct pxa2xx_state_s *) opaque;    switch (reg) {    case CPPMNC:        s->pmnc = value;        break;    case CPCCNT:    case CPINTEN:    case CPFLAG:    case CPEVTSEL:        break;    default:        printf("%s: Bad register 0x%x\n", __FUNCTION__, reg);        break;    }}static uint32_t pxa2xx_cp14_read(void *opaque, int op2, int reg, int crm){    switch (crm) {    case 0:        return pxa2xx_clkpwr_read(opaque, op2, reg, crm);    case 1:        return pxa2xx_perf_read(opaque, op2, reg, crm);    case 2:        switch (reg) {        case CPPMN0:        case CPPMN1:        case CPPMN2:        case CPPMN3:            return 0;        }        /* Fall through */    default:        printf("%s: Bad register 0x%x\n", __FUNCTION__, reg);        break;    }    return 0;}static void pxa2xx_cp14_write(void *opaque, int op2, int reg, int crm,                uint32_t value){    switch (crm) {    case 0:        pxa2xx_clkpwr_write(opaque, op2, reg, crm, value);        break;    case 1:        pxa2xx_perf_write(opaque, op2, reg, crm, value);        break;    case 2:        switch (reg) {        case CPPMN0:        case CPPMN1:        case CPPMN2:

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区精品秋霞影院| 久久久青草青青国产亚洲免观| 国产在线精品免费| 亚洲精品视频在线观看免费| 久久久久久亚洲综合| 欧美性大战久久久| 波多野结衣中文一区| 视频一区视频二区中文| 亚洲色大成网站www久久九九| 日韩丝袜美女视频| 欧美性xxxxx极品少妇| caoporm超碰国产精品| 精品亚洲成a人| 首页国产欧美日韩丝袜| 一区二区三区国产| 国产精品久久夜| 欧美大片在线观看一区二区| 欧美日韩国产首页在线观看| 色综合天天综合在线视频| 国产丶欧美丶日本不卡视频| 美女视频黄 久久| 日本欧美韩国一区三区| 亚洲资源在线观看| 一二三四社区欧美黄| 成人欧美一区二区三区黑人麻豆| 精品国产免费一区二区三区四区| 欧美美女直播网站| 91福利精品视频| 日本高清成人免费播放| 91丨porny丨国产| 99在线精品观看| 99riav久久精品riav| 成人免费视频一区二区| 国产成人综合自拍| 国产成人夜色高潮福利影视| 国产精品一二三四| 国产精品66部| 国产成人精品免费网站| 国产1区2区3区精品美女| 国产精品996| 亚洲国产高清不卡| 久久这里只有精品视频网| 欧美剧情电影在线观看完整版免费励志电影| jlzzjlzz亚洲日本少妇| 北条麻妃国产九九精品视频| 成人一区在线看| 99久久免费国产| 色激情天天射综合网| 欧美片网站yy| 欧美精品丝袜久久久中文字幕| 欧美军同video69gay| 日韩一区二区在线观看视频 | 国产精品毛片大码女人| 中文在线一区二区| 国产精品久久久久久久久搜平片| 最新国产精品久久精品| 亚洲自拍都市欧美小说| 秋霞av亚洲一区二区三| 加勒比av一区二区| 国产成人在线视频网站| 99久久精品国产网站| 欧美自拍偷拍午夜视频| 欧美日韩精品福利| 午夜免费久久看| 美女性感视频久久| 成人永久看片免费视频天堂| 99re热这里只有精品视频| 欧美三级日韩在线| 精品少妇一区二区三区免费观看| 国产欧美日韩亚州综合| 亚洲精品v日韩精品| 日本网站在线观看一区二区三区| 蜜臀av性久久久久蜜臀av麻豆| 国产一区二区福利视频| 91在线无精精品入口| 欧美男同性恋视频网站| 久久综合九色欧美综合狠狠| 亚洲欧洲综合另类在线| 免费成人你懂的| eeuss影院一区二区三区| 欧美日韩大陆在线| 国产欧美日本一区视频| 午夜欧美在线一二页| 粉嫩蜜臀av国产精品网站| 欧美日韩美少妇| 国产精品美女久久久久久久久| 亚洲www啪成人一区二区麻豆| 国产一区二区在线看| 欧美午夜一区二区三区| 亚洲精品在线网站| 亚洲成人免费看| 成人精品视频一区二区三区尤物| 制服丝袜在线91| 综合久久久久综合| 激情久久五月天| 欧美伊人精品成人久久综合97| 久久久久久久久伊人| 天天色天天爱天天射综合| 99在线热播精品免费| 久久久无码精品亚洲日韩按摩| 亚洲一区二区不卡免费| 成人动漫一区二区在线| 精品国产精品一区二区夜夜嗨| 亚洲一区在线视频观看| 白白色亚洲国产精品| 精品久久一区二区三区| 天堂久久一区二区三区| 色先锋aa成人| 国产精品视频麻豆| 国产成人免费视频一区| 日韩三级伦理片妻子的秘密按摩| 亚洲一区二区三区四区不卡| 成人激情校园春色| 国产欧美日韩在线| 国产精品一级片在线观看| 精品国产一区二区三区忘忧草| 天堂成人免费av电影一区| 色哟哟亚洲精品| 亚洲欧美中日韩| 成人动漫视频在线| 中文字幕巨乱亚洲| 粉嫩蜜臀av国产精品网站| 久久久国际精品| 国产老肥熟一区二区三区| 精品99久久久久久| 久久草av在线| 欧美精品一区二区三区四区| 久久精品国产一区二区| 91精品国产综合久久福利软件| 亚洲国产美国国产综合一区二区| 色婷婷综合五月| 亚洲精选视频在线| 91搞黄在线观看| 亚洲成人综合网站| 欧美久久婷婷综合色| 日本亚洲三级在线| 日本午夜一区二区| 欧美久久久影院| 麻豆成人久久精品二区三区小说| 欧美一区二区三区四区五区| 开心九九激情九九欧美日韩精美视频电影| 911精品国产一区二区在线| 同产精品九九九| 日韩精品一区二区三区视频播放 | 91国偷自产一区二区使用方法| 亚洲乱码国产乱码精品精可以看 | 从欧美一区二区三区| 亚洲国产精品t66y| 99精品久久99久久久久| 亚洲人精品午夜| 欧美三级日韩三级国产三级| 免费日本视频一区| wwww国产精品欧美| www.视频一区| 亚洲与欧洲av电影| 日韩一级欧美一级| 粉嫩一区二区三区在线看| 日韩美女久久久| 欧美区在线观看| 国产激情视频一区二区三区欧美| 国产精品网友自拍| 欧美中文字幕久久| 毛片av中文字幕一区二区| 久久精品视频在线看| 99这里只有精品| 日本欧美在线看| 国产精品午夜在线| 欧美日韩综合在线| 国产一区二区三区蝌蚪| 中文字幕在线观看一区| 欧美日韩视频不卡| 国产美女视频91| 一区二区三区日韩精品| 日韩欧美123| 色婷婷av一区| 精品一区二区三区在线视频| 国产精品免费观看视频| 欧美在线一区二区三区| 经典三级视频一区| 一区二区三区国产豹纹内裤在线| 日韩免费一区二区| 91麻豆免费在线观看| 麻豆国产一区二区| 香蕉久久一区二区不卡无毒影院 | 欧美裸体一区二区三区| 国产精品99久久久| 五月婷婷激情综合网| 欧美经典一区二区| 欧美日韩国产一区二区三区地区| 懂色一区二区三区免费观看| 香蕉久久一区二区不卡无毒影院| 日本一区二区三区免费乱视频| 欧美日韩黄色影视| 91在线国产观看| 国产一区二区三区精品视频| 视频一区在线播放| 一区二区三区在线不卡| 欧美国产日本韩| 精品久久久影院| 欧美群妇大交群中文字幕|