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

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

?? bus.c

?? skyeye_1_2_2_Rel.rar 最新skyeye源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
	int sl_index; 	sl_map = iohandlerFlvlMap[fl_index]; 	if(!sl_map) {		sl_map = iohandlerFlvlMap[fl_index] = malloc(sizeof(uint8_t*)*IOH_SLVL_SZ);		if(!sl_map) {			fprintf(stderr,"Out of memory in IOH_Map2LvlBlock\n");			exit(4724);		} else {			memset(sl_map,0,sizeof(uint8_t*)*IOH_SLVL_SZ);			ioh_flvl_use_count[fl_index]++;		}	} 	sl_index = (addr & IOH_SLVL_MASK)>>IOH_SLVL_SHIFT;	if(!sl_map[sl_index]) {		sl_map[sl_index] = h;	} else {		fprintf(stderr,"There is already a handler for IO-Region 0x%08x\n",addr);		exit(3246);	}}voidIOH_NewRegion(uint32_t addr,uint32_t length,IOReadProc *readproc,IOWriteProc *writeproc,int flags,void *clientData) {	IOHandler *h;	int swap_endian;	int byteorder;	if(flags & IOH_FLG_BIG_ENDIAN) {		byteorder = en_BIG_ENDIAN;	} else if(flags & IOH_FLG_HOST_ENDIAN) {		byteorder = HOST_BYTEORDER;	} else {		byteorder = en_LITTLE_ENDIAN;	}	if(byteorder != HOST_BYTEORDER) {		swap_endian=1;	} else {		swap_endian=0;	}	while(length) {		if(!(addr&IOH_MAP_BLOCKMASK) && (length >= IOH_MAP_BLOCKSIZE)) {			h=allocate_iohandler(addr,readproc,writeproc,swap_endian,clientData);			h->flags = 0;			h->len = 4;			IOH_MapBlock(addr,h); 			length-=IOH_MAP_BLOCKSIZE;			addr+=IOH_MAP_BLOCKSIZE;		} else if(!(addr&IOH_SLVL_BLOCKMASK) && (length >= IOH_SLVL_BLOCKSIZE)) {			h=allocate_iohandler(addr,readproc,writeproc,swap_endian,clientData);			h->flags = 0;			h->len = 4;			IOH_Map2LvlBlock(addr,h); 			length-=IOH_SLVL_BLOCKSIZE;			addr+=IOH_SLVL_BLOCKSIZE;		} else {			fprintf(stderr,"io region not correctly aligned addr 0x%08x, len 0x%08x\n",addr,length);			exit(34245);		}	}}static inline voidIOH_UnMapBlock(uint32_t addr) {	int index;	IOHandler *handler;	index=addr>>IOH_MAP_SHIFT;	handler=iohandlerMap[index];	if(handler) {		iohandlerMap[index]=NULL;		free(handler);	}}static inline voidIOH_UnMap2LvlBlock(uint32_t addr) {	int fl_index;	int sl_index;	IOHandler *handler;	IOHandler **sl_map;	fl_index=addr>>IOH_FLVL_SHIFT;	sl_map=iohandlerFlvlMap[fl_index];	if(!sl_map) {		return;	}	sl_index = (addr & IOH_SLVL_MASK) >> IOH_SLVL_SHIFT;	handler = sl_map[sl_index];	if(handler) {		sl_map[sl_index]=NULL;		free(handler);		ioh_flvl_use_count[fl_index]--;		if(ioh_flvl_use_count[fl_index]==0) {			free(iohandlerFlvlMap[fl_index]);			iohandlerFlvlMap[fl_index]=0;		}	}}voidIOH_DeleteRegion(uint32_t addr,uint32_t length) {	//fprintf(stderr,"Delete Region %08x\n",addr);	while(length) {		if(!(addr&IOH_MAP_BLOCKMASK) && (length >= IOH_MAP_BLOCKSIZE)) {			IOH_UnMapBlock(addr);			length-=IOH_MAP_BLOCKSIZE;			addr+=IOH_MAP_BLOCKSIZE;		} else if(!(addr&IOH_SLVL_BLOCKMASK) && (length >= IOH_SLVL_BLOCKSIZE)) {			IOH_UnMap2LvlBlock(addr);			length-=IOH_SLVL_BLOCKSIZE;			addr+=IOH_SLVL_BLOCKSIZE;		} else {			fprintf(stderr,"IOH_DeleteRegion: only IO regions with alignment to 0x%08x allowed\n",IOH_SLVL_BLOCKSIZE);			return;		}	}}uint32_tIOH_Delete(uint32_t address) {	IOHandler *next,*cursor,*prev=NULL;	uint32_t hash=IOH_HASH(address);	uint32_t flags; 	for(cursor=iohandlerHash[hash];cursor;prev=cursor,cursor=next) {		next=cursor->next;		if(cursor->cpu_addr==address) {			if(prev) {				prev->next=cursor->next;			} else {				iohandlerHash[hash]=cursor->next;			}			flags = cursor->flags;			free(cursor);			return flags;		}	}	return 0;}voidIOH_Delete8(uint32_t address) {	IOH_Delete(address);}voidIOH_Delete16(uint32_t address) {	int i;	uint32_t flags;	for(i=0;i<2;i++) {		flags = IOH_Delete(address); 		if(!(flags & IOH_FLG_PA_CBSE)) {			break;		}	}}voidIOH_Delete32(uint32_t address) {	int i;	uint32_t flags;	for(i=0;i<4;i++) {		flags = IOH_Delete(address); 		if(!(flags & IOH_FLG_PA_CBSE)) {			break;		}	}}/* * --------------------------------------- * Warning: 64 Bit write does not work * because writeproc is still 32Bit * --------------------------------------- */voidIO_Write64(uint64_t value,uint32_t addr) {	IOHandler *h=IOH_Find(addr);	if(!h || !h->writeproc) {		fprintf(stderr,"Write: No Handler for %08x\n",addr);		return;	}	h->writeproc(h->clientData,value,addr,4);	return;}voidIO_Write32(uint32_t value,uint32_t addr) { 	IOHandler *h=IOH_Find(addr);	if(!h || !h->writeproc) {		fprintf(stderr,"Write: No Handler for %08x\n",addr);		return;	}	if(!h->swap_endian) {		h->writeproc(h->clientData,value,addr,4);	} else {		h->writeproc(h->clientData,swap32(value),addr,4);	}	return;}voidIO_Write16(uint16_t value,uint32_t addr) { 	IOHandler *h=IOH_Find(addr);	if(!h || !h->writeproc) {		//fprintf(stderr,"No handler for %08x\n",addr);		return;	}	if(!h->swap_endian) {		h->writeproc(h->clientData,value,addr,2);	} else {		h->writeproc(h->clientData,swap16(value),addr,2);	}	return;}voidIO_Write8(uint8_t value,uint32_t addr) {	IOHandler *h=IOH_Find(addr);	if(!h || !h->writeproc) {		fprintf(stderr,"No iohandler for %08x\n",addr);		return;	}	h->writeproc(h->clientData,value,addr,1);	return;}/* * --------------------------------------------------- * Warning: 64 Bit read does not work, because * readproc returns only 32 Bit * --------------------------------------------------- */uint64_tIO_Read64(uint32_t addr) { 	IOHandler *h=IOH_Find(addr);	if(!h || !h->readproc) {		return 0;	}	return h->readproc(h->clientData,addr,8);}uint32_tIO_Read32(uint32_t addr) { 	IOHandler *h;	uint32_t value;	h=IOH_Find(addr);	if(!h || !h->readproc) {		return 0;	}	if(likely(h->len == 4)) {		if(!h->swap_endian) {			return h->readproc(h->clientData,addr,4);		} else {			return swap32(h->readproc(h->clientData,addr,4));		}	} else if(h->len == 2) {		value = h->readproc(h->clientData,addr,4);			if(h->flags & IOH_FLG_OSZR_NEXT)  {			h=IOH_Find(addr+2);			if(h && h->readproc) {				value |= h->readproc(h->clientData,addr+2,4) << 16;				}		}		if(h->swap_endian) {			value = swap32(value); 		}	} else if(h->len == 1) {		value = h->readproc(h->clientData,addr,4);			if(h->flags & IOH_FLG_OSZR_NEXT)  {			int i;			for(i=1;i<4;i++) {				h=IOH_Find(addr+i);				if(h && h->readproc) {					value |= h->readproc(h->clientData,addr+i,4) << (i<<3);					}			}		}		if(h->swap_endian) {			value = swap32(value); 		}	} else {		fprintf(stderr,"Illegal handler len %d for addr 0x%08x\n",h->len,addr);		return 0;	}	return value;}uint16_tIO_Read16(uint32_t addr){ 	IOHandler *h=IOH_Find(addr);	uint32_t value;	if(!h || !h->readproc) {		return 0;	}	value =  h->readproc(h->clientData,addr,2);	if(likely(h->len == 2)) {		if(h->swap_endian) {			value = swap16(value);		}	} else if(h->len == 1) {		if(h->flags & IOH_FLG_OSZR_NEXT) 		{			h=IOH_Find(addr+1);			if(h && h->readproc) {				value = value | h->readproc(h->clientData,addr+1,2)<<8;			}			if(h->swap_endian) {				value = swap16(value);			}		}		return value; 	} else if(h->len == 4) {		if(h->swap_endian) {			value = swap32(value);		}		if(h->flags & IOH_FLG_PRD_RARP) {			value = value >> ((addr & 3) << 3);			return value;		}		} else {		fprintf(stderr,"Illegal handler len %d for addr 0x%08x\n",h->len,addr);	}	return value;}uint8_tIO_Read8(uint32_t addr) {	IOHandler *h=IOH_Find(addr);	uint32_t value;	if(!h || !h->readproc) {		return 0;	}	value = h->readproc(h->clientData,addr,1);	if(likely(h->len == 1)) {		return value;		} else if(h->len == 2) {		if(h->swap_endian) {			value = swap16(value);		}		if(h->flags & IOH_FLG_PRD_RARP) {			value = value >> ((addr & 3) << 3);			return value;		}	 	} else if(h->len == 4) {		if(h->swap_endian) {			value = swap32(value);		}		if(h->flags & IOH_FLG_PRD_RARP) {			value = value >> ((addr & 3) << 3);			return value;		}	}	return h->readproc(h->clientData,addr,1);}static void *ckalloc(size_t size) {	void *mem=malloc(size);	if(!mem) {		fprintf(stderr,"Out of memory\n");		exit(423);	}	memset(mem,0,size);	return mem;}static struct Bus mainBus = {	.read32 = Bus_Read32,        .read16 = Bus_Read16,       	.read8 = Bus_Read8,        .readblock = Bus_Read,	.write32 = Bus_Write32,	.write16 = Bus_Write16,	.write8 = Bus_Write8,	.writeblock = Bus_Write};/* * -------------------------------------------------------------- * Create and Initialize memory and IO-Handler maps and Hashes * -------------------------------------------------------------- */voidBus_Init(InvalidateCallback *invalidate,uint32_t min_memblocksize) {	int i;	InvalidateProc = invalidate;	twoLevelMMap.frst_lvl_sz = (4096);	twoLevelMMap.frst_lvl_mask =  (0xfff00000);	twoLevelMMap.frst_lvl_shift =  (20);	for(i=0;i<twoLevelMMap.frst_lvl_shift;i++) {		if((min_memblocksize>>i)==1) {			break;		}	}	twoLevelMMap.scnd_lvl_shift =  i;	twoLevelMMap.scnd_lvl_blocksize = min_memblocksize;	twoLevelMMap.scnd_lvl_blockmask = min_memblocksize-1;	twoLevelMMap.scnd_lvl_mask =  (~0 << i) & ~twoLevelMMap.frst_lvl_mask; 	twoLevelMMap.scnd_lvl_sz = (1<<(twoLevelMMap.frst_lvl_shift-twoLevelMMap.scnd_lvl_shift));	iohandlerHash = ckalloc(sizeof(IOHandler*)*IOH_HASH_SIZE);	mem_map_read = ckalloc(sizeof(uint8_t*)*MEM_MAP_ENTRIES);	mem_map_write = ckalloc(sizeof(uint8_t*)*MEM_MAP_ENTRIES);	twoLevelMMap.flvlmap_read = ckalloc(sizeof(uint8_t*)*twoLevelMMap.frst_lvl_sz);	twoLevelMMap.flvlmap_write = ckalloc(sizeof(uint8_t*)*twoLevelMMap.frst_lvl_sz);	twoLevelMMap.flvl_map_read_use_count = ckalloc(sizeof(*twoLevelMMap.flvl_map_read_use_count)*twoLevelMMap.frst_lvl_sz);	twoLevelMMap.flvl_map_write_use_count = ckalloc(sizeof(*twoLevelMMap.flvl_map_read_use_count)*twoLevelMMap.frst_lvl_sz);	iohandlerMap=ckalloc(sizeof(IOHandler *)*IOH_MAP_ENTRIES);	iohandlerFlvlMap=ckalloc(sizeof(IOHandler **)*IOH_FLVL_SZ);	MainBus = &mainBus; 	fprintf(stderr,"MemMap and IO-Handler Hash initialized\n");}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人tv网| 欧美综合一区二区三区| 久久伊人中文字幕| 91浏览器打开| 麻豆精品一区二区综合av| 国产精品进线69影院| 日韩欧美一级在线播放| 在线观看亚洲一区| 日韩一区二区三区免费看 | 欧美美女直播网站| 亚洲成a人v欧美综合天堂 | 精品久久久网站| 69久久99精品久久久久婷婷| 色婷婷久久一区二区三区麻豆| 极品少妇xxxx偷拍精品少妇| 石原莉奈在线亚洲三区| 亚洲一区二区在线视频| 国产精品美女久久久久aⅴ| 久久婷婷国产综合国色天香 | 国产91在线观看| 久久精品国产免费看久久精品| 日韩精品电影在线观看| 国产一区二区不卡| 久久精品国产久精国产爱| 国产成人在线观看免费网站| 国产精品中文欧美| 成人综合在线观看| 99精品视频在线观看| eeuss鲁片一区二区三区| 成人av在线网| 在线观看国产精品网站| 欧美精品一区二区在线播放| 精品99999| 亚洲mv在线观看| 福利视频网站一区二区三区| 欧美日韩在线播放| 欧美一级日韩一级| 欧美成人一区二区三区片免费| 亚洲老妇xxxxxx| 亚洲一区日韩精品中文字幕| 国产一区视频网站| 91精品国产综合久久久久久| 中文字幕一区二区视频| 亚洲精品第1页| 国产91精品久久久久久久网曝门| 欧美日韩三级一区| 日韩一区在线播放| 国产精品1区2区| 日韩欧美在线123| 亚洲图片欧美色图| 久久99精品国产91久久来源| 欧美性大战久久久久久久| 欧美成人在线直播| 亚洲成人黄色小说| 欧美日韩一级片网站| 日韩毛片精品高清免费| 日本不卡一区二区三区高清视频| 亚洲成av人片在www色猫咪| 国产高清不卡一区二区| 精品日韩欧美在线| 日韩中文字幕1| 欧美日韩免费在线视频| 成人欧美一区二区三区小说| 成人在线一区二区三区| 精品成人在线观看| 美女一区二区久久| 日韩欧美专区在线| 青青草视频一区| 欧美一区二区黄| 日韩av电影免费观看高清完整版在线观看| 91久久精品一区二区| 欧美成人r级一区二区三区| 午夜国产精品影院在线观看| 国精品**一区二区三区在线蜜桃| 色综合久久九月婷婷色综合| 国产精品视频线看| 成人99免费视频| 国产精品久久久久久久久快鸭| 丰满少妇在线播放bd日韩电影| 中文字幕欧美三区| 亚洲va国产va欧美va观看| 欧美日韩一本到| 日韩国产精品久久| 欧美一区二区三区系列电影| 日韩电影在线免费观看| 日韩午夜激情免费电影| 极品瑜伽女神91| 久久九九全国免费| 午夜欧美电影在线观看| 欧美丝袜自拍制服另类| 亚洲成人av在线电影| 欧美精品777| 精品一区二区三区av| 亚洲精品在线免费播放| 国产凹凸在线观看一区二区| 中文字幕av免费专区久久| 色婷婷精品久久二区二区蜜臀av| 亚洲在线免费播放| 日韩一卡二卡三卡国产欧美| 国产一区在线精品| 国产精品欧美久久久久一区二区| 99r精品视频| 肉肉av福利一精品导航| 欧美va日韩va| 成人精品在线视频观看| 一区二区三区四区av| 成人午夜av影视| 亚洲六月丁香色婷婷综合久久| 欧美日韩在线播放三区| 狠狠色狠狠色综合日日91app| 中文字幕欧美区| 91久久精品国产91性色tv | 精品成人一区二区| 99久久精品免费看国产免费软件| 亚洲午夜久久久久久久久久久 | 欧美人伦禁忌dvd放荡欲情| 久久99精品国产麻豆不卡| 国产精品国产成人国产三级| 欧美色视频一区| 国产精品白丝av| 亚洲国产一区二区视频| 久久色成人在线| 欧美亚洲高清一区二区三区不卡| 久久国产生活片100| 国产精品久久三区| 日韩片之四级片| 91精品1区2区| 国产尤物一区二区在线| 一区二区三区美女视频| 精品处破学生在线二十三| 日本高清不卡一区| 国产乱码精品一区二区三区忘忧草| 一区二区三区在线观看网站| 精品久久人人做人人爱| 欧美伊人久久久久久久久影院| 国内精品国产三级国产a久久| 亚洲成人av一区| 国产欧美日本一区视频| 成人免费视频免费观看| 日韩国产欧美视频| 亚洲精品国产无天堂网2021| 久久一区二区视频| 在线播放日韩导航| 91麻豆国产自产在线观看| 国产乱淫av一区二区三区| 午夜精品久久久久影视| 中文字幕亚洲不卡| 久久九九全国免费| 日韩免费高清av| 欧美日韩和欧美的一区二区| 91在线视频播放地址| 国产一区二区成人久久免费影院| 日韩av在线免费观看不卡| 亚洲欧洲日产国产综合网| 久久在线免费观看| 日韩美一区二区三区| 欧美肥妇free| 欧美亚洲日本国产| av成人动漫在线观看| 国产精品一区二区三区乱码 | 欧美不卡一区二区| 欧美丰满高潮xxxx喷水动漫| 欧美性极品少妇| 色8久久人人97超碰香蕉987| www.日韩av| 国产成人精品免费视频网站| 极品瑜伽女神91| 久久99精品国产麻豆不卡| 蜜桃久久久久久| 日韩电影在线一区二区| 五月激情六月综合| 亚洲成人激情av| 欧美日韩国产一级| 91老师片黄在线观看| 91丨porny丨国产入口| 99久久婷婷国产综合精品| 成人亚洲一区二区一| 国产老妇另类xxxxx| 国产一区二区视频在线播放| 国内精品国产三级国产a久久| 久久精品国产999大香线蕉| 麻豆精品一区二区综合av| 久久av中文字幕片| 久久97超碰国产精品超碰| 久久成人av少妇免费| 伦理电影国产精品| 精品一区二区三区在线播放 | 久久一夜天堂av一区二区三区| 精品国产一区二区三区久久久蜜月| 日韩色视频在线观看| 日韩欧美在线一区二区三区| 日韩精品一区在线| 久久综合九色综合欧美就去吻| 26uuu亚洲| 中文乱码免费一区二区| 综合中文字幕亚洲| 一区二区不卡在线播放 | 精品国产乱码久久久久久图片| 欧美大黄免费观看| 国产亚洲女人久久久久毛片|