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

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

?? mp.c

?? 類unix x86平臺的簡單操作系統
?? C
字號:
#include "types.h"#include "mp.h"#include "defs.h"#include "param.h"#include "x86.h"#include "traps.h"#include "mmu.h"#include "proc.h"static char *buses[] = {  "CBUSI ",  "CBUSII",  "EISA  ",  "FUTURE",  "INTERN",  "ISA   ",  "MBI   ",  "MBII  ",  "MCA   ",  "MPI   ",  "MPSA  ",  "NUBUS ",  "PCI   ",  "PCMCIA",  "TC    ",  "VL    ",  "VME   ",  "XPRESS",  0,};struct cpu cpus[NCPU];int ismp;int ncpu;uchar ioapic_id;static struct cpu *bcpu;static struct mp *mp;  // The MP floating point structurestatic struct mp*mp_scan(uchar *addr, int len){  uchar *e, *p, sum;  int i;  e = addr+len;  for(p = addr; p < e; p += sizeof(struct mp)){    if(memcmp(p, "_MP_", 4))      continue;    sum = 0;    for(i = 0; i < sizeof(struct mp); i++)      sum += p[i];    if(sum == 0)      return (struct mp*)p;  }  return 0;}// Search for the MP Floating Pointer Structure, which according to the// spec is in one of the following three locations:// 1) in the first KB of the EBDA;// 2) in the last KB of system base memory;// 3) in the BIOS ROM between 0xE0000 and 0xFFFFF.static struct mp*mp_search(void){  uchar *bda;  uint p;  struct mp *mp;  bda = (uchar*) 0x400;  if((p = (bda[0x0F]<<8)|bda[0x0E])){    if((mp = mp_scan((uchar*) p, 1024)))      return mp;  }  else{    p = ((bda[0x14]<<8)|bda[0x13])*1024;    if((mp = mp_scan((uchar*)p-1024, 1024)))      return mp;  }  return mp_scan((uchar*)0xF0000, 0x10000);}// Search for an MP configuration table. For now,// don't accept the default configurations (physaddr == 0).// Check for correct signature, calculate the checksum and,// if correct, check the version.// To do: check extended table checksum.static intmp_detect(void){  struct mpctb *pcmp;  uchar *p, sum;  uint length;  if((mp = mp_search()) == 0 || mp->physaddr == 0)    return 1;  pcmp = (struct mpctb*) mp->physaddr;  if(memcmp(pcmp, "PCMP", 4))    return 2;  length = pcmp->length;  sum = 0;  for(p = (uchar*)pcmp; length; length--)    sum += *p++;  if(sum || (pcmp->version != 1 && pcmp->version != 4))    return 3;  return 0;}voidmp_init(void){  int r;  uchar *p, *e;  struct mpctb *mpctb;  struct mppe *proc;  struct mpbe *bus;  struct mpioapic *ioapic;  struct mpie *intr;  int i;  uchar byte;  ncpu = 0;  if((r = mp_detect()) != 0) {    return;  }  ismp = 1;  // Run through the table saving information needed for starting  // application processors and initialising any I/O APICs. The table  // is guaranteed to be in order such that only one pass is necessary.  mpctb = (struct mpctb*) mp->physaddr;  lapicaddr = (uint*) mpctb->lapicaddr;  p = ((uchar*)mpctb)+sizeof(struct mpctb);  e = ((uchar*)mpctb)+mpctb->length;  while(p < e) {    switch(*p){    case MPPROCESSOR:      proc = (struct mppe*) p;      cpus[ncpu].apicid = proc->apicid;      if(proc->flags & MPBP) {        bcpu = &cpus[ncpu];      }      ncpu++;      p += sizeof(struct mppe);      continue;    case MPBUS:      bus = (struct mpbe*) p;      for(i = 0; buses[i]; i++){        if(strncmp(buses[i], bus->string, sizeof(bus->string)) == 0)          break;      }      p += sizeof(struct mpbe);      continue;    case MPIOAPIC:      ioapic = (struct mpioapic*) p;      ioapic_id = ioapic->apicno;      p += sizeof(struct mpioapic);      continue;    case MPIOINTR:      intr = (struct mpie*) p;      p += sizeof(struct mpie);      continue;    default:      cprintf("mp_init: unknown PCMP type 0x%x (e-p 0x%x)\n", *p, e-p);      while(p < e){        cprintf("%uX ", *p);        p++;      }      break;    }  }  if(mp->imcrp) {    // It appears that Bochs doesn't support IMCR, so code won't run.    outb(0x22, 0x70);   // Select IMCR    byte = inb(0x23);   // Current contents    byte |= 0x01;       // Mask external INTR    outb(0x23, byte);   // Disconnect 8259s/NMI  }}intmp_bcpu(void){  if(ismp)    return bcpu-cpus;  return 0;}extern void mpmain(void);// Write bootstrap code to unused memory at 0x7000.#define APBOOTCODE 0x7000voidmp_startthem(void){  extern uchar _binary_bootother_start[], _binary_bootother_size[];  extern int main();  int c;  memmove((void*) APBOOTCODE,_binary_bootother_start,          (uint) _binary_bootother_size);  for(c = 0; c < ncpu; c++){    // Our current cpu has already started.    if(c == cpu())      continue;    // Set target %esp    *(uint*)(APBOOTCODE-4) = (uint) (cpus[c].mpstack) + MPSTACK;    // Set target %eip    *(uint*)(APBOOTCODE-8) = (uint)mpmain;    // Go!    lapic_startap(cpus[c].apicid, (uint) APBOOTCODE);    // Wait for cpu to get through bootstrap.    while(cpus[c].booted == 0)      ;  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久午夜电影| 精品噜噜噜噜久久久久久久久试看| 免费成人在线观看视频| 亚洲在线观看免费视频| 国产精品久久久久久妇女6080 | 亚洲精品中文在线影院| 亚洲国产精品成人综合| 国产精品欧美经典| 国产精品美女久久久久久久久久久| 国产日韩欧美不卡| 自拍偷拍亚洲激情| 久久久久国产精品麻豆| 欧美成人一区二区三区| 日韩欧美国产综合| 久久影院视频免费| 国产精品每日更新| 亚洲综合免费观看高清在线观看| 亚洲午夜私人影院| 另类小说欧美激情| 国产99精品视频| 99久久免费国产| 欧美亚洲综合一区| 精品久久久久久无| 国产精品免费丝袜| 亚洲va中文字幕| 久久精品久久综合| www.爱久久.com| 欧美日韩免费视频| 久久美女艺术照精彩视频福利播放 | 亚洲精品国产品国语在线app| 亚洲精品ww久久久久久p站| 偷窥国产亚洲免费视频| 国产综合色视频| 99久久婷婷国产综合精品| 欧美色网站导航| 久久久久久久久久久电影| 亚洲欧美偷拍三级| 久久99精品国产.久久久久| aaa欧美日韩| 日韩午夜av一区| 国产精品美女www爽爽爽| 亚洲r级在线视频| 高清不卡一二三区| 欧美高清视频不卡网| 中文字幕av不卡| 免费在线观看一区| 在线视频欧美精品| 国产精品欧美久久久久无广告| 天天色天天操综合| 91麻豆免费观看| 欧美岛国在线观看| 亚洲一区二区精品视频| 国产69精品一区二区亚洲孕妇| 欧美日韩一区二区欧美激情 | 成人教育av在线| 8v天堂国产在线一区二区| 亚洲人成精品久久久久久| 黑人巨大精品欧美黑白配亚洲| 欧美性videosxxxxx| 国产精品国产三级国产| 国产一区二区三区久久久| 6080日韩午夜伦伦午夜伦| 夜夜揉揉日日人人青青一国产精品| 国产成人在线视频网址| 精品成人一区二区三区四区| 免费三级欧美电影| 欧美老肥妇做.爰bbww| 亚洲一区欧美一区| 91啦中文在线观看| 亚洲色图视频网| 成人小视频在线观看| 欧美激情综合五月色丁香小说| 韩国av一区二区三区四区| 日韩一区二区免费高清| 日韩电影在线一区二区三区| 欧美精品三级在线观看| 亚洲国产日韩综合久久精品| 色婷婷亚洲婷婷| 一区二区三区视频在线看| 在线精品视频免费播放| 亚洲免费大片在线观看| 91久久精品一区二区三区| 亚洲一区中文在线| 欧美日韩亚洲综合一区二区三区| 亚洲高清视频在线| 3d动漫精品啪啪一区二区竹菊| 日韩黄色小视频| 日韩免费在线观看| 国产一区二区91| 国产精品久久久久永久免费观看 | 偷窥少妇高潮呻吟av久久免费| 在线免费一区三区| 亚洲国产欧美在线| 欧美mv日韩mv国产网站app| 国产尤物一区二区| 亚洲视频一区二区在线| 欧美偷拍一区二区| 免费成人性网站| 国产欧美精品一区| 欧美在线一二三| 日本大胆欧美人术艺术动态| 2014亚洲片线观看视频免费| 成人爱爱电影网址| 亚洲成人精品影院| 久久人人爽人人爽| 色婷婷国产精品久久包臀| 天天综合色天天| 国产丝袜美腿一区二区三区| 色偷偷一区二区三区| 日韩av网站免费在线| 国产欧美精品区一区二区三区| 91麻豆免费观看| 国产综合久久久久影院| 亚洲精品视频免费观看| 精品国产一区二区在线观看| 99久久精品国产观看| 日本成人在线看| 中文字幕一区二区三区在线不卡| 337p亚洲精品色噜噜狠狠| 成人黄页毛片网站| 久久精品国产亚洲a| 中文字幕亚洲一区二区va在线| 日韩一区二区电影网| 色视频欧美一区二区三区| 国内精品久久久久影院色 | 欧美日韩国产高清一区二区| 国产精品性做久久久久久| 日韩主播视频在线| 1000部国产精品成人观看| 久久夜色精品国产噜噜av| 91成人网在线| 成人污视频在线观看| 韩国女主播一区二区三区| 性做久久久久久免费观看欧美| 中文字幕欧美三区| 精品国产露脸精彩对白| 欧美精品乱码久久久久久 | 首页综合国产亚洲丝袜| 国产精品久久久久久久午夜片| 精品国产第一区二区三区观看体验| 欧美性猛交xxxxxx富婆| 91在线观看成人| 成人午夜av在线| 成人综合在线观看| 国产不卡一区视频| 国产精品一区免费视频| 精品一二三四在线| 九九**精品视频免费播放| 日韩成人免费在线| 免费成人小视频| 麻豆精品视频在线观看视频| 日韩国产精品91| 天天影视网天天综合色在线播放 | 7777精品伊人久久久大香线蕉 | 欧美日韩在线观看一区二区 | 日韩电影在线观看网站| 偷拍亚洲欧洲综合| 全国精品久久少妇| 麻豆成人91精品二区三区| 奇米精品一区二区三区在线观看 | 中文字幕欧美区| 国产精品理论在线观看| 中文成人av在线| 国产精品灌醉下药二区| 亚洲欧美一区二区三区极速播放| ...中文天堂在线一区| 亚洲欧美韩国综合色| 尤物视频一区二区| 香蕉加勒比综合久久| 亚洲第一会所有码转帖| 日韩avvvv在线播放| 激情图区综合网| 成人精品国产福利| 精品视频一区二区三区免费| 91精品国产91综合久久蜜臀| 日韩精品一区二区三区视频在线观看| 欧美一级日韩免费不卡| 国产亚洲欧洲997久久综合| 国产精品国产三级国产普通话三级| 亚洲同性同志一二三专区| 午夜精品爽啪视频| 国产麻豆成人传媒免费观看| eeuss鲁片一区二区三区在线观看| 在线观看日韩国产| 日韩欧美国产综合一区| 中文字幕av在线一区二区三区| 亚洲免费观看高清完整| 麻豆成人在线观看| 91无套直看片红桃| 欧美成人伊人久久综合网| 亚洲欧美影音先锋| 蜜桃av噜噜一区| 色婷婷久久久综合中文字幕| 欧美电视剧在线看免费| 亚洲视频一二三区| 狠狠色狠狠色综合| 在线免费亚洲电影| 中文字幕第一区第二区| 免费xxxx性欧美18vr| 91蜜桃网址入口|