⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 entry.s

📁 xen虚拟机源代码安装包
💻 S
📖 第 1 页 / 共 2 页
字号:
        movb  %cl,TRAPBOUNCE_flags(%rdx)        call  compat_create_bounce_frame        jmp   compat_test_all_events2:      movl  $TRAP_gp_fault,UREGS_entry_vector(%rsp)        movq  VCPU_gp_fault_addr(%rbx),%rax        movzwl VCPU_gp_fault_sel(%rbx),%esi        movb  $(TBF_EXCEPTION|TBF_EXCEPTION_ERRCODE|TBF_INTERRUPT),%cl        movl  $0,TRAPBOUNCE_error_code(%rdx)        jmp   1bENTRY(compat_sysenter)        cmpl  $TRAP_gp_fault,UREGS_entry_vector(%rsp)        movzwl VCPU_sysenter_sel(%rbx),%eax        movzwl VCPU_gp_fault_sel(%rbx),%ecx        cmovel %ecx,%eax        testl $~3,%eax        movl  $FLAT_COMPAT_USER_SS,UREGS_ss(%rsp)        cmovzl %ecx,%eax        movw  %ax,TRAPBOUNCE_cs(%rdx)        call  compat_create_bounce_frame        jmp   compat_test_all_eventsENTRY(compat_int80_direct_trap)        call  compat_create_bounce_frame        jmp   compat_test_all_events/* CREATE A BASIC EXCEPTION FRAME ON GUEST OS (RING-1) STACK:            *//*   {[ERRCODE,] EIP, CS, EFLAGS, [ESP, SS]}                             *//* %rdx: trap_bounce, %rbx: struct vcpu                                  *//* On return only %rbx and %rdx are guaranteed non-clobbered.            */compat_create_bounce_frame:        ASSERT_INTERRUPTS_ENABLED        mov   %fs,%edi        testb $2,UREGS_cs+8(%rsp)        jz    1f        /* Push new frame at registered guest-OS stack base. */        movl  VCPU_kernel_sp(%rbx),%esi.Lft1:  mov   VCPU_kernel_ss(%rbx),%fs        subl  $2*4,%esi        movl  UREGS_rsp+8(%rsp),%eax.Lft2:  movl  %eax,%fs:(%rsi)        movl  UREGS_ss+8(%rsp),%eax.Lft3:  movl  %eax,%fs:4(%rsi)        jmp   2f1:      /* In kernel context already: push new frame at existing %rsp. */        movl  UREGS_rsp+8(%rsp),%esi.Lft4:  mov   UREGS_ss+8(%rsp),%fs2:        movb  TRAPBOUNCE_flags(%rdx),%cl        subl  $3*4,%esi        movq  VCPU_vcpu_info(%rbx),%rax        pushq COMPAT_VCPUINFO_upcall_mask(%rax)        testb $TBF_INTERRUPT,%cl        setnz %ch                       # TBF_INTERRUPT -> set upcall mask        orb   %ch,COMPAT_VCPUINFO_upcall_mask(%rax)        popq  %rax        shll  $16,%eax                  # Bits 16-23: saved_upcall_mask        movw  UREGS_cs+8(%rsp),%ax      # Bits  0-15: CS.Lft5:  movl  %eax,%fs:4(%rsi)          # CS / saved_upcall_mask        shrl  $16,%eax        testb %al,%al                   # Bits 0-7: saved_upcall_mask        setz  %ch                       # %ch == !saved_upcall_mask        movl  UREGS_eflags+8(%rsp),%eax        andl  $~X86_EFLAGS_IF,%eax        addb  %ch,%ch                   # Bit 9 (EFLAGS.IF)        orb   %ch,%ah                   # Fold EFLAGS.IF into %eax.Lft6:  movl  %eax,%fs:2*4(%rsi)        # EFLAGS        movl  UREGS_rip+8(%rsp),%eax.Lft7:  movl  %eax,%fs:(%rsi)           # EIP        testb $TBF_EXCEPTION_ERRCODE,%cl        jz    1f        subl  $4,%esi        movl  TRAPBOUNCE_error_code(%rdx),%eax.Lft8:  movl  %eax,%fs:(%rsi)           # ERROR CODE1:        testb $TBF_FAILSAFE,%cl        jz    2f        subl  $4*4,%esi        movl  %gs,%eax.Lft9:  movl  %eax,%fs:3*4(%rsi)        # GS.Lft10: movl  %edi,%fs:2*4(%rsi)        # FS        movl  %es,%eax.Lft11: movl  %eax,%fs:1*4(%rsi)        # ES        movl  %ds,%eax.Lft12: movl  %eax,%fs:0*4(%rsi)        # DS2:        /* Rewrite our stack frame and return to guest-OS mode. */        /* IA32 Ref. Vol. 3: TF, VM, RF and NT flags are cleared on trap. */        andl  $~(X86_EFLAGS_VM|X86_EFLAGS_RF|\                 X86_EFLAGS_NT|X86_EFLAGS_TF),UREGS_eflags+8(%rsp)        mov   %fs,UREGS_ss+8(%rsp)        movl  %esi,UREGS_rsp+8(%rsp).Lft13: mov   %edi,%fs        movzwl TRAPBOUNCE_cs(%rdx),%eax        /* Null selectors (0-3) are not allowed. */        testl $~3,%eax        jz    domain_crash_synchronous        movl  %eax,UREGS_cs+8(%rsp)        movl  TRAPBOUNCE_eip(%rdx),%eax        movl  %eax,UREGS_rip+8(%rsp)        ret.section .fixup,"ax".Lfx13:        xorl  %edi,%edi        jmp   .Lft13.previous.section __ex_table,"a"        .quad  .Lft1,domain_crash_synchronous  ,  .Lft2,compat_crash_page_fault        .quad  .Lft3,compat_crash_page_fault_4 ,  .Lft4,domain_crash_synchronous        .quad  .Lft5,compat_crash_page_fault_4 ,  .Lft6,compat_crash_page_fault_8        .quad  .Lft7,compat_crash_page_fault   ,  .Lft8,compat_crash_page_fault        .quad  .Lft9,compat_crash_page_fault_12, .Lft10,compat_crash_page_fault_8        .quad .Lft11,compat_crash_page_fault_4 , .Lft12,compat_crash_page_fault        .quad .Lft13,.Lfx13.previouscompat_crash_page_fault_12:        addl  $4,%esicompat_crash_page_fault_8:        addl  $4,%esicompat_crash_page_fault_4:        addl  $4,%esicompat_crash_page_fault:.Lft14: mov   %edi,%fs        movl  %esi,%edi        call  show_page_walk        jmp   domain_crash_synchronous.section .fixup,"ax".Lfx14:        xorl  %edi,%edi        jmp   .Lft14.previous.section __ex_table,"a"        .quad .Lft14,.Lfx14.previous.section .rodata, "a", @progbitsENTRY(compat_hypercall_table)        .quad compat_set_trap_table     /*  0 */        .quad do_mmu_update        .quad compat_set_gdt        .quad do_stack_switch        .quad compat_set_callbacks        .quad do_fpu_taskswitch         /*  5 */        .quad do_sched_op_compat        .quad compat_platform_op        .quad do_set_debugreg        .quad do_get_debugreg        .quad compat_update_descriptor  /* 10 */        .quad compat_ni_hypercall        .quad compat_memory_op        .quad compat_multicall        .quad compat_update_va_mapping        .quad compat_set_timer_op       /* 15 */        .quad do_event_channel_op_compat        .quad compat_xen_version        .quad do_console_io        .quad compat_physdev_op_compat        .quad compat_grant_table_op     /* 20 */        .quad compat_vm_assist        .quad compat_update_va_mapping_otherdomain        .quad compat_iret        .quad compat_vcpu_op        .quad compat_ni_hypercall       /* 25 */        .quad compat_mmuext_op        .quad do_xsm_op        .quad compat_nmi_op        .quad compat_sched_op        .quad compat_callback_op        /* 30 */        .quad compat_xenoprof_op        .quad do_event_channel_op        .quad compat_physdev_op        .quad do_hvm_op        .quad do_sysctl                 /* 35 */        .quad do_domctl        .quad compat_kexec_op        .rept __HYPERVISOR_arch_0-((.-compat_hypercall_table)/8)        .quad compat_ni_hypercall        .endr        .quad do_mca                    /* 48 */        .rept NR_hypercalls-((.-compat_hypercall_table)/8)        .quad compat_ni_hypercall        .endrENTRY(compat_hypercall_args_table)        .byte 1 /* compat_set_trap_table    */  /*  0 */        .byte 4 /* compat_mmu_update        */        .byte 2 /* compat_set_gdt           */        .byte 2 /* compat_stack_switch      */        .byte 4 /* compat_set_callbacks     */        .byte 1 /* compat_fpu_taskswitch    */  /*  5 */        .byte 2 /* compat_sched_op_compat   */        .byte 1 /* compat_platform_op       */        .byte 2 /* compat_set_debugreg      */        .byte 1 /* compat_get_debugreg      */        .byte 4 /* compat_update_descriptor */  /* 10 */        .byte 0 /* compat_ni_hypercall      */        .byte 2 /* compat_memory_op         */        .byte 2 /* compat_multicall         */        .byte 4 /* compat_update_va_mapping */        .byte 2 /* compat_set_timer_op      */  /* 15 */        .byte 1 /* compat_event_channel_op_compat */        .byte 2 /* compat_xen_version       */        .byte 3 /* compat_console_io        */        .byte 1 /* compat_physdev_op_compat */        .byte 3 /* compat_grant_table_op    */  /* 20 */        .byte 2 /* compat_vm_assist         */        .byte 5 /* compat_update_va_mapping_otherdomain */        .byte 0 /* compat_iret              */        .byte 3 /* compat_vcpu_op           */        .byte 0 /* compat_ni_hypercall      */  /* 25 */        .byte 4 /* compat_mmuext_op         */        .byte 1 /* do_xsm_op                */        .byte 2 /* compat_nmi_op            */        .byte 2 /* compat_sched_op          */        .byte 2 /* compat_callback_op       */  /* 30 */        .byte 2 /* compat_xenoprof_op       */        .byte 2 /* compat_event_channel_op  */        .byte 2 /* compat_physdev_op        */        .byte 2 /* do_hvm_op                */        .byte 1 /* do_sysctl                */  /* 35 */        .byte 1 /* do_domctl                */        .byte 2 /* compat_kexec_op          */        .rept __HYPERVISOR_arch_0-(.-compat_hypercall_args_table)        .byte 0 /* compat_ni_hypercall      */        .endr        .byte 1 /* do_mca                   */        .rept NR_hypercalls-(.-compat_hypercall_args_table)        .byte 0 /* compat_ni_hypercall      */        .endr

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -