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

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

?? passage.c

?? 一個(gè)Windows下的Linux專用虛擬機(jī)
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* load other's CR3 */							\    "    movl "CO_ARCH_STATE_STACK_CR3"(%ebp), %eax"              "\n"	\    "    movl %eax, %cr3"                    "\n"			\									\/* load other's CR0 */							\    "    movl "CO_ARCH_STATE_STACK_CR0"(%ebp), %eax"              "\n"	\    "    movl %eax, %cr0"                    "\n"			\									\/* load other's CR2 */							\    "    movl "CO_ARCH_STATE_STACK_CR2"(%ebp), %eax"              "\n"	\    "    movl %eax, %cr2"                    "\n"			\									\/* load other's GDT */							\    "    lgdt "CO_ARCH_STATE_STACK_GDT"(%ebp)"                    "\n"	\									\/* load IDT */								\    "    lidt "CO_ARCH_STATE_STACK_IDT"(%ebp)"                    "\n"	\									\/* load LDT */								\    "    lldt "CO_ARCH_STATE_STACK_LDT"(%ebp)"                    "\n"	\									\/* load segment registers */						\    "    movl "CO_ARCH_STATE_STACK_GS"(%ebp), %ebx"              "\n"	\    "    movl %ebx, %gs"                     "\n"			\    "    movl "CO_ARCH_STATE_STACK_FS"(%ebp), %ebx"              "\n"	\    "    movl %ebx, %fs"                     "\n"			\    "    movl "CO_ARCH_STATE_STACK_ES"(%ebp), %ebx"              "\n"	\    "    movl %ebx, %es"                     "\n"			\    "    movl "CO_ARCH_STATE_STACK_DS"(%ebp), %ebx"              "\n"	\    "    movl %ebx, %ds"                     "\n"			\    "    movl "CO_ARCH_STATE_STACK_SS"(%ebp), %ebx"              "\n"	\    "    movl %ebx, %ss"                     "\n"			\									\/* load TR */								\    "    movw "CO_ARCH_STATE_STACK_TR"(%ebp), %ax"               "\n"	\    "    cmpw $0, %ax"                       "\n"			\    "    jz 1f"                              "\n"			\    "    ltr %ax"                            "\n"			\    "1:"                                     "\n"                       \PASSAGE_CODE_WRAP_IBCS(	co_monitor_passage_func_fxsave, 	PASSAGE_CODE_WRAP_SWITCH(		PASSAGE_PAGE_PRESERVATION_FXSAVE(				PASSAGE_PAGE_PRESERVATION_DEBUG(				PASSAGE_PAGE_PRESERVATION_COMMON(					PASSAGE_CODE_NOWHERE_LAND() 					)				)			)		)	)PASSAGE_CODE_WRAP_IBCS(	co_monitor_passage_func_fnsave,	PASSAGE_CODE_WRAP_SWITCH(		PASSAGE_PAGE_PRESERVATION_FNSAVE(			PASSAGE_PAGE_PRESERVATION_DEBUG(				PASSAGE_PAGE_PRESERVATION_COMMON(					PASSAGE_CODE_NOWHERE_LAND()					)				)			)		)	)PASSAGE_CODE_WRAP_IBCS(	co_monitor_passage_func_short_fxsave, 	PASSAGE_CODE_WRAP_SWITCH(		PASSAGE_PAGE_PRESERVATION_FXSAVE(				PASSAGE_PAGE_PRESERVATION_DEBUG(				PASSAGE_PAGE_PRESERVATION_COMMON(					PASSAGE_CODE_NOWHERE_LAND_SHORT() 					)				)			)		)	)PASSAGE_CODE_WRAP_IBCS(	co_monitor_passage_func_short_fnsave,	PASSAGE_CODE_WRAP_SWITCH(		PASSAGE_PAGE_PRESERVATION_FNSAVE(			PASSAGE_PAGE_PRESERVATION_DEBUG(				PASSAGE_PAGE_PRESERVATION_COMMON(					PASSAGE_CODE_NOWHERE_LAND_SHORT()					)				)			)		)	)co_rc_t co_monitor_arch_passage_page_alloc(co_monitor_t *cmon){	co_rc_t rc;	co_archdep_monitor_t archdep;	archdep = co_os_malloc(sizeof(*archdep));	if (archdep == NULL)		return CO_RC(OUT_OF_MEMORY);	co_memset(archdep, 0, sizeof(*archdep));	cmon->archdep = archdep;	cmon->passage_page = co_os_alloc_pages(sizeof(co_arch_passage_page_t)/CO_ARCH_PAGE_SIZE);	if (cmon->passage_page == NULL){		rc = CO_RC(OUT_OF_MEMORY);		goto error;	}			co_memset(cmon->passage_page, 0, sizeof(co_arch_passage_page_t));	rc = co_arch_anti_nx_init(cmon);	if (!CO_OK(rc)) 		goto error_free_passage;	return rc;/* error path */error_free_passage:	co_os_free_pages(cmon->passage_page, sizeof(co_arch_passage_page_t)/CO_ARCH_PAGE_SIZE);error:	co_os_free(archdep);	return rc;}void co_monitor_arch_passage_page_free(co_monitor_t *cmon){	co_arch_anti_nx_free(cmon);	co_os_free(cmon->archdep);	co_os_free_pages(cmon->passage_page, sizeof(co_arch_passage_page_t)/CO_ARCH_PAGE_SIZE);}static inline void co_passage_page_dump_state(co_arch_state_stack_t *state){	co_debug("cs: %04lx   ds: %04lx   es: %04lx   fs: %04lx   gs: %04lx   ss: %04lx",		 state->cs, state->ds, state->es, state->fs, state->gs, state->ss);	co_debug("cr0: %08lx   cr2: %08lx   cr3: %08lx   cr4: %08lx",		 state->cr0, state->cr2, state->cr3, state->cr4);	co_debug("dr0: %08lx   dr1: %08lx  dr2: %08lx  dr3: %08lx  dr6: %08lx  dr7: %08lx",		 state->dr0, state->dr1, state->dr2, state->dr3, state->dr6, state->dr7);	co_debug("gdt: %08lx:%04x   idt:%08lx:%04x   ldt:%04x  tr:%04x",		 (long)state->gdt.base, state->gdt.limit,		 (long)state->idt.table, state->idt.size,		 state->ldt, state->tr);	co_debug("return_eip: %08lx   flags: %08lx   esp: %08lx",		 state->return_eip, state->flags, state->esp);}static inline void co_passage_page_dump(co_arch_passage_page_t *page){	co_debug("Host state");	co_passage_page_dump_state(&page->host_state);	co_debug("Linux state");	co_passage_page_dump_state(&page->linuxvm_state);}static void short_temp_address_space_init(co_arch_passage_page_normal_address_space_t *pp, 					  unsigned long pa, unsigned long *va){	int i;	struct {		unsigned long pmd;		unsigned long pte;		unsigned long paddr;	} maps[2];	for (i=0; i < 2; i++) {		maps[i].pmd = va[i] >> CO_ARCH_PMD_SHIFT;		maps[i].pte = (va[i] & ~CO_ARCH_PMD_MASK) >> CO_ARCH_PAGE_SHIFT;		maps[i].paddr = co_os_virt_to_phys(&pp->pte[i]);	}	/*	 * Currently this is not the case, but it is possible that 	 * these two virtual address are on the same PTE page. In that	 * case we don't need pte[1].	 *	 * NOTE: If the two virtual addresses are identical then it	 * would still work (other_map will be 0 in both contexts).	 */	if (maps[0].pmd == maps[1].pmd){		/* Use one page table */		pp->pgd[maps[0].pmd] = _KERNPG_TABLE | maps[0].paddr;		pp->pte[0][maps[0].pte] = _KERNPG_TABLE | pa;		pp->pte[0][maps[1].pte] = _KERNPG_TABLE | pa;	} else {		/* Use two page tables */		pp->pgd[maps[0].pmd] = _KERNPG_TABLE | maps[0].paddr;		pp->pgd[maps[1].pmd] = _KERNPG_TABLE | maps[1].paddr;		pp->pte[0][maps[0].pte] = _KERNPG_TABLE | pa;		pp->pte[1][maps[1].pte] = _KERNPG_TABLE | pa;	}} /* * Create the temp_pgd address space. * * The goal of this function is simple: Take the two virtual addresses * of the passage page from the operating systems and create an empty * address space which contains just these two virtual addresses, mapped * to the physical address of the passage page. */static void normal_temp_address_space_init(co_arch_passage_page_normal_address_space_t *as, 					   unsigned long pa, unsigned long va){	int i;	unsigned long vas[2] = {		(unsigned long)(va),		(unsigned long)(pa),	};	for (i=0; i < 2; i++) {		unsigned long pmd = vas[i] >> CO_ARCH_PMD_SHIFT;		unsigned long pte = (vas[i] & ~CO_ARCH_PMD_MASK) >> CO_ARCH_PAGE_SHIFT;		int j = i;		if (!as->pgd[pmd]) {			as->pgd[pmd] = _KERNPG_TABLE | co_os_virt_to_phys(&as->pte[j]);		} else {			j = 0;		}		as->pte[j][pte] = _KERNPG_TABLE | pa;	}}static void pae_temp_address_space_init(co_arch_passage_page_pae_address_space_t *as, 					unsigned long pa, unsigned long va){	int i;	unsigned long vas[2] = {		(unsigned long)(va),		(unsigned long)(pa),	};	for (i=0; i < 2; i++) {		unsigned long pgd = vas[i] >> CO_ARCH_PAE_PGD_SHIFT;		unsigned long pmd = (vas[i] & ~CO_ARCH_PAE_PGD_MASK) >> CO_ARCH_PAE_PMD_SHIFT;		unsigned long pte = (vas[i] & ~CO_ARCH_PAE_PMD_MASK) >> CO_ARCH_PAGE_SHIFT;		int j = i, k = i;		if (!as->main[pgd]) {			as->main[pgd] = 0x1 | co_os_virt_to_phys(&as->pgd[j]);		} else {			j = 0;		}		if (!as->pgd[j][pmd]) {			as->pgd[j][pmd] = _KERNPG_TABLE | co_os_virt_to_phys(&as->pte[k]);		} else {			k = 0;		}		as->pte[k][pte] = _KERNPG_TABLE | pa;	}}co_rc_t co_monitor_arch_passage_page_init(co_monitor_t *cmon){	co_arch_passage_page_t *pp = cmon->passage_page;	unsigned long caps = 0;	caps = cmon->manager->archdep->caps[0];	if (co_monitor_passage_func_short_fxsave_size() > sizeof (pp->code))		return CO_RC(ERROR);	if (co_monitor_passage_func_fxsave_size() > sizeof (pp->code))		return CO_RC(ERROR);	if (co_monitor_passage_func_short_fnsave_size() > sizeof (pp->code))		return CO_RC(ERROR);	if (co_monitor_passage_func_fnsave_size() > sizeof (pp->code))		return CO_RC(ERROR);	/*	 * TODO: Add sysenter / sysexit restoration support 	 */	if (caps & (1 << CO_ARCH_X86_FEATURE_FXSR)) {		co_debug("CPU supports fxsave/fxrstor");		if (!co_is_pae_enabled()) {			memcpy_co_monitor_passage_func_short_fxsave(pp->code);		} else {			memcpy_co_monitor_passage_func_fxsave(pp->code);		}	} else {		co_debug("CPU supports fnsave/frstor");		if (!co_is_pae_enabled()) {			memcpy_co_monitor_passage_func_short_fnsave(pp->code);		} else {			memcpy_co_monitor_passage_func_fnsave(pp->code);		}	}	pp->self_physical_address = co_os_virt_to_phys(&pp->first_page);	/*	 * Init temporary address space page tables for host side:	 */	if (!co_is_pae_enabled()) {		unsigned long va[2] = {			(unsigned long)(cmon->passage_page_vaddr),			(unsigned long)(pp),		};		pp->temp_pgd_physical = co_os_virt_to_phys(&pp->temp_space.pgd);		short_temp_address_space_init(&pp->temp_space, co_os_virt_to_phys(&pp->first_page), va);		pp->linuxvm_state.other_map = va[1] - va[0];		pp->host_state.other_map = va[0] - va[1];	} else {		pae_temp_address_space_init(&pp->host_pae, pp->self_physical_address, 					    (unsigned long)(&pp->first_page));		pp->host_state.temp_cr3 = co_os_virt_to_phys(&pp->host_pae);		pp->host_state.va = (unsigned long)(&pp->first_page);		/*		 * Init the Linux context.		 */ 		pp->linuxvm_state.temp_cr3 = co_os_virt_to_phys(&pp->guest_normal);		normal_temp_address_space_init(&pp->guest_normal, pp->self_physical_address,					       (unsigned long)(cmon->passage_page_vaddr));				pp->linuxvm_state.va = (unsigned long)(cmon->passage_page_vaddr);	}	pp->linuxvm_state.dr0 = co_get_dr0();	pp->linuxvm_state.dr1 = co_get_dr1();	pp->linuxvm_state.dr2 = co_get_dr2();	pp->linuxvm_state.dr3 = co_get_dr3();	pp->linuxvm_state.dr6 = co_get_dr6();	pp->linuxvm_state.dr7 = co_get_dr7();	pp->linuxvm_state.tr = 0;	pp->linuxvm_state.ldt = 0;	pp->linuxvm_state.cr4 = 0;	pp->linuxvm_state.cr3 = cmon->pgd;	pp->linuxvm_state.gdt.base = (struct x86_dt_entry *)cmon->import.kernel_gdt_table;	pp->linuxvm_state.gdt.limit = (8*0x20) - 1;	pp->linuxvm_state.idt.table = (struct x86_idt_entry *)cmon->import.kernel_idt_table;	pp->linuxvm_state.idt.size = 256*8 - 1;	pp->linuxvm_state.cr0 = 0x80010031;	if (pp->linuxvm_state.gdt.limit < pp->host_state.gdt.limit)		pp->linuxvm_state.gdt.limit = pp->host_state.gdt.limit;	/*	 * The stack doesn't start right in 0x2000 because we need some slack for	 * the exit of the passage code.	 */	pp->linuxvm_state.esp = cmon->import.kernel_init_task_union + 0x2000 - 0x50;	pp->linuxvm_state.flags = 0;	pp->linuxvm_state.return_eip = cmon->import.kernel_colinux_start;	pp->linuxvm_state.cs = cmon->arch_info.kernel_cs;	pp->linuxvm_state.ds = cmon->arch_info.kernel_ds;	pp->linuxvm_state.es = cmon->arch_info.kernel_ds;	pp->linuxvm_state.fs = cmon->arch_info.kernel_ds;	pp->linuxvm_state.gs = cmon->arch_info.kernel_ds;	pp->linuxvm_state.ss = cmon->arch_info.kernel_ds;	if (caps & (1 << CO_ARCH_X86_FEATURE_FXSR))		co_fxsave(pp->linuxvm_state.fxstate);	else		co_fnsave(pp->linuxvm_state.fxstate);	co_debug("Passage page dump: %lx", (long)co_monitor_arch_passage_page_init);	co_passage_page_dump(pp);	return CO_RC_OK;}void co_host_switch_wrapper(co_monitor_t *cmon){	co_switch();}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区国语对白| 国产日产欧产精品推荐色 | 国产精品视频免费看| 中文字幕一区在线观看| 亚洲国产综合91精品麻豆| 日韩电影在线观看电影| 国产在线精品一区二区| 91色综合久久久久婷婷| 欧美福利视频一区| 久久久亚洲综合| 亚洲一区精品在线| 国产一区二区三区在线观看免费| 成人教育av在线| 欧美精品 日韩| 欧美国产日本视频| 日韩成人av影视| 成人久久视频在线观看| 91精品国产一区二区人妖| 国产精品卡一卡二卡三| 丝袜脚交一区二区| av一二三不卡影片| 欧美成人精品3d动漫h| 亚洲欧美一区二区视频| 麻豆91免费观看| 在线观看视频一区| 2021国产精品久久精品| 亚洲制服欧美中文字幕中文字幕| 国产成人综合网| 欧美人伦禁忌dvd放荡欲情| 国产精品天美传媒| 久久精品国产亚洲高清剧情介绍 | 国产精品久久毛片| 青青草成人在线观看| 91色九色蝌蚪| 国产偷国产偷亚洲高清人白洁| 亚洲国产成人av| 97久久人人超碰| 2024国产精品视频| 青青国产91久久久久久| 欧美色欧美亚洲另类二区| 国产精品美女久久久久aⅴ国产馆| 日韩av中文字幕一区二区| 一本一道综合狠狠老| 国产女同性恋一区二区| 精品亚洲国内自在自线福利| 欧美日韩电影一区| 亚洲欧美日韩国产手机在线| 成人免费视频视频在线观看免费| www日韩大片| 蜜臀av在线播放一区二区三区| 欧美日韩国产a| 亚洲国产一区二区三区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 欧美成人精品二区三区99精品| 亚洲成人久久影院| eeuss鲁一区二区三区| 久久久www免费人成精品| 久久电影国产免费久久电影| 91精品国产欧美一区二区| 亚洲一区二区三区四区在线观看| 色狠狠一区二区| 亚洲精品亚洲人成人网在线播放| av毛片久久久久**hd| 国产精品久久久久三级| 国产91精品免费| 中文字幕免费不卡在线| 成人爱爱电影网址| 国产三级久久久| 成人免费视频免费观看| 国产精品毛片无遮挡高清| 丁香桃色午夜亚洲一区二区三区| 日本一区二区不卡视频| 成人综合婷婷国产精品久久免费| 国产欧美一区二区在线| 丁香六月久久综合狠狠色| 国产精品无圣光一区二区| 成人白浆超碰人人人人| 亚洲日本丝袜连裤袜办公室| 色一情一伦一子一伦一区| 亚洲柠檬福利资源导航| 欧洲生活片亚洲生活在线观看| 亚洲综合成人在线视频| 欧美日韩国产高清一区二区三区| 午夜成人免费电影| 日韩视频永久免费| 国产一区中文字幕| 国产婷婷色一区二区三区四区| 成人性视频网站| 亚洲精品免费一二三区| 在线播放中文字幕一区| 精油按摩中文字幕久久| 国产精品毛片大码女人| 色综合久久综合网97色综合| 亚洲国产精品久久艾草纯爱| 日韩一区二区三区视频在线观看| 国内精品写真在线观看| 国产精品人人做人人爽人人添| 国产成人精品免费视频网站| 国产精品久久久久久久第一福利 | 夜夜精品视频一区二区| 91精品国产综合久久久蜜臀图片| 看片网站欧美日韩| 国产天堂亚洲国产碰碰| 一本色道a无线码一区v| 日本美女一区二区三区| 国产日韩欧美一区二区三区乱码| 91论坛在线播放| 日韩av成人高清| 亚洲国产电影在线观看| 欧美天天综合网| 国产一区二区毛片| 伊人色综合久久天天人手人婷| 日韩亚洲电影在线| 成人深夜在线观看| 香蕉成人伊视频在线观看| 欧美不卡视频一区| 成人黄色一级视频| 亚洲成人黄色小说| 国产欧美精品区一区二区三区| 欧美日韩在线一区二区| 国产精品99久久久久久久vr| 亚洲乱码一区二区三区在线观看| 在线电影院国产精品| 成人美女在线观看| 日本大胆欧美人术艺术动态| 国产精品久久久久久久久果冻传媒| 欧美人体做爰大胆视频| 不卡视频一二三四| 轻轻草成人在线| 亚洲视频一区在线观看| 日韩精品一区在线| 色中色一区二区| 国产一区二区三区不卡在线观看 | 91蜜桃免费观看视频| 美女视频黄久久| 亚洲精品视频免费观看| 久久综合九色综合97婷婷| 欧美专区在线观看一区| 国产高清在线精品| 免费xxxx性欧美18vr| 亚洲欧美激情小说另类| 久久青草国产手机看片福利盒子| 91福利国产精品| 丁香婷婷综合激情五月色| 日本麻豆一区二区三区视频| 亚洲免费看黄网站| 国产欧美一二三区| 日韩免费性生活视频播放| 欧美在线免费播放| 99re8在线精品视频免费播放| 国产精品一区专区| 午夜激情一区二区| 亚洲精品ww久久久久久p站| 国产欧美视频一区二区| 精品卡一卡二卡三卡四在线| 欧美日本国产视频| 欧美亚洲动漫制服丝袜| 91影院在线观看| 成人网页在线观看| 国内精品久久久久影院薰衣草| 午夜久久电影网| 一区二区三区成人在线视频| 亚洲人成伊人成综合网小说| 国产精品天天摸av网| 欧美激情中文字幕| 国产日韩精品一区二区三区在线| 精品国产电影一区二区| 91麻豆精品国产自产在线观看一区| 欧美丝袜丝交足nylons| 欧洲生活片亚洲生活在线观看| 91免费观看视频| 97精品国产露脸对白| 成人免费高清视频在线观看| 国产精品1区二区.| 国产成人午夜视频| 国产一区二区不卡老阿姨| 精品亚洲国内自在自线福利| 久草精品在线观看| 国内精品写真在线观看| 精品午夜久久福利影院 | 久久久午夜电影| xfplay精品久久| 国产亚洲精品bt天堂精选| 久久婷婷成人综合色| 国产亚洲成年网址在线观看| 国产欧美精品一区二区三区四区| 欧美韩国日本一区| 亚洲欧洲美洲综合色网| 亚洲免费观看高清完整版在线观看熊 | 亚洲综合无码一区二区| 一区二区三区不卡在线观看| 亚洲精品福利视频网站| 亚洲一区电影777| 日韩精品久久理论片| 美女视频第一区二区三区免费观看网站| 蜜桃视频在线观看一区二区| 精品亚洲欧美一区| 成人综合日日夜夜| 日本道免费精品一区二区三区| 欧美三区免费完整视频在线观看|