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

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

?? stellaris.c

?? xen虛擬機源代碼安裝包
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * Luminary Micro Stellaris peripherals * * Copyright (c) 2006 CodeSourcery. * Written by Paul Brook * * This code is licenced under the GPL. */#include "hw.h"#include "arm-misc.h"#include "primecell.h"#include "devices.h"#include "qemu-timer.h"#include "i2c.h"#include "net.h"#include "sd.h"#include "sysemu.h"#include "boards.h"#define GPIO_A 0#define GPIO_B 1#define GPIO_C 2#define GPIO_D 3#define GPIO_E 4#define GPIO_F 5#define GPIO_G 6#define BP_OLED_I2C  0x01#define BP_OLED_SSI  0x02#define BP_GAMEPAD   0x04typedef const struct {    const char *name;    uint32_t did0;    uint32_t did1;    uint32_t dc0;    uint32_t dc1;    uint32_t dc2;    uint32_t dc3;    uint32_t dc4;    uint32_t peripherals;} stellaris_board_info;/* General purpose timer module.  */typedef struct gptm_state {    uint32_t config;    uint32_t mode[2];    uint32_t control;    uint32_t state;    uint32_t mask;    uint32_t load[2];    uint32_t match[2];    uint32_t prescale[2];    uint32_t match_prescale[2];    uint32_t rtc;    int64_t tick[2];    struct gptm_state *opaque[2];    uint32_t base;    QEMUTimer *timer[2];    /* The timers have an alternate output used to trigger the ADC.  */    qemu_irq trigger;    qemu_irq irq;} gptm_state;static void gptm_update_irq(gptm_state *s){    int level;    level = (s->state & s->mask) != 0;    qemu_set_irq(s->irq, level);}static void gptm_stop(gptm_state *s, int n){    qemu_del_timer(s->timer[n]);}static void gptm_reload(gptm_state *s, int n, int reset){    int64_t tick;    if (reset)        tick = qemu_get_clock(vm_clock);    else        tick = s->tick[n];    if (s->config == 0) {        /* 32-bit CountDown.  */        uint32_t count;        count = s->load[0] | (s->load[1] << 16);        tick += (int64_t)count * system_clock_scale;    } else if (s->config == 1) {        /* 32-bit RTC.  1Hz tick.  */        tick += ticks_per_sec;    } else if (s->mode[n] == 0xa) {        /* PWM mode.  Not implemented.  */    } else {        cpu_abort(cpu_single_env, "TODO: 16-bit timer mode 0x%x\n",                  s->mode[n]);    }    s->tick[n] = tick;    qemu_mod_timer(s->timer[n], tick);}static void gptm_tick(void *opaque){    gptm_state **p = (gptm_state **)opaque;    gptm_state *s;    int n;    s = *p;    n = p - s->opaque;    if (s->config == 0) {        s->state |= 1;        if ((s->control & 0x20)) {            /* Output trigger.  */	    qemu_irq_raise(s->trigger);	    qemu_irq_lower(s->trigger);        }        if (s->mode[0] & 1) {            /* One-shot.  */            s->control &= ~1;        } else {            /* Periodic.  */            gptm_reload(s, 0, 0);        }    } else if (s->config == 1) {        /* RTC.  */        uint32_t match;        s->rtc++;        match = s->match[0] | (s->match[1] << 16);        if (s->rtc > match)            s->rtc = 0;        if (s->rtc == 0) {            s->state |= 8;        }        gptm_reload(s, 0, 0);    } else if (s->mode[n] == 0xa) {        /* PWM mode.  Not implemented.  */    } else {        cpu_abort(cpu_single_env, "TODO: 16-bit timer mode 0x%x\n",                  s->mode[n]);    }    gptm_update_irq(s);}static uint32_t gptm_read(void *opaque, target_phys_addr_t offset){    gptm_state *s = (gptm_state *)opaque;    offset -= s->base;    switch (offset) {    case 0x00: /* CFG */        return s->config;    case 0x04: /* TAMR */        return s->mode[0];    case 0x08: /* TBMR */        return s->mode[1];    case 0x0c: /* CTL */        return s->control;    case 0x18: /* IMR */        return s->mask;    case 0x1c: /* RIS */        return s->state;    case 0x20: /* MIS */        return s->state & s->mask;    case 0x24: /* CR */        return 0;    case 0x28: /* TAILR */        return s->load[0] | ((s->config < 4) ? (s->load[1] << 16) : 0);    case 0x2c: /* TBILR */        return s->load[1];    case 0x30: /* TAMARCHR */        return s->match[0] | ((s->config < 4) ? (s->match[1] << 16) : 0);    case 0x34: /* TBMATCHR */        return s->match[1];    case 0x38: /* TAPR */        return s->prescale[0];    case 0x3c: /* TBPR */        return s->prescale[1];    case 0x40: /* TAPMR */        return s->match_prescale[0];    case 0x44: /* TBPMR */        return s->match_prescale[1];    case 0x48: /* TAR */        if (s->control == 1)            return s->rtc;    case 0x4c: /* TBR */        cpu_abort(cpu_single_env, "TODO: Timer value read\n");    default:        cpu_abort(cpu_single_env, "gptm_read: Bad offset 0x%x\n", (int)offset);        return 0;    }}static void gptm_write(void *opaque, target_phys_addr_t offset, uint32_t value){    gptm_state *s = (gptm_state *)opaque;    uint32_t oldval;    offset -= s->base;    /* The timers should be disabled before changing the configuration.       We take advantage of this and defer everything until the timer       is enabled.  */    switch (offset) {    case 0x00: /* CFG */        s->config = value;        break;    case 0x04: /* TAMR */        s->mode[0] = value;        break;    case 0x08: /* TBMR */        s->mode[1] = value;        break;    case 0x0c: /* CTL */        oldval = s->control;        s->control = value;        /* TODO: Implement pause.  */        if ((oldval ^ value) & 1) {            if (value & 1) {                gptm_reload(s, 0, 1);            } else {                gptm_stop(s, 0);            }        }        if (((oldval ^ value) & 0x100) && s->config >= 4) {            if (value & 0x100) {                gptm_reload(s, 1, 1);            } else {                gptm_stop(s, 1);            }        }        break;    case 0x18: /* IMR */        s->mask = value & 0x77;        gptm_update_irq(s);        break;    case 0x24: /* CR */        s->state &= ~value;        break;    case 0x28: /* TAILR */        s->load[0] = value & 0xffff;        if (s->config < 4) {            s->load[1] = value >> 16;        }        break;    case 0x2c: /* TBILR */        s->load[1] = value & 0xffff;        break;    case 0x30: /* TAMARCHR */        s->match[0] = value & 0xffff;        if (s->config < 4) {            s->match[1] = value >> 16;        }        break;    case 0x34: /* TBMATCHR */        s->match[1] = value >> 16;        break;    case 0x38: /* TAPR */        s->prescale[0] = value;        break;    case 0x3c: /* TBPR */        s->prescale[1] = value;        break;    case 0x40: /* TAPMR */        s->match_prescale[0] = value;        break;    case 0x44: /* TBPMR */        s->match_prescale[0] = value;        break;    default:        cpu_abort(cpu_single_env, "gptm_write: Bad offset 0x%x\n", (int)offset);    }    gptm_update_irq(s);}static CPUReadMemoryFunc *gptm_readfn[] = {   gptm_read,   gptm_read,   gptm_read};static CPUWriteMemoryFunc *gptm_writefn[] = {   gptm_write,   gptm_write,   gptm_write};static void stellaris_gptm_init(uint32_t base, qemu_irq irq, qemu_irq trigger){    int iomemtype;    gptm_state *s;    s = (gptm_state *)qemu_mallocz(sizeof(gptm_state));    s->base = base;    s->irq = irq;    s->trigger = trigger;    s->opaque[0] = s->opaque[1] = s;    iomemtype = cpu_register_io_memory(0, gptm_readfn,                                       gptm_writefn, s);    cpu_register_physical_memory(base, 0x00001000, iomemtype);    s->timer[0] = qemu_new_timer(vm_clock, gptm_tick, &s->opaque[0]);    s->timer[1] = qemu_new_timer(vm_clock, gptm_tick, &s->opaque[1]);    /* ??? Save/restore.  */}/* System controller.  */typedef struct {    uint32_t base;    uint32_t pborctl;    uint32_t ldopctl;    uint32_t int_status;    uint32_t int_mask;    uint32_t resc;    uint32_t rcc;    uint32_t rcgc[3];    uint32_t scgc[3];    uint32_t dcgc[3];    uint32_t clkvclr;    uint32_t ldoarst;    uint32_t user0;    uint32_t user1;    qemu_irq irq;    stellaris_board_info *board;} ssys_state;static void ssys_update(ssys_state *s){  qemu_set_irq(s->irq, (s->int_status & s->int_mask) != 0);}static uint32_t pllcfg_sandstorm[16] = {    0x31c0, /* 1 Mhz */    0x1ae0, /* 1.8432 Mhz */    0x18c0, /* 2 Mhz */    0xd573, /* 2.4576 Mhz */    0x37a6, /* 3.57954 Mhz */    0x1ae2, /* 3.6864 Mhz */    0x0c40, /* 4 Mhz */    0x98bc, /* 4.906 Mhz */    0x935b, /* 4.9152 Mhz */    0x09c0, /* 5 Mhz */    0x4dee, /* 5.12 Mhz */    0x0c41, /* 6 Mhz */    0x75db, /* 6.144 Mhz */    0x1ae6, /* 7.3728 Mhz */    0x0600, /* 8 Mhz */    0x585b /* 8.192 Mhz */};static uint32_t pllcfg_fury[16] = {    0x3200, /* 1 Mhz */    0x1b20, /* 1.8432 Mhz */    0x1900, /* 2 Mhz */    0xf42b, /* 2.4576 Mhz */    0x37e3, /* 3.57954 Mhz */    0x1b21, /* 3.6864 Mhz */    0x0c80, /* 4 Mhz */    0x98ee, /* 4.906 Mhz */    0xd5b4, /* 4.9152 Mhz */    0x0a00, /* 5 Mhz */    0x4e27, /* 5.12 Mhz */    0x1902, /* 6 Mhz */    0xec1c, /* 6.144 Mhz */    0x1b23, /* 7.3728 Mhz */    0x0640, /* 8 Mhz */    0xb11c /* 8.192 Mhz */};static uint32_t ssys_read(void *opaque, target_phys_addr_t offset){    ssys_state *s = (ssys_state *)opaque;    offset -= s->base;    switch (offset) {    case 0x000: /* DID0 */        return s->board->did0;    case 0x004: /* DID1 */        return s->board->did1;    case 0x008: /* DC0 */        return s->board->dc0;    case 0x010: /* DC1 */        return s->board->dc1;    case 0x014: /* DC2 */        return s->board->dc2;    case 0x018: /* DC3 */        return s->board->dc3;    case 0x01c: /* DC4 */        return s->board->dc4;    case 0x030: /* PBORCTL */        return s->pborctl;    case 0x034: /* LDOPCTL */        return s->ldopctl;    case 0x040: /* SRCR0 */        return 0;    case 0x044: /* SRCR1 */        return 0;    case 0x048: /* SRCR2 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色偷偷成人一区二区三区91| 91视频在线观看| 亚洲国产视频在线| 亚洲天堂av一区| 亚洲三级在线观看| 成人欧美一区二区三区视频网页 | 亚洲国产另类精品专区| 亚洲欧美日韩国产成人精品影院| 国产精品久久久久影院| 亚洲国产精品成人综合| 日本一区二区三区在线不卡| 久久久青草青青国产亚洲免观| 精品国产一区二区三区久久久蜜月| 日韩一区二区精品在线观看| 日韩三级中文字幕| 欧美xxxx老人做受| 久久毛片高清国产| 亚洲国产精品国自产拍av| 国产精品欧美极品| 亚洲精品一二三| 日韩精品一二区| 国产伦理精品不卡| 不卡一区中文字幕| 色综合婷婷久久| 欧美日韩aaaaa| 欧美大片国产精品| 国产日韩亚洲欧美综合| 国产精品久久久久桃色tv| 一区二区三区精品视频| 免费不卡在线观看| 国产精品一二三四五| 97se亚洲国产综合自在线不卡| 欧美日韩在线观看一区二区 | 色综合久久久久综合| 在线观看免费视频综合| 日韩一级欧美一级| 国产午夜精品一区二区三区四区| 亚洲日本丝袜连裤袜办公室| 美女视频黄 久久| 91尤物视频在线观看| 欧美一区二区免费视频| 国产精品美女久久福利网站| 日本免费新一区视频| 国产电影精品久久禁18| 欧洲精品一区二区| 久久免费精品国产久精品久久久久| 亚洲欧美福利一区二区| 黄页网站大全一区二区| 在线免费观看日本欧美| 国产区在线观看成人精品| 亚洲高清三级视频| av日韩在线网站| 精品99999| 亚洲成av人片在线观看无码| 成人永久看片免费视频天堂| 日韩丝袜美女视频| 一个色在线综合| 懂色av一区二区三区蜜臀 | 精品国产乱码久久久久久影片| 中文字幕中文字幕在线一区| 黑人精品欧美一区二区蜜桃| 欧美日韩一区在线| 亚洲日本在线视频观看| 岛国av在线一区| 久久精品在线观看| 久久激情综合网| 欧美一区二区日韩一区二区| 亚洲福利国产精品| 色狠狠桃花综合| 日韩美女久久久| av资源网一区| 国产精品乱子久久久久| 国产成人精品一区二| 欧美v国产在线一区二区三区| 首页综合国产亚洲丝袜| 欧美性xxxxxxxx| 一区二区免费看| 在线欧美日韩国产| 亚洲国产综合91精品麻豆| 91片在线免费观看| 一区二区在线观看免费视频播放| av不卡一区二区三区| 中文字幕一区二区日韩精品绯色| 成人app软件下载大全免费| 国产欧美日韩在线| 不卡的av在线| 一区二区三区在线观看欧美 | 欧美一区二区免费观在线| 性感美女极品91精品| 欧美精品日韩一本| 日本特黄久久久高潮| 欧美一区二区三区视频免费| 久久av资源站| 久久久久国产精品麻豆| 99久久综合国产精品| 亚洲黄色性网站| 欧美日韩大陆一区二区| 久久成人羞羞网站| 26uuu亚洲综合色欧美| 国产91精品久久久久久久网曝门| **欧美大码日韩| 欧美日韩国产一级片| 日产欧产美韩系列久久99| 亚洲精品一区二区三区福利| 波多野结衣亚洲一区| 一区二区高清免费观看影视大全| 欧美老肥妇做.爰bbww| 国产在线不卡一区| 亚洲视频在线一区| 51精品秘密在线观看| 国产传媒一区在线| 亚洲欧美乱综合| 欧美va亚洲va在线观看蝴蝶网| av色综合久久天堂av综合| 亚洲成年人网站在线观看| 久久亚洲精品国产精品紫薇| 色哟哟亚洲精品| 国产精品一区二区黑丝| 一区二区三区丝袜| 久久亚区不卡日本| 欧美最新大片在线看| 激情综合网天天干| 一区二区高清免费观看影视大全| 久久夜色精品国产噜噜av| 欧美性视频一区二区三区| 国产九色sp调教91| 天堂久久一区二区三区| 《视频一区视频二区| 欧美精品一区二区高清在线观看 | 色一区在线观看| 久久99精品国产麻豆不卡| 亚洲美女视频在线| 久久亚洲精华国产精华液| 欧美久久久一区| 99精品热视频| 成人在线综合网| 国内偷窥港台综合视频在线播放| 性感美女极品91精品| 亚洲欧洲另类国产综合| 久久久国产午夜精品| 欧美一级高清片在线观看| 一本大道av一区二区在线播放| 丰满少妇久久久久久久| 精品在线观看视频| 日韩av成人高清| 日本一区中文字幕| 婷婷成人激情在线网| 一区二区三区蜜桃| 一区二区在线观看不卡| 国产精品三级视频| 久久九九99视频| 久久久久久久久久久久久久久99 | 91精品久久久久久久91蜜桃| 欧美亚洲综合网| 欧洲日韩一区二区三区| 色综合久久久久久久| 91麻豆高清视频| 91蜜桃免费观看视频| 成人性生交大片免费看中文网站| 国产久卡久卡久卡久卡视频精品| 国产一区视频网站| 国产一区二区在线观看免费| 国产风韵犹存在线视精品| 国产suv精品一区二区三区| 国产高清视频一区| 成人性生交大片免费| 丁香婷婷综合激情五月色| 成人久久久精品乱码一区二区三区 | 91久久一区二区| 精品视频免费看| 欧美videos大乳护士334| 国产三级一区二区三区| 国产精品免费av| 亚洲精品少妇30p| 婷婷中文字幕一区三区| 日韩高清在线电影| 国产一区二区免费看| 成人av在线看| 精品视频全国免费看| 日韩三级.com| 国产精品国产三级国产普通话蜜臀| 亚洲啪啪综合av一区二区三区| 亚洲成人午夜电影| 久久精品国产**网站演员| 国产成人免费视| 欧洲中文字幕精品| 日韩精品一区二区三区视频 | 亚洲欧美日韩久久| 亚洲第一狼人社区| 精品一区二区日韩| 色综合久久综合网欧美综合网| 91精品欧美久久久久久动漫| 久久这里只有精品6| 一区二区三区四区不卡在线 | 久久久久久久久一| 一区二区三区欧美日| 五月综合激情日本mⅴ| 国产盗摄女厕一区二区三区| 欧美日韩综合不卡| 国产亚洲欧美在线|