函数逻辑报告 |
Source Code:arch\x86\kernel\vm86_32.c |
Create Date:2022-07-27 09:41:00 |
Last Modify:2022-05-22 10:11:03 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:handle_vm86_fault
函数原型:void handle_vm86_fault(struct kernel_vm86_regs *regs, long error_code)
返回类型:void
参数:
类型 | 参数 | 名称 |
---|---|---|
struct kernel_vm86_regs * | regs | |
long | error_code |
602 | orig_flags = * (unsigned short * ) & flags |
609 | data32等于0 |
610 | pref_done等于0 |
611 | 循环 |
613 | 当: = == 0x66 |
614 | 当: = == 0x67 |
614 | 退出 |
615 | 当: = == 0x2e |
615 | 退出 |
616 | 当: = == 0x3e |
616 | 退出 |
617 | 当: = == 0x26 |
617 | 退出 |
618 | 当: = == 0x36 |
618 | 退出 |
619 | 当: = == 0x65 |
619 | 退出 |
620 | 当: = == 0x64 |
620 | 退出 |
621 | 当: = == 0xf2 |
621 | 退出 |
622 | 当: = == 0xf3 |
622 | 退出 |
623 | 默认 |
623 | pref_done等于1 |
631 | 如果data32则 |
632 | pushl(ssp, sp, get_vflags(regs), simulate_sigsegv) |
634 | 否则 |
635 | pushw(ssp, sp, get_vflags(regs), simulate_sigsegv) |
639 | 转到:vm86_fault_return |
645 | 如果data32则 |
648 | 否则 |
653 | CHECK_IF_IN_TRAP |
656 | 否则set_vflags_short(newflags, regs) |
659 | 转到:check_vip |
664 | intno等于popb(csp, ip, simulate_sigsegv) |
666 | 如果 for debugger 则 |
667 | 如果1左移intno按位与7的值位按位与 for debugger [intno >> 3]则 |
668 | save_v86_state(regs, 3/int x instruction (ARG = x) + (intno << 8)) |
669 | 返回 |
673 | 返回 |
682 | 如果data32则 |
683 | newip等于popl(ssp, sp, simulate_sigsegv) |
684 | newcs等于popl(ssp, sp, simulate_sigsegv) |
685 | newflags等于popl(ssp, sp, simulate_sigsegv) |
687 | 否则 |
688 | newip等于popw(ssp, sp, simulate_sigsegv) |
689 | newcs等于popw(ssp, sp, simulate_sigsegv) |
690 | newflags等于popw(ssp, sp, simulate_sigsegv) |
695 | CHECK_IF_IN_TRAP |
696 | 如果data32则 |
698 | 否则 |
699 | set_vflags_short(newflags, regs) |
701 | 转到:check_vip |
722 | 默认 |
726 | 返回 |
728 | check_vip : |
729 | 如果VEFLAGS按位与X86_EFLAGS_VIP按位或X86_EFLAGS_VIF的值的值恒等于X86_EFLAGS_VIP按位或X86_EFLAGS_VIF的值则 |
735 | vm86_fault_return : |
736 | 如果force_return_for_pic且VEFLAGS按位与X86_EFLAGS_IF按位或X86_EFLAGS_VIF的值则 |
738 | 返回 |
740 | 如果orig_flags按位与X86_EFLAGS_TF则handle_vm86_trap(regs, 0, X86_TRAP_DB) |
742 | 返回 |
744 | simulate_sigsegv : |
名称 | 描述 |
---|---|
do_general_protection |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |