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

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

?? passage.c

?? 一個(gè)Windows下的Linux專用虛擬機(jī)
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/* * This source code is a part of coLinux source package. * * Dan Aloni <da-x@colinux.org>, 2003 (c) * * The code is licensed under the GPL. See the COPYING file at * the root directory. * */ /* * The passage page and code are responsible for switching between the  * two operating systems. */ #include <colinux/common/debug.h>#include <colinux/common/libc.h>#include <colinux/common/common.h>#include <colinux/kernel/monitor.h>#include <colinux/arch/passage.h>#include <colinux/os/kernel/alloc.h>#include <colinux/os/kernel/misc.h>#include "cpuid.h"#include "manager.h"#include "utils.h"#include "antinx.h"#include "defs.h"#ifdef __MINGW32__#define SYMBOL_PREFIX "_"#else#define SYMBOL_PREFIX ""#endif#ifdef CO_COLINUX_KERNEL#error "CO_COLINUX_KERNEL should never defined here"#endif#ifdef CONFIG_COOPERATIVE#error "CONFIG_COOPERATIVE should never defined here"#endif/* * These two pseudo variables mark the start and the end of the passage code. * The passage code is position indepedent, so we just copy it from the  * driver's text to the passage page which we allocate when we start running. */#define PASSAGE_CODE_WRAP_IBCS(_name_, inner)           \extern char _name_;                                     \extern char _name_##_end;                               \							\static inline unsigned long _name_##_size(void)		\{							\	return &_name_##_end - &_name_;			\}							\							\static inline void memcpy_##_name_(void *dest)		\{							\	co_memcpy(dest, &_name_, _name_##_size());	\}							\							\asm(""							\    ".globl " SYMBOL_PREFIX #_name_          "\n"	\    SYMBOL_PREFIX #_name_ ":"                "\n"	\    "    push %ebx"                          "\n"	\    "    push %esi"                          "\n"	\    "    push %edi"                          "\n"	\    "    push %ebp"                          "\n"	\    inner						\    "    popl %ebp"                          "\n"	\    "    popl %edi"                          "\n"	\    "    popl %esi"                          "\n"	\    "    popl %ebx"                          "\n"	\    "    ret"                                "\n"	\    ".globl " SYMBOL_PREFIX #_name_ "_end"   "\n"	\    SYMBOL_PREFIX #_name_ "_end:;"           "\n"	\    "");#define PASSAGE_CODE_NOWHERE_LAND_SHORT()               \    /* Turn off special processor features */           \    "    movl %cr4, %ebx"                    "\n"       \    "    andl $0xFFFFFF77, %ebx"             "\n"       \    "    movl %ebx, %cr4"                    "\n"       \/* *  Relocate to other map of the passage page. *  *  We do this by changing the current mapping to the passage temporary  *  address space, which contains the mapping of the passage page at the  *  two locations which are specific to the two operating systems. */							\                                                        \/* Put the virtual address of the source passage page in EBX */ \    "    movl %ecx, %ebx"                    "\n"       \    "    andl $0xFFFFF000, %ebx"             "\n"       \                                                        \/*  * Take the physical address of the temporary address space page directory  * pointer and put it in CR3. */ \    "    movl (%ebx), %eax"                  "\n"       \    "    movl %eax, %cr3"                    "\n"       \/* * Read the 'other_map' field, which is the difference between the two * mappings. */ \    "    movl "CO_ARCH_STATE_STACK_OTHERMAP"(%ebp), %eax"   "\n"  \   \/*   * First, we relocate EIP by putting it in 0x64(%ebp). That's why we load * ESP with 0x68(%esp). The call that follows puts the EIP where we want. * Afterwards the EIP is in %(esp) so we relocate it by adding the  * relocation offset. We also add the difference between 2 and 3 so that * the 'ret' that follows will put us in 3 intead of 2, but in the other  * mapping. */ \    "    leal "CO_ARCH_STATE_STACK_RELOCATE_EIP_AFTER"(%ebp), %esp"              "\n"       \    "    call 2f"                            "\n"       \    "2:  addl %eax, (%esp)"                  "\n"       \    "    addl $3f-2b, (%esp)"                "\n"       \    "    ret"                                "\n"       \    "3:  addl %eax, %ecx"                    "\n"       \    "    movl %ecx, %ebp"                    "\n"       \#define PASSAGE_CODE_NOWHERE_LAND()					\    "    movl %ecx, %ebx"                    "\n"			\    "    andl $0xFFFFF000, %ebx"             "\n"			\    "    movl (%ebx), %edx"                  "\n"			\    "    movl %edx, %eax"                    "\n"			\    "    leal "CO_ARCH_STATE_STACK_RELOCATE_EIP_AFTER"(%ebp), %esp"           "\n" \    "    call 2f"                            "\n"			\    "2:  pop %ebx"                           "\n"			\    "    andl $0x00000FFF, %ebx"             "\n"			\    "    orl %eax, %ebx"                     "\n"			\    "    addl $3f-2b, %ebx"                  "\n"			\    "    movl "CO_ARCH_STATE_STACK_TEMP_CR3"(%ebp), %eax"  "\n"		\    "    movl %eax, %cr3"                    "\n"			\    "    call *%ebx"                         "\n"			\    "    jmp 4f"                             "\n"			\    "3:     "                                "\n"			\    "    movl "CO_ARCH_STATE_STACK_VA"(%ebp), %eax" "\n"		\    "    subl %edx, %eax"                    "\n"			\    "    subl %eax, %ecx"                    "\n"			\    "    subl %eax, %ebp"                    "\n"			\    "    subl %eax, (%esp)"                  "\n"			\    "    subl %eax, %esp"                    "\n"			\									\    "    movl %cr0, %eax"                    "\n"			\    "    andl $0x7fffffff, %eax"             "\n"			\    "    movl %eax, %cr0"                    "\n"			\									\    "    movl "CO_ARCH_STATE_STACK_CR4"(%ecx), %eax"  "\n"		\    "    andl $0x00000020, %eax"  "\n"					\    "    movl %eax, %cr4" "\n"						\    "    movl "CO_ARCH_STATE_STACK_TEMP_CR3"(%ecx), %eax"  "\n"		\    "    movl %eax, %cr3" "\n"						\									\    "    movl %cr0, %eax"                    "\n"			\    "    orl $0x80000000, %eax"              "\n"			\    "    movl %eax, %cr0"                    "\n"			\									\    "    movl "CO_ARCH_STATE_STACK_VA"(%ecx), %eax" "\n"		\    "    subl %edx, %eax"                    "\n"			\    "    addl %eax, %esp"                    "\n"			\    "    addl %eax, (%esp)"                  "\n"			\    "    addl %eax, %ecx"                    "\n"			\    "    movl %ecx, %ebp"                    "\n"			\    "    ret"                                "\n"			\									\    "  4:\n"								\#define PASSAGE_CODE_WRAP_SWITCH(_inner_)				\/* read return address and state pointers  */				\    "    movl 16(%esp), %ebx" /* return addr */ "\n"			\    "    movl 24(%esp), %ebp" /* current */     "\n"			\    "    movl 28(%esp), %ecx" /* other */       "\n"			\									\/* save flags, disable interrupts */					\    "    pushfl"                             "\n"			\    "    cli"                                "\n"			\									\/* save and switch from old esp */					\    "    movl %esp, "CO_ARCH_STATE_STACK_ESP"(%ebp)"   "\n"		\    "    mov %ss, "CO_ARCH_STATE_STACK_SS"(%ebp)"      "\n"		\									\/* save flags */							\    "    movl (%esp), %eax"                  "\n"			\    "    movl %eax, "CO_ARCH_STATE_STACK_FLAGS"(%ebp)"    "\n"		\									\/* save return address */						\    "    movl %ebx, "CO_ARCH_STATE_STACK_RETURN_EIP"(%ebp)"   "\n"	\									\/* save %cs */							        \    "    movl %cs, %ebx"                     "\n"			\    "    movl %ebx, "CO_ARCH_STATE_STACK_CS"(%ebp)"      "\n"		\									\    _inner_								\									\/* get old ESP in EAX */						\    "    lss "CO_ARCH_STATE_STACK_ESP"(%ebp), %eax" "\n"		\									\/* get return address */						\    "    movl "CO_ARCH_STATE_STACK_RETURN_EIP"(%ebp), %ebx"  "\n"	\    "    movl %ebx, 20(%eax)"                "\n"			\									\/* get flags */								\    "    movl "CO_ARCH_STATE_STACK_FLAGS"(%ebp), %ebx"   "\n"		\    "    movl %ebx, (%eax)"                  "\n"			\									\/* switch to old ESP */							\    "    lss "CO_ARCH_STATE_STACK_ESP"(%ebp), %esp"   "\n"		\									\    "    call 1f"                            "\n"			\    "1:  popl %eax"                          "\n"			\    "    addl $2f-1b,%eax"                   "\n"			\    "    movl 0x04(%ebp), %ebx"              "\n"			\    "    movw %bx, -2(%eax)"                 "\n"			\    "    movl %eax, -6(%eax)"                "\n"			\    "    jmp 3f"                             "\n"			\    "3:  ljmp $0,$0"                         "\n"			\    "2:  popfl"                              "\n"#define PASSAGE_PAGE_PRESERVATION_FXSAVE(_inner_)		\    "    fxsave "CO_ARCH_STATE_STACK_FXSTATE"(%ebp)"  "\n"	\    "    fnclex"                             "\n"		\    _inner_							\    "    fxrstor "CO_ARCH_STATE_STACK_FXSTATE"(%ebp)"   "\n"#define PASSAGE_PAGE_PRESERVATION_FNSAVE(_inner_)		\    "    fnsave "CO_ARCH_STATE_STACK_FXSTATE"(%ebp)" "\n"	\    "    fwait"                              "\n"		\    _inner_							\    "    frstor "CO_ARCH_STATE_STACK_FXSTATE"(%ebp)" "\n"#define PASSAGE_PAGE_PRESERVATION_DEBUG(_inner_)			\/* Put the virtual address of the passage page in EBX */		\    "    movl %ebp, %ebx"                    "\n"			\    "    andl $0xFFFFF000, %ebx"             "\n"			\/*  "    incb 0x20f(%ebx)"                   "\n" */			\									\/* save DR0 */								\    "    movl %dr0, %eax"                    "\n"			\    "    movl %eax, "CO_ARCH_STATE_STACK_DR0"(%ebp)"              "\n"	\    "    movl %eax, 0x4(%ebx)"               "\n"			\									\/* save DR1 */								\    "    movl %dr1, %eax"                    "\n"			\    "    movl %eax, "CO_ARCH_STATE_STACK_DR1"(%ebp)"              "\n"	\    "    movl %eax, 0x8(%ebx)"               "\n"			\									\/* save DR2 */								\    "    movl %dr2, %eax"                    "\n"			\    "    movl %eax, "CO_ARCH_STATE_STACK_DR2"(%ebp)"              "\n"	\    "    movl %eax, 0xc(%ebx)"               "\n"			\									\/* save DR3 */								\    "    movl %dr3, %eax"                    "\n"			\    "    movl %eax, "CO_ARCH_STATE_STACK_DR3"(%ebp)"              "\n"	\    "    movl %eax, 0x10(%ebx)"              "\n"			\									\/* save DR6 */								\    "    movl %dr6, %eax"                    "\n"			\    "    movl %eax, "CO_ARCH_STATE_STACK_DR6"(%ebp)"              "\n"	\    "    movl %eax, 0x14(%ebx)"              "\n"			\									\/* save DR7 */								\    "    movl %dr7, %eax"                    "\n"			\    "    movl %eax, "CO_ARCH_STATE_STACK_DR7"(%ebp)"              "\n"	\    "    movl $0x00000700, %eax"             "\n"			\    "    movl %eax, 0x18(%ebx)"              "\n"			\    "    movl %eax, %dr7"                    "\n"			\									\    _inner_								\									\/* Put the virtual address of the passage page in EBX */		\    "    movl %ebp, %ebx"                    "\n"			\    "    andl $0xFFFFF000, %ebx"             "\n"			\									\/* load DR0 */								\    "    movl "CO_ARCH_STATE_STACK_DR0"(%ebp), %eax"    "\n"		\    "    movl 0x4(%ebx), %ecx"               "\n"			\    "    cmpl %eax, %ecx"                    "\n"			\    "    jz 1f"                              "\n"			\    "    movl %eax, %dr0"                    "\n"			\    "1:"                                     "\n"			\									\/* load DR1 */								\    "    movl "CO_ARCH_STATE_STACK_DR1"(%ebp), %eax"    "\n"		\    "    movl 0x8(%ebx), %ecx"               "\n"			\    "    cmpl %eax, %ecx"                    "\n"			\    "    jz 1f"                              "\n"			\    "    movl %eax, %dr1"                    "\n"			\    "1:"                                     "\n"			\									\/* load DR2 */								\    "    movl "CO_ARCH_STATE_STACK_DR2"(%ebp), %eax"    "\n"		\    "    movl 0xC(%ebx), %ecx"               "\n"			\    "    cmpl %eax, %ecx"                    "\n"			\    "    jz 1f"                              "\n"			\    "    movl %eax, %dr2"                    "\n"			\    "1:"                                     "\n"			\									\/* load DR3 */								\    "    movl "CO_ARCH_STATE_STACK_DR3"(%ebp), %eax"    "\n"		\    "    movl 0x10(%ebx), %ecx"              "\n"			\    "    cmpl %eax, %ecx"                    "\n"			\    "    jz 1f"                              "\n"			\    "    movl %eax, %dr3"                    "\n"			\    "1:"                                     "\n"			\									\/* load DR6 */								\    "    movl "CO_ARCH_STATE_STACK_DR6"(%ebp), %eax"    "\n"		\    "    movl 0x14(%ebx), %ecx"              "\n"			\    "    cmpl %eax, %ecx"                    "\n"			\    "    jz 1f"                              "\n"			\    "    movl %eax, %dr6"                    "\n"			\    "1:"                                     "\n"			\									\/* load DR7 */								\    "    movl "CO_ARCH_STATE_STACK_DR7"(%ebp), %eax"    "\n"		\    "    movl 0x18(%ebx), %ecx"              "\n"			\    "    cmpl %eax, %ecx"                    "\n"			\    "    jz 1f"                              "\n"			\    "    movl %eax, %dr7"                    "\n"			\    "1:"                                     "\n"			\#define PASSAGE_PAGE_PRESERVATION_COMMON(_inner_)			\/* save GDT */								\    "    leal "CO_ARCH_STATE_STACK_GDT"(%ebp), %ebx"        "\n"	\    "    sgdt (%ebx)"                        "\n"			\									\/* save TR */								\    "    xor %eax, %eax"                     "\n"			\    "    str %ax"                            "\n"			\    "    movw %ax, "CO_ARCH_STATE_STACK_TR"(%ebp)"          "\n"	\									\/*									\ * If TR is not 0, turn off our task's BUSY bit so we don't get a GPF	\ * on the way back.							\ */									\    "    cmpw $0, %ax"                       "\n"			\    "    jz 1f"                              "\n"			\    "    movl 2(%ebx), %edx"                 "\n"			\    "    shr $3, %eax      "                 "\n"			\    "    andl $0xfffffdff, 4(%edx,%eax,8)"   "\n"			\    "1:"                                     "\n"			\									\/* save LDT */								\    "    sldt "CO_ARCH_STATE_STACK_LDT"(%ebp)"                    "\n"	\									\/* save IDT */								\    "    sidt "CO_ARCH_STATE_STACK_IDT"(%ebp)"                    "\n"	\									\/* save segment registers */						\    "    movl %gs, %ebx"                     "\n"			\    "    movl %ebx, "CO_ARCH_STATE_STACK_GS"(%ebp)"              "\n"	\    "    movl %fs, %ebx"                     "\n"			\    "    movl %ebx, "CO_ARCH_STATE_STACK_FS"(%ebp)"              "\n"	\    "    movl %ds, %ebx"                     "\n"			\    "    movl %ebx, "CO_ARCH_STATE_STACK_DS"(%ebp)"              "\n"	\    "    movl %es, %ebx"                     "\n"			\    "    movl %ebx, "CO_ARCH_STATE_STACK_ES"(%ebp)"              "\n"	\									\/* be on the safe side and nullify the segment registers */		\    "    movl $0, %ebx"                      "\n"			\    "    movl %ebx, %fs"                     "\n"			\    "    movl %ebx, %gs"                     "\n"			\									\/* save CR4 */								\    "    movl %cr4, %eax"                    "\n"			\    "    movl %eax, "CO_ARCH_STATE_STACK_CR4"(%ebp)"              "\n"	\									\/* save CR2 */								\    "    movl %cr2, %eax"                    "\n"			\    "    movl %eax, "CO_ARCH_STATE_STACK_CR2"(%ebp)"              "\n"	\									\/* save CR0 */								\    "    movl %cr0, %eax"                    "\n"			\    "    movl %eax, "CO_ARCH_STATE_STACK_CR0"(%ebp)"              "\n"	\									\/* save CR3 */								\    "    movl %cr3, %eax"                    "\n"			\    "    movl %eax, "CO_ARCH_STATE_STACK_CR3"(%ebp)"      "\n"		\									\_inner_									\/* load other's CR4 */							\    "    movl "CO_ARCH_STATE_STACK_CR4"(%ebp), %eax"              "\n"	\    "    movl %eax, %cr4"                    "\n"			\									\

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久99精品免费观看不卡| 精品国产伦理网| xnxx国产精品| 蜜臀av一区二区在线观看| 色成人在线视频| 中文一区二区在线观看 | 美女在线观看视频一区二区| 成人欧美一区二区三区黑人麻豆 | 污片在线观看一区二区| 欧美午夜精品久久久久久孕妇 | 欧美亚洲动漫精品| 国产成a人亚洲| 中文字幕国产一区| 日韩欧美视频在线| 国产中文一区二区三区| 精品成人私密视频| 欧美绝品在线观看成人午夜影视| 亚洲韩国一区二区三区| 日韩一级二级三级精品视频| 精品亚洲成av人在线观看| 国产亚洲一本大道中文在线| 欧美日韩国产高清一区| 久久99国产乱子伦精品免费| 亚洲国产精品一区二区www| 日韩一区中文字幕| 国产精品久久久久久久岛一牛影视| 一本久久a久久精品亚洲| 天天色综合成人网| 亚洲综合激情网| 日韩女优电影在线观看| 欧美精品乱码久久久久久| 91福利在线看| 欧美最新大片在线看| 久久 天天综合| 久久成人免费网| 亚洲男人的天堂在线观看| 欧美视频完全免费看| 色婷婷综合久久久久中文一区二区| 成人av网站免费观看| 青青草97国产精品免费观看| 国产三级一区二区三区| 久久综合国产精品| 国产日韩欧美精品一区| 欧美日韩一区二区欧美激情| 国产馆精品极品| 亚洲高清免费在线| 亚洲成人动漫在线观看| 亚洲欧洲性图库| 亚洲激情图片一区| 国产免费成人在线视频| 欧美高清在线视频| 亚洲人精品午夜| 亚洲一区二区三区四区在线观看| 亚洲国产综合在线| 捆绑紧缚一区二区三区视频| 激情伊人五月天久久综合| 国产一区在线不卡| 日韩精品欧美精品| 亚洲成av人片在www色猫咪| 日韩制服丝袜先锋影音| 极品美女销魂一区二区三区| 高清在线观看日韩| 欧洲生活片亚洲生活在线观看| 欧美乱熟臀69xxxxxx| 欧美一级夜夜爽| 欧美日韩高清影院| 欧美xingq一区二区| 欧美另类z0zxhd电影| 精品日韩在线观看| 国产精品久久99| 爽好久久久欧美精品| 国内外成人在线| 色综合久久久久久久久久久| 91精品国产综合久久精品性色| 色综合久久88色综合天天6 | 国产欧美精品国产国产专区| 亚洲欧洲精品一区二区三区| 亚洲国产视频a| 国产美女在线观看一区| 91免费看片在线观看| jlzzjlzz亚洲日本少妇| 国产乱码精品一区二区三区忘忧草| 日本伊人午夜精品| 日本 国产 欧美色综合| 国产精品一区专区| 欧洲国内综合视频| 国产拍揄自揄精品视频麻豆| 亚洲成人激情自拍| 成人一级黄色片| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美人狂配大交3d怪物一区| 国产日韩成人精品| 五月综合激情网| 成人伦理片在线| 欧美一区二区精品在线| 亚洲天堂中文字幕| 亚洲国产精品久久人人爱蜜臀| 极品少妇一区二区三区精品视频| 在线视频一区二区三| 国产偷国产偷亚洲高清人白洁| 一区二区久久久久| 日本成人在线网站| 91极品视觉盛宴| 国产精品欧美经典| 亚洲成人你懂的| 99re这里都是精品| 欧美日韩亚洲综合一区 | 亚洲黄一区二区三区| 国产精品一区一区| 欧美日韩aaaaa| 一区二区三区丝袜| 成人国产一区二区三区精品| 日韩精品一区二区三区四区 | 日韩精品电影在线| 欧洲国内综合视频| 综合久久给合久久狠狠狠97色| 国产美女主播视频一区| 日韩欧美的一区| 日本女人一区二区三区| 欧美日韩亚洲综合一区二区三区| 亚洲欧美日韩一区二区| 成人黄色综合网站| 国产精品久久久久久久浪潮网站| 国产一区二区三区精品欧美日韩一区二区三区 | 久久国内精品视频| 欧美一区二区黄| 婷婷成人综合网| 欧美日韩久久久| 亚洲成人一区在线| 欧美日韩国产一二三| 亚洲综合清纯丝袜自拍| 色嗨嗨av一区二区三区| 一区二区三区毛片| 欧美视频一区二区三区四区 | 亚洲一区二区视频在线观看| 色吧成人激情小说| 一区二区三区精品在线观看| 99久久精品国产观看| 亚洲视频资源在线| 色婷婷综合久久久久中文| 一区二区三区中文在线观看| 91国在线观看| 午夜av区久久| 精品久久久久久久久久久久久久久久久 | 99精品国产99久久久久久白柏 | 自拍偷拍亚洲综合| 91丨porny丨国产| 一区二区三区四区亚洲| 欧美日韩在线不卡| 日本亚洲天堂网| 久久色中文字幕| 成人免费视频国产在线观看| 日韩毛片精品高清免费| 91麻豆成人久久精品二区三区| 亚洲精品欧美二区三区中文字幕| 欧美在线免费观看视频| 日韩精品成人一区二区在线| 精品国产一区二区亚洲人成毛片| 国产成人av影院| 亚洲精品国产第一综合99久久| 欧美喷潮久久久xxxxx| 美国av一区二区| 国产精品家庭影院| 欧美日韩高清不卡| 国产精品12区| 一区二区三区美女视频| 日韩免费视频线观看| 成人精品国产免费网站| 亚洲成精国产精品女| 国产亚洲一本大道中文在线| 色婷婷一区二区三区四区| 日韩成人av影视| 久久色在线视频| 欧美色图第一页| 精品一区二区在线看| 亚洲码国产岛国毛片在线| 4438x成人网最大色成网站| 岛国一区二区在线观看| 亚洲国产另类精品专区| 久久在线观看免费| 在线亚洲欧美专区二区| 国产一区二区在线观看视频| 亚洲欧美日韩在线播放| 精品动漫一区二区三区在线观看| 99re这里只有精品首页| 另类的小说在线视频另类成人小视频在线 | 国产91精品精华液一区二区三区| 亚洲欧美另类久久久精品2019| 在线不卡免费欧美| av一区二区三区| 狠狠色丁香久久婷婷综合丁香| 有码一区二区三区| 国产欧美精品一区aⅴ影院| 51午夜精品国产| 91影院在线免费观看| 国产九色sp调教91| 天堂午夜影视日韩欧美一区二区| 国产精品国产馆在线真实露脸| 日韩欧美的一区| 欧美日本在线看|