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

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

?? pl190.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
字號:
/* * Arm PrimeCell PL190 Vector Interrupt Controller * * Copyright (c) 2006 CodeSourcery. * Written by Paul Brook * * This code is licenced under the GPL. */#include "hw.h"#include "primecell.h"#include "arm-misc.h"/* The number of virtual priority levels.  16 user vectors plus the   unvectored IRQ.  Chained interrupts would require an additional level   if implemented.  */#define PL190_NUM_PRIO 17typedef struct {    uint32_t base;    DisplayState *ds;    uint32_t level;    uint32_t soft_level;    uint32_t irq_enable;    uint32_t fiq_select;    uint32_t default_addr;    uint8_t vect_control[16];    uint32_t vect_addr[PL190_NUM_PRIO];    /* Mask containing interrupts with higher priority than this one.  */    uint32_t prio_mask[PL190_NUM_PRIO + 1];    int protected;    /* Current priority level.  */    int priority;    int prev_prio[PL190_NUM_PRIO];    qemu_irq irq;    qemu_irq fiq;} pl190_state;static const unsigned char pl190_id[] ={ 0x90, 0x11, 0x04, 0x00, 0x0D, 0xf0, 0x05, 0xb1 };static inline uint32_t pl190_irq_level(pl190_state *s){    return (s->level | s->soft_level) & s->irq_enable & ~s->fiq_select;}/* Update interrupts.  */static void pl190_update(pl190_state *s){    uint32_t level = pl190_irq_level(s);    int set;    set = (level & s->prio_mask[s->priority]) != 0;    qemu_set_irq(s->irq, set);    set = ((s->level | s->soft_level) & s->fiq_select) != 0;    qemu_set_irq(s->fiq, set);}static void pl190_set_irq(void *opaque, int irq, int level){    pl190_state *s = (pl190_state *)opaque;    if (level)        s->level |= 1u << irq;    else        s->level &= ~(1u << irq);    pl190_update(s);}static void pl190_update_vectors(pl190_state *s){    uint32_t mask;    int i;    int n;    mask = 0;    for (i = 0; i < 16; i++)      {        s->prio_mask[i] = mask;        if (s->vect_control[i] & 0x20)          {            n = s->vect_control[i] & 0x1f;            mask |= 1 << n;          }      }    s->prio_mask[16] = mask;    pl190_update(s);}static uint32_t pl190_read(void *opaque, target_phys_addr_t offset){    pl190_state *s = (pl190_state *)opaque;    int i;    offset -= s->base;    if (offset >= 0xfe0 && offset < 0x1000) {        return pl190_id[(offset - 0xfe0) >> 2];    }    if (offset >= 0x100 && offset < 0x140) {        return s->vect_addr[(offset - 0x100) >> 2];    }    if (offset >= 0x200 && offset < 0x240) {        return s->vect_control[(offset - 0x200) >> 2];    }    switch (offset >> 2) {    case 0: /* IRQSTATUS */        return pl190_irq_level(s);    case 1: /* FIQSATUS */        return (s->level | s->soft_level) & s->fiq_select;    case 2: /* RAWINTR */        return s->level | s->soft_level;    case 3: /* INTSELECT */        return s->fiq_select;    case 4: /* INTENABLE */        return s->irq_enable;    case 6: /* SOFTINT */        return s->soft_level;    case 8: /* PROTECTION */        return s->protected;    case 12: /* VECTADDR */        /* Read vector address at the start of an ISR.  Increases the           current priority level to that of the current interrupt.  */        for (i = 0; i < s->priority; i++)          {            if ((s->level | s->soft_level) & s->prio_mask[i])              break;          }        /* Reading this value with no pending interrupts is undefined.           We return the default address.  */        if (i == PL190_NUM_PRIO)          return s->vect_addr[16];        if (i < s->priority)          {            s->prev_prio[i] = s->priority;            s->priority = i;            pl190_update(s);          }        return s->vect_addr[s->priority];    case 13: /* DEFVECTADDR */        return s->vect_addr[16];    default:        cpu_abort (cpu_single_env, "pl190_read: Bad offset %x\n", (int)offset);        return 0;    }}static void pl190_write(void *opaque, target_phys_addr_t offset, uint32_t val){    pl190_state *s = (pl190_state *)opaque;    offset -= s->base;    if (offset >= 0x100 && offset < 0x140) {        s->vect_addr[(offset - 0x100) >> 2] = val;        pl190_update_vectors(s);        return;    }    if (offset >= 0x200 && offset < 0x240) {        s->vect_control[(offset - 0x200) >> 2] = val;        pl190_update_vectors(s);        return;    }    switch (offset >> 2) {    case 0: /* SELECT */        /* This is a readonly register, but linux tries to write to it           anyway.  Ignore the write.  */        break;    case 3: /* INTSELECT */        s->fiq_select = val;        break;    case 4: /* INTENABLE */        s->irq_enable |= val;        break;    case 5: /* INTENCLEAR */        s->irq_enable &= ~val;        break;    case 6: /* SOFTINT */        s->soft_level |= val;        break;    case 7: /* SOFTINTCLEAR */        s->soft_level &= ~val;        break;    case 8: /* PROTECTION */        /* TODO: Protection (supervisor only access) is not implemented.  */        s->protected = val & 1;        break;    case 12: /* VECTADDR */        /* Restore the previous priority level.  The value written is           ignored.  */        if (s->priority < PL190_NUM_PRIO)            s->priority = s->prev_prio[s->priority];        break;    case 13: /* DEFVECTADDR */        s->default_addr = val;        break;    case 0xc0: /* ITCR */        if (val)            cpu_abort(cpu_single_env, "pl190: Test mode not implemented\n");        break;    default:        cpu_abort(cpu_single_env, "pl190_write: Bad offset %x\n", (int)offset);        return;    }    pl190_update(s);}static CPUReadMemoryFunc *pl190_readfn[] = {   pl190_read,   pl190_read,   pl190_read};static CPUWriteMemoryFunc *pl190_writefn[] = {   pl190_write,   pl190_write,   pl190_write};static void pl190_reset(pl190_state *s){  int i;  for (i = 0; i < 16; i++)    {      s->vect_addr[i] = 0;      s->vect_control[i] = 0;    }  s->vect_addr[16] = 0;  s->prio_mask[17] = 0xffffffff;  s->priority = PL190_NUM_PRIO;  pl190_update_vectors(s);}qemu_irq *pl190_init(uint32_t base, qemu_irq irq, qemu_irq fiq){    pl190_state *s;    qemu_irq *qi;    int iomemtype;    s = (pl190_state *)qemu_mallocz(sizeof(pl190_state));    iomemtype = cpu_register_io_memory(0, pl190_readfn,                                       pl190_writefn, s);    cpu_register_physical_memory(base, 0x00001000, iomemtype);    qi = qemu_allocate_irqs(pl190_set_irq, s, 32);    s->base = base;    s->irq = irq;    s->fiq = fiq;    pl190_reset(s);    /* ??? Save/restore.  */    return qi;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩高清不卡一区二区三区| 欧美视频完全免费看| a4yy欧美一区二区三区| 色网站国产精品| 51精品视频一区二区三区| 久久九九久久九九| 日韩美女精品在线| 日韩成人免费在线| 成人亚洲精品久久久久软件| 91视频一区二区| 欧美一区二区精品在线| 欧美国产精品一区二区三区| 亚洲在线观看免费视频| 蜜臀91精品一区二区三区| 成人av资源在线观看| 欧美区视频在线观看| 久久亚洲捆绑美女| 一个色综合av| 国产毛片一区二区| 91高清在线观看| 日韩欧美资源站| 亚洲欧美一区二区三区久本道91| 日本美女一区二区| 91一区在线观看| 欧美大片在线观看一区二区| 亚洲色图都市小说| 激情综合色播激情啊| 色哟哟国产精品| 2017欧美狠狠色| 亚洲一区二区偷拍精品| 国产乱码一区二区三区| 欧美日韩国产电影| 亚洲图片激情小说| 国内外成人在线| 欧美日韩久久不卡| 亚洲欧美一区二区三区久本道91| 国模冰冰炮一区二区| 欧美日韩中字一区| 亚洲天堂精品视频| 高潮精品一区videoshd| 日韩精品一区在线| 香蕉久久一区二区不卡无毒影院| av亚洲精华国产精华精华| 精品黑人一区二区三区久久| 亚洲综合色婷婷| 成人aaaa免费全部观看| 欧美精品一区二区三区蜜桃| 丝袜美腿成人在线| 91国产视频在线观看| 国产精品你懂的在线| 国产一区二区三区免费在线观看 | 99re亚洲国产精品| 久久女同互慰一区二区三区| 日韩电影免费在线观看网站| 欧美主播一区二区三区| 国产精品另类一区| 国产一区视频网站| 日韩久久免费av| 日韩av不卡一区二区| 欧美视频精品在线观看| 亚洲黄色性网站| 色欧美88888久久久久久影院| 国产精品视频观看| 国产成人高清在线| 久久久久久一二三区| 韩国视频一区二区| 欧美白人最猛性xxxxx69交| 奇米综合一区二区三区精品视频| 欧美日韩中文一区| 亚洲高清中文字幕| 欧美性受极品xxxx喷水| 一区二区三区免费观看| 在线影院国内精品| 一区二区三区波多野结衣在线观看| 99re亚洲国产精品| 一区二区三区精品视频| 在线免费精品视频| 亚洲精品成人悠悠色影视| 91在线观看污| 一区二区欧美在线观看| 欧美亚洲一区二区在线| 亚洲一区二区欧美| 欧美老肥妇做.爰bbww| 日韩国产精品大片| 欧美成人猛片aaaaaaa| 国产精品1区2区| 国产精品午夜久久| 色综合中文字幕国产| 亚洲色图视频网| 欧美调教femdomvk| 蜜臀精品一区二区三区在线观看| 日韩一区二区精品| 国产精品夜夜爽| 国产精品国产三级国产aⅴ无密码| 92国产精品观看| 一区二区三区日本| 日韩一区二区三区电影在线观看 | 欧美成人猛片aaaaaaa| 国产大陆a不卡| ...av二区三区久久精品| 色婷婷亚洲婷婷| 日韩精品福利网| 久久九九全国免费| 在线亚洲人成电影网站色www| 午夜精品福利一区二区三区蜜桃| 欧美一级理论性理论a| 国产精品中文有码| 亚洲久本草在线中文字幕| 欧美精选午夜久久久乱码6080| 蜜桃精品视频在线观看| 国产女人水真多18毛片18精品视频 | 91免费版在线看| 五月激情六月综合| 欧美国产精品一区| 欧美日本国产视频| 成人丝袜18视频在线观看| 亚洲高清中文字幕| 国产亚洲欧美激情| 欧美亚一区二区| 国产高清不卡二三区| 亚洲成人精品一区| 久久久久高清精品| 欧美日韩中文字幕一区二区| 国产精品自在欧美一区| 亚洲一区二区三区四区中文字幕| 精品精品国产高清a毛片牛牛| 91麻豆精品在线观看| 久久99久久精品欧美| 亚洲视频一区在线| 欧美xxxxx裸体时装秀| 色爱区综合激月婷婷| 国产一区二区三区免费观看| 亚洲精品免费在线观看| 26uuu精品一区二区| 在线观看视频一区二区| 国产经典欧美精品| 日本伊人色综合网| 亚洲日本丝袜连裤袜办公室| 精品国产乱码久久| 欧美日韩亚洲综合一区二区三区| 成人性生交大合| 精品一区二区三区免费毛片爱| 亚洲一区二区三区四区五区黄| 久久精品欧美一区二区三区不卡| 欧美日韩dvd在线观看| av日韩在线网站| 极品少妇一区二区三区精品视频| 亚洲黄一区二区三区| 中文字幕欧美国产| 欧美xxxx在线观看| 3d动漫精品啪啪1区2区免费 | 亚洲一区二区欧美| 国产精品不卡一区二区三区| 精品va天堂亚洲国产| 欧美二区乱c少妇| 91高清视频在线| 91色porny蝌蚪| 国产成人午夜99999| 久久国产剧场电影| 日韩精彩视频在线观看| 一区二区免费看| 亚洲欧洲精品一区二区精品久久久| 精品av综合导航| 欧美一级片免费看| 欧美精品乱码久久久久久| 91蝌蚪porny| 99在线精品一区二区三区| 国产剧情在线观看一区二区| 久久精品国产999大香线蕉| 三级欧美在线一区| 性感美女极品91精品| 亚洲一区二区三区中文字幕在线| 玉足女爽爽91| 亚洲精品国产高清久久伦理二区| 亚洲三级小视频| 自拍偷拍欧美激情| 亚洲人午夜精品天堂一二香蕉| 国产精品毛片a∨一区二区三区| 国产午夜精品一区二区三区嫩草 | 国产99久久久久| 国产盗摄一区二区| 成人精品电影在线观看| 成人国产一区二区三区精品| 处破女av一区二区| 成人av在线看| 99久久er热在这里只有精品15| 成人午夜电影网站| a级高清视频欧美日韩| a级精品国产片在线观看| 99国产精品一区| 日本大香伊一区二区三区| 日本高清不卡在线观看| 欧美午夜宅男影院| 欧美日韩一区三区四区| 欧美日本不卡视频| 日韩写真欧美这视频| 久久男人中文字幕资源站| 久久久久久久久99精品| 中文字幕一区二区三| 一区二区三区在线视频观看|