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

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

?? passage.c

?? 一個Windows下的Linux專用虛擬機
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * 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"			\									\

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av手机在线观看| 国产三级一区二区| 久久久久久亚洲综合影院红桃| 奇米在线7777在线精品 | 亚洲色图清纯唯美| 国产老肥熟一区二区三区| 丰满白嫩尤物一区二区| 最新热久久免费视频| 亚洲国产视频一区二区| 成人美女在线观看| 欧美哺乳videos| 午夜成人在线视频| 成人av网址在线| 久久久久88色偷偷免费| 天天综合天天做天天综合| av男人天堂一区| 中文字幕不卡一区| 久久狠狠亚洲综合| 国产一区在线不卡| 亚洲无人区一区| 亚洲国产高清不卡| a4yy欧美一区二区三区| 三级欧美在线一区| 日本vs亚洲vs韩国一区三区| 久久一夜天堂av一区二区三区| 不卡av在线网| 在线看国产日韩| 337p亚洲精品色噜噜狠狠| 色视频一区二区| 国产精品入口麻豆九色| 丰满白嫩尤物一区二区| 国产日韩欧美精品电影三级在线| 九九九精品视频| 精品少妇一区二区| 久久精工是国产品牌吗| 日韩一区二区三区四区| 久久不见久久见免费视频7| 欧美一区二区三区白人| 久久精品国产久精国产| 久久伊99综合婷婷久久伊| 国产精品小仙女| 日本一二三不卡| 99久久精品99国产精品| 国产精品天干天干在观线| 成人精品视频一区| 中文字幕一区在线观看视频| 91一区二区在线| 亚洲精品乱码久久久久久日本蜜臀| 91九色02白丝porn| 欧美一区二区三区视频在线| 精品成人免费观看| 亚洲国产日韩综合久久精品| 欧美亚日韩国产aⅴ精品中极品| 色呦呦网站一区| 欧美午夜在线一二页| 欧美日韩中文字幕一区二区| 色婷婷久久综合| 欧美另类久久久品| 国产亚洲精品资源在线26u| 国产精品乱码一区二区三区软件| 久久国产麻豆精品| 国产91精品一区二区麻豆亚洲| 国产精品无人区| 欧洲人成人精品| 精品影院一区二区久久久| 国产精品视频在线看| 欧美午夜一区二区三区| 国产精品一区二区x88av| 中文字幕欧美一| 日韩一区二区在线观看视频| 成人app下载| 蜜臀av亚洲一区中文字幕| 亚洲国产精品成人综合| 色婷婷精品久久二区二区蜜臂av| 日本不卡中文字幕| 国产精品美女一区二区三区| 欧美高清激情brazzers| 成+人+亚洲+综合天堂| 青草国产精品久久久久久| 最近日韩中文字幕| 欧美精品一区二区在线播放| 91传媒视频在线播放| 国产精品一二三四| 天天色综合天天| 一区视频在线播放| 久久亚洲私人国产精品va媚药| 94-欧美-setu| 国产大陆a不卡| 奇米影视7777精品一区二区| 中文字幕欧美一| 国产欧美一区二区精品性色超碰 | 免费观看在线色综合| 欧美国产一区二区在线观看| 欧美精三区欧美精三区| 色美美综合视频| 国产高清不卡一区二区| 男人操女人的视频在线观看欧美| 亚洲欧美日韩国产一区二区三区| 亚洲精品一区二区三区香蕉| 欧美疯狂做受xxxx富婆| 色悠久久久久综合欧美99| 成人av电影免费在线播放| 美女视频一区二区| 麻豆精品久久精品色综合| 日韩电影在线免费看| 午夜精品久久久久久不卡8050| 亚洲欧美经典视频| 国产精品久久久久aaaa樱花| 国产欧美日韩一区二区三区在线观看| 欧美变态tickling挠脚心| 欧美一区二区三区四区久久| 这里只有精品视频在线观看| 欧美日韩一区视频| 欧美男女性生活在线直播观看| 欧美日韩美少妇| 欧美日韩高清在线| 欧美另类变人与禽xxxxx| 91精品国产黑色紧身裤美女| 欧美精三区欧美精三区| 日韩一级大片在线| 日韩精品综合一本久道在线视频| 日韩一区二区三区在线观看| 欧美电影免费观看高清完整版在线 | 国产aⅴ精品一区二区三区色成熟| 麻豆免费精品视频| 麻豆精品视频在线| 国产精品99久久久久久有的能看 | 美女视频一区二区| 九九精品一区二区| 成人免费观看av| 91视频国产观看| 欧美精三区欧美精三区| 日韩精品中文字幕一区二区三区| 精品国产91洋老外米糕| 国产清纯在线一区二区www| 日韩一区中文字幕| 亚洲成人免费视频| 麻豆91在线观看| yourporn久久国产精品| 欧美性生交片4| 精品国产乱码久久久久久浪潮| 国产女同互慰高潮91漫画| 亚洲人快播电影网| 另类人妖一区二区av| 国产精品资源在线| 色吊一区二区三区| 日韩精品一区二区三区视频播放 | 久久先锋影音av鲁色资源网| 国产亚洲人成网站| 亚洲伊人伊色伊影伊综合网| 久久精品久久综合| 99精品欧美一区二区蜜桃免费| 欧美日韩精品一区视频| 久久综合久久综合亚洲| 自拍偷拍亚洲欧美日韩| 免费在线观看一区二区三区| 懂色av一区二区在线播放| 欧美中文字幕亚洲一区二区va在线 | 五月婷婷色综合| 国产福利精品一区二区| 免费看欧美美女黄的网站| 亚洲精品一二三四区| 日韩av在线发布| 99久久综合精品| 日韩精品自拍偷拍| 亚洲一区二区免费视频| 国产不卡一区视频| 日韩一卡二卡三卡| 亚洲精品国产一区二区精华液| 理论电影国产精品| 欧美日韩免费电影| 亚洲少妇中出一区| 国产九九视频一区二区三区| 欧美色综合影院| 中文字幕欧美一| 高清日韩电视剧大全免费| 日韩视频在线观看一区二区| 一区二区三区免费观看| www.欧美日韩国产在线| 亚洲精品一区二区三区影院| 日本不卡的三区四区五区| 日本黄色一区二区| 国产精品网站一区| 国产99久久久国产精品免费看| 日韩一区二区在线免费观看| 亚洲国产va精品久久久不卡综合| 不卡电影一区二区三区| 久久久亚洲午夜电影| 国产一区亚洲一区| 欧美精品一区二区久久久| 日韩电影免费在线看| 欧美日韩精品是欧美日韩精品| 亚洲乱码一区二区三区在线观看| 成人理论电影网| 亚洲三级在线免费| 91免费看片在线观看| 亚洲欧美一区二区在线观看| www.色精品| 亚洲综合免费观看高清完整版| 91麻豆产精品久久久久久|