函数逻辑报告 |
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 插件可实现:逻辑报告 代码生成和批量转换代码 |